Getting Punctuation

This page describes how to get punctuation like periods and commas in transcription results from Cloud Speech-to-Text.

By default, Speech-to-Text does not include punctuation marks in the results from speech recognition. You can, however, request that Speech-to-Text detect and insert punctuation in transcription results. Speech-to-Text can recognize commas, question marks, and periods in transcription requests.

To enable automatic punctuation, set the enableAutomaticPunctuation field to true in the RecognitionConfig parameters for the request. The Speech-to-Text API supports automatic punctuation for all speech recognition methods: speech:recognize, speech:longrunningrecognize, and StreamingRecognizeRequest.

The following code samples demonstrate how to get punctuation details in a transcription request.


Refer to the speech:recognize API endpoint for complete details.

To perform synchronous speech recognition, make a POST request and provide the appropriate request body. The following shows an example of a POST request using curl. The example uses the access token for a service account set up for the project using the Google Cloud Platform Cloud SDK. For instructions on installing the Cloud SDK, setting up a project with a service account, and obtaining an access token, see the Quickstart.

curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer "$(gcloud auth print-access-token) \ \
    --data '{
  "config": {
    "sampleRateHertz": 16000,
    "languageCode": "en-US",
    "enableAutomaticPunctuation": true
  "audio": {

See the RecognitionConfig reference documentation for more information on configuring the request body.

If the request is successful, the server returns a 200 OK HTTP status code and the response in JSON format:

  "results": [
      "alternatives": [
          "transcript": "How old is the Brooklyn Bridge?",
          "confidence": 0.98360395


For more on installing and creating a Speech-to-Text client, refer to Speech-to-Text Client Libraries.

 * Performs transcription on remote FLAC file and prints the transcription.
 * @param gcsUri the path to the remote FLAC audio file to transcribe.
public static void transcribeGcsWithAutomaticPunctuation(String gcsUri) throws Exception {
  try (SpeechClient speechClient = SpeechClient.create()) {
    // Configure request with raw PCM audio
    RecognitionConfig config =

    // Set the remote path for the audio file
    RecognitionAudio audio = RecognitionAudio.newBuilder().setUri(gcsUri).build();

    // Use non-blocking call for getting file transcription
    OperationFuture<LongRunningRecognizeResponse, LongRunningRecognizeMetadata> response =
        speechClient.longRunningRecognizeAsync(config, audio);

    while (!response.isDone()) {
      System.out.println("Waiting for response...");

    // Just print the first result here.
    SpeechRecognitionResult result = response.get().getResultsList().get(0);

    // There can be several alternative transcripts for a given chunk of speech. Just use the
    // first (most likely) one here.
    SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);

    // Print out the result
    System.out.printf("Transcript : %s\n", alternative.getTranscript());


For more on installing and creating a Speech-to-Text client, refer to Speech-to-Text Client Libraries.

from import speech_v1p1beta1 as speech
client = speech.SpeechClient()

speech_file = 'resources/commercial_mono.wav'

with, 'rb') as audio_file:
    content =

audio = speech.types.RecognitionAudio(content=content)
config = speech.types.RecognitionConfig(
    # Enable automatic punctuation

response = client.recognize(config, audio)

for i, result in enumerate(response.results):
    alternative = result.alternatives[0]
    print('-' * 20)
    print('First alternative of result {}'.format(i))
    print('Transcript: {}'.format(alternative.transcript))

What's next

Was this page helpful? Let us know how we did:

Send feedback about...

Cloud Speech-to-Text API