Пример кода Google Cloud Speech API Python имеет возможную ошибку

Я работаю с предоставленными фрагментами кода из Google Speech API, здесь. Кода должно быть достаточно, чтобы преобразовать файл .wav в расшифрованный текст.

Блок интереса здесь:

def transcribe_file(speech_file):
    """Transcribe the given audio file."""
    from google.cloud import speech
    speech_client = speech.Client()

    with io.open(speech_file, 'rb') as audio_file:
        content = audio_file.read()
        audio_sample = speech_client.sample(
            content=content,
            source_uri=None,
            encoding='LINEAR16',
            sample_rate_hertz=16000)

    alternatives = audio_sample.recognize('en-US')
    for alternative in alternatives:
        print('Transcript: {}'.format(alternative.transcript))

Во-первых, я думаю, возможно, код старый, и sample_rate_hertz=16000 нужно было изменить на sample_rate=16000.

После этого я получил ошибку для этой строки:
alternatives = audio_sample.recognize('en-US')
которая читалась
AttributeError: 'Sample' object has no attribute 'recognize'

Мне интересно, как это исправить. Я не могу найти документацию по этому методу. Возможно, его тоже нужно заменить.


person Monica Heddneck    schedule 18.04.2017    source источник
comment
Посмотрите здесь, потому что есть аналогичный рабочий пример   -  person A STEFANI    schedule 20.04.2017


Ответы (2)


Вам нужно прочитать файл как двоичный, а затем использовать service.speech().syncrecognize с аргументом body (dict), который содержит все необходимые аргументы, такие как:

  • кодирование,
  • частота дискретизации
  • язык)

Можете ли вы попробовать что-то вроде:

with open(speech_file, 'rb') as speech:
    speech_content = base64.b64encode(speech.read())

service = get_speech_service()
service_request = service.speech().syncrecognize(
    body={
        'config': {
            'encoding': 'LINEAR16',  # raw 16-bit signed LE samples
            'sampleRate': 16000,  # 16 khz
            'languageCode': 'en-US',  # a BCP-47 language tag
        },
        'audio': {
            'content': speech_content.decode('UTF-8')
            }
        })
response = service_request.execute()
print(json.dumps(response))

Посмотрите здесь, потому что есть аналогичный рабочий пример.

person A STEFANI    schedule 20.04.2017

Вы используете пример github quickstart.py, поэтому мне интересно, что он не синхронизирован с документацией Пример класса Google Cloud Speech API. Но это все еще БЕТА.

Предположим, что isinstance(audio_sample, <class Sample(object)>) == True,
затем .recognize в вашем

alternatives = audio_sample.recognize('en-US')

должен быть одним из

async_recognize, streaming_recognize, sync_recognize
person stovfl    schedule 20.04.2017