Как работать с результатом Google Speech to Text API - PullRequest
0 голосов
/ 02 августа 2020

Я работаю с API Google для преобразования речи в текст. Он возвращает объект типа google.cloud.speech_v1.types.RecognizeResponse. Я обнаружил, что это почти непригодно для использования в Python, так как я не могу перебирать его, чтобы вернуть несколько текстовых строк.

После долгих поисков решений, чтобы сделать это можно использовать в Python, я нашел решение в Stack Overflow использовать из google.protobuf.json_format.MessageTo Json (). Однако, когда я запускаю функцию ниже ...

def transcribe(self, fp):
    transcribed = []

    data = fp.read()
    speech_content_bytes = base64.b64encode(data)
    speech_content = speech_content_bytes.decode('utf-8')

    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = self.json_path
    os.environ["GCLOUD_PROJECT"] = proj_name
    config = {'language_code': 'en-US'}
    audio = {'content': data}

    client = speech.SpeechClient()
    response = client.recognize(config, audio)
    print('response is a ' + str(type(response)))
    result_json = MessageToJson(response)
    print('result_json is a ' + str(type(result_json)))
    result_json = json.loads(result_json)
    print('now result_json is a ' + str(type(result_json)))

    for result in result_json["results"]:
        transcribed.append(result["alternatives"][0]["transcript"].upper())

    return transcribed

... я получаю следующий результат:

response is a <class 'google.cloud.speech_v1.types.RecognizeResponse'>
result_json is a <class 'str'>
now result_json is a <class 'dict'>

Как видите, результат запуска google MessageTo * Функция 1021 * на самом деле является строкой, и мне нужно загрузить ее в Dict с помощью функции json .loads.

  • Почему функция MessageTo Json возвращает строку, а не Dict / json объект?
  • Есть ли другой способ работы с объектом google.cloud.speech_v1.types.RecognizeResponse в Python, чтобы получить транскрибированный текст?

I не понимаю, почему Google возвращает этот объект, с которым так сложно работать.

...