Search code examples
pythongoogle-apispeech-to-text

Google speech-to-text Python example code doesn't work


The following is my code (I made some slight changes to the original example code):

import io
import os

# Imports the Google Cloud client library
from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types

# Instantiates a client
client = speech.SpeechClient()

# The name of the audio file to transcribe
file_name = os.path.join(
    os.path.dirname(__file__),
    'C:\\Users\\louie\\Desktop',
    'TOEFL2.mp3')

# Loads the audio into memory
with io.open(file_name, 'rb') as audio_file:
    content = audio_file.read()
    audio = types.RecognitionAudio(content=content)

config = types.RecognitionConfig(
    encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
    sample_rate_hertz=16000,
    language_code='en-US')

# Detects speech in the audio file
response = client.recognize(config, audio)

for result in response.results:
    print('Transcript: {}'.format(result.alternatives[0].transcript))
    text_file = open("C:\\Users\\louie\\Desktop\\Output.txt", "w")
    text_file.write('Transcript: {}'.format(result.alternatives[0].transcript))
    text_file.close()

I can only directly run this code in my windows prompt command since otherwise, the system cannot know the GOOGLE_APPLICATION_CREDENTIALS. However, when I run the code, nothing happened. I followed all the steps and I could see the request traffic changed on my console. But I cannot see any transcript. Could someone help me out?


Solution

  • You are trying to decode TOEFL2.mp3 file encoded as MP3 while you specify LINEAR audio encoding with

    encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16
    

    You have to convert mp3 to wav first, see information about AudioEncoding