This section demonstrates how to transcribe streaming audio, like the input from a microphone, to text.
Streaming speech recognition lets you stream audio to Cloud Speech-to-Text and receive a stream speech recognition results in real time as the audio is processed. See also the audio limits for streaming speech recognition requests. Streaming speech recognition is available through gRPC only.
Before you begin
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Speech-to-Text API for that project.
You can view and manage these resources at any time in the Google Cloud console.
-
Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Speech-to-Text API for that project.
You can view and manage these resources at any time in the Google Cloud console.
-
Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Client libraries can use Application Default Credentials to easily authenticate with Google APIs and send requests to those APIs. With Application Default Credentials, you can test your application locally and deploy it without changing the underlying code. For more information, see Authenticate for using client libraries.
Also ensure you have installed the client library.
Perform streaming speech recognition on a local file
The following code block contains an example of performing streaming speech
recognition on a local audio file. There is a 25 KB limit on audio sent in the
requests of a stream. This limit applies to to both the initial
StreamingRecognize request and the size of each individual message in the
stream. Exceeding this limit will throw an error.
Python
import os
from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech as cloud_speech_types
PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
def transcribe_streaming_v2(
stream_file: str,
) -> cloud_speech_types.StreamingRecognizeResponse:
"""Transcribes audio from an audio file stream using Google Cloud Speech-to-Text API.
Args:
stream_file (str): Path to the local audio file to be transcribed.
Example: "resources/audio.wav"
Returns:
list[cloud_speech_types.StreamingRecognizeResponse]: A list of objects.
Each response includes the transcription results for the corresponding audio segment.
"""
# Instantiates a client
client = SpeechClient()
# Reads a file as bytes
with open(stream_file, "rb") as f:
audio_content = f.read()
# In practice, stream should be a generator yielding chunks of audio data
chunk_length = len(audio_content) // 5
stream = [
audio_content[start : start + chunk_length]
for start in range(0, len(audio_content), chunk_length)
]
audio_requests = (
cloud_speech_types.StreamingRecognizeRequest(audio=audio) for audio in stream
)
recognition_config = cloud_speech_types.RecognitionConfig(
auto_decoding_config=cloud_speech_types.AutoDetectDecodingConfig(),
language_codes=["en-US"],
model="chirp_3",
)
streaming_config = cloud_speech_types.StreamingRecognitionConfig(
config=recognition_config
)
config_request = cloud_speech_types.StreamingRecognizeRequest(
recognizer=f"projects/{PROJECT_ID}/locations/global/recognizers/_",
streaming_config=streaming_config,
)
def requests(config: cloud_speech_types.RecognitionConfig, audio: list) -> list:
yield config
yield from audio
# Transcribes the audio into text
responses_iterator = client.streaming_recognize(
requests=requests(config_request, audio_requests)
)
responses = []
for response in responses_iterator:
responses.append(response)
for result in response.results:
print(f"Transcript: {result.alternatives[0].transcript}")
return responses
While you can stream a local audio file to the Speech-to-Text API, it is recommended that you perform synchronous audio recognition.
Clean up
To avoid incurring charges to your Google Cloud account for the resources used on this page, follow these steps.
-
Optional: Revoke the authentication credentials that you created, and delete the local credential file.
gcloud auth application-default revoke
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
Console
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
What's next
- See the reference documentation for streaming recognition.
- Learn how to transcribe short audio files.
- Learn how to transcribe long audio files.
- For best performance, accuracy, and other tips, see the best practices documentation.