Я пытаюсь использовать новую функциональность бета альтернативных языков , которая позволяет задавать набор языков при создании задания транскрипции и возвращении обнаруженного языка вместе с результатами транскрипции на этом языке.
Когда я запускаю пример кода со страницы документации (синхронно), все работает нормально, и обнаруженный код языка возвращается в результатах:
from google.cloud import speech_v1p1beta1 as speech
client = speech.SpeechClient()
speech_file = 'resources/multi.wav'
first_lang = 'en-US'
second_lang = 'es'
with open(speech_file, 'rb') as audio_file:
content = audio_file.read()
audio = speech.types.RecognitionAudio(content=content)
config = speech.types.RecognitionConfig(
encoding=speech.enums.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz=44100,
audio_channel_count=2,
language_code=first_lang,
alternative_language_codes=[second_lang])
print('Waiting for operation to complete...')
response = client.recognize(config, audio)
for i, result in enumerate(response.results):
alternative = result.alternatives[0]
print(result.language_code) # this prints 'en-US'
print('-' * 20)
print('First alternative of result {}: {}'.format(i, alternative))
print(u'Transcript: {}'.format(alternative.transcript))
Но когда я пробую асинхронный режим, языккод не возвращается вместе с результатами:
from google.cloud import speech_v1p1beta1 as speech
client = speech.SpeechClient()
gs_url = 'gs://my-bucket-name/multi.wav'
first_lang = 'en-US'
second_lang = 'es'
audio = speech.types.RecognitionAudio(uri=gs_url)
config = speech.types.RecognitionConfig(
encoding=speech.enums.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz=44100,
audio_channel_count=2,
language_code=first_lang,
alternative_language_codes=[second_lang])
print('Waiting for operation to complete...')
operation = client.long_running_recognize(config, audio)
response = operation.result(timeout=40)
for i, result in enumerate(response.results):
alternative = result.alternatives[0]
print(result.language_code) # this prints nothing! result.language_code is empty string
print('-' * 20)
print('First alternative of result {}: {}'.format(i, alternative))
print(u'Transcript: {}'.format(alternative.transcript))
Это происходит, несмотря на явную документацию :
Речевой текст поддерживает альтернативный языккоды для всех методов распознавания речи: речь: распознавать, речь: долгое время, распознавать и потоковая передача.
Есть идеи о том, как получить обнаруженный языковой код также для асинхронных запросов транскрипции?1021 * Это моя версия библиотек Google