Export Speech-to-Text transcript to Cloud Storage (Beta)

This sample demonstrates how to export a speech-to-text transcript to a Cloud Storage bucket.

Code sample

Python

To learn how to install and use the client library for Cloud STT, see Cloud STT client libraries. For more information, see the Cloud STT Python API reference documentation.

To authenticate to Cloud STT, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.


from google.cloud import speech
from google.cloud import storage
from google.cloud.speech_v1 import types


def export_transcript_to_storage_beta(
    audio_uri: str,
    output_bucket_name: str,
    output_filename: str,
) -> types.LongRunningRecognizeResponse:
    """Transcribes an audio file from Cloud Storage and exports the transcript to Cloud Storage bucket.
    Args:
        audio_uri (str): The Cloud Storage URI of the input audio, e.g., gs://[BUCKET]/[FILE]
        output_bucket_name (str): Name of the Cloud Storage bucket to store the output transcript.
        output_filename (str): Name of the output file to store the transcript.
    Returns:
        types.LongRunningRecognizeResponse: The response containing the transcription results.
    """

    audio = speech.RecognitionAudio(uri=audio_uri)
    output_storage_uri = f"gs://{output_bucket_name}/{output_filename}"

    # Pass in the URI of the Cloud Storage bucket to hold the transcription
    output_config = speech.TranscriptOutputConfig(gcs_uri=output_storage_uri)

    # Speech configuration object
    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=8000,
        language_code="en-US",
    )

    # Compose the long-running request
    request = speech.LongRunningRecognizeRequest(
        audio=audio, config=config, output_config=output_config
    )

    # Create the speech client
    speech_client = speech.SpeechClient()
    # Create the storage client
    storage_client = storage.Client()

    # Run the recognizer to export transcript
    operation = speech_client.long_running_recognize(request=request)
    print("Waiting for operation to complete...")
    operation.result(timeout=90)

    # Get bucket with name
    bucket = storage_client.get_bucket(output_bucket_name)
    # Get blob (file) from bucket
    blob = bucket.get_blob(output_filename)

    # Get content as bytes
    results_bytes = blob.download_as_bytes()
    # Get transcript exported in storage bucket
    storage_transcript = types.LongRunningRecognizeResponse.from_json(
        results_bytes, ignore_unknown_fields=True
    )

    # Each result is for a consecutive portion of the audio. Iterate through
    # them to get the transcripts for the entire audio file.
    for result in storage_transcript.results:
        # The first alternative is the most likely one for this portion.
        print(f"Transcript: {result.alternatives[0].transcript}")
        print(f"Confidence: {result.alternatives[0].confidence}")

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser.