Я работаю с 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 возвращает этот объект, с которым так сложно работать.