'Local file for Google Speech

I followed this page: https://cloud.google.com/speech/docs/getting-started

and I could reach the end of it without problems.

In the example though, the file 'uri':'gs://cloud-samples-tests/speech/brooklyn.flac' is processed.

What if I want to process a local file? In case this is not possible, how can I upload my .flac via command line?

Thanks



Solution 1:[1]

You're now able to process a local file by specifying a local path instead of the google storage one:

gcloud ml speech recognize '/Users/xxx/cloud-samples-tests/speech/brooklyn.flac' \ --language-code='en-US'

You can send this command by using the gcloud tool (https://cloud.google.com/speech-to-text/docs/quickstart-gcloud).

Solution 2:[2]

Solution found:

I created my own bucket (my_bucket_test), and I upload the file there via: gsutil cp speech.flac gs://my_bucket_test

Solution 3:[3]

If you don't want to create a bucket (costs extra time and money) - you can stream the local files. The following code is copied directly from the Google cloud docs:

def transcribe_streaming(stream_file):
    """Streams transcription of the given audio file."""
    import io
    from google.cloud import speech
    client = speech.SpeechClient()
    with io.open(stream_file, "rb") as audio_file:
        content = audio_file.read()
    # In practice, stream should be a generator yielding chunks of audio data.
    stream = [content]
    requests = (
        speech.StreamingRecognizeRequest(audio_content=chunk) for chunk in stream
    )
    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=16000,
        language_code="en-US",
    )
    streaming_config = speech.StreamingRecognitionConfig(config=config)
    # streaming_recognize returns a generator.
    responses = client.streaming_recognize(
        config=streaming_config,
        requests=requests,
    )
    for response in responses:
        # Once the transcription has settled, the first result will contain the
        # is_final result. The other results will be for subsequent portions of
        # the audio.
        for result in response.results:
            print("Finished: {}".format(result.is_final))
            print("Stability: {}".format(result.stability))
            alternatives = result.alternatives
            # The alternatives are ordered from most likely to least.
            for alternative in alternatives:
                print("Confidence: {}".format(alternative.confidence))
                print(u"Transcript: {}".format(alternative.transcript))

Here is the URL incase the package's function names are edited over time: https://cloud.google.com/speech-to-text/docs/streaming-recognize

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Giuseppe
Solution 3 User