Google Speech API Недопустимый аргумент "Аудио контент" Слишком долго

Я получаю сообщение об ошибке при попытке отправить пакет аудиоданных в речевой API Google для транскрибирования. Иногда это работает, а иногда нет. Когда это не работает, я получаю сообщение об ошибке:

Traceback (most recent call last): File "/Users/mihaileric/Documents/Research/Ford Project/forddialogue/util/record_and_transcribe_audio.py", line 196, in <module> listen_for_speech() File "/Users/mihaileric/Documents/Research/Ford Project/forddialogue/util/record_and_transcribe_audio.py", line 163, in listen_for_speech transcribe_audio(filename) File "/Users/mihaileric/Documents/Research/Ford Project/forddialogue/util/record_and_transcribe_audio.py", line 57, in transcribe_audio for response in responses: File "/usr/local/lib/python2.7/site-packages/grpc/_channel.py", line 366, in next return self._next() File "/usr/local/lib/python2.7/site-packages/grpc/_channel.py", line 357, in _next raise self grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.INVALID_ARGUMENT, Invalid 'audio_content': too long.)>

Наиболее значимый фрагмент кода, вероятно, следующий:

client = speech.SpeechClient()

# [START migration_streaming_request]
with io.open(audio_file, 'rb') as audio_file:
    content = audio_file.read()

# In practice, stream should be a generator yielding chunks of audio data.
stream = [content]
requests = (types.StreamingRecognizeRequest(audio_content=chunk)
            for chunk in stream)

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

# streaming_recognize returns a generator.
# [START migration_streaming_response]
responses = client.streaming_recognize(streaming_config, requests)
print "Responses: ", responses
for response in responses: <-- FAILS HERE
    for result in response.results:
        print('Finished: {}'.format(result.is_final))
        print('Stability: {}'.format(result.stability))
        alternatives = result.alternatives
        for alternative in alternatives:
            print('Confidence: {}'.format(alternative.confidence))
            print('Transcript: {}'.format(alternative.transcript))

`

Меня смущает то, что отправляемые мной аудиоданные не очень длинные, никогда не длиннее ~15 с. Я использую частоту дискретизации 16000 для одноканального звука, и файл записан как ".wav". Это также было трудной ошибкой, чтобы найти возможные решения для Google, так как не похоже, чтобы другие люди имели проблемы с этим. Я был бы признателен за любые выводы о том, что я должен посмотреть на возможные источники ошибок. Спасибо!

0 ответов

Другие вопросы по тегам