将OGG_OPUS提交到Google语音API中似乎存在问题,它不会返回任何结果并退出,但转换为LINEAR16时相同的示例工作正常。
对两个样本使用带有同步提交的标准python库,并为每种格式使用以下参数:
sample = speech_client.sample(
content,
source_uri=None,
encoding='LINEAR16',
sample_rate_hertz=16000)
sample = speech_client.sample(
content,
source_uri=None,
encoding='OGG_OPUS',
sample_rate_hertz=16000)
样品通过以下方式转换为LINEAR16:
./ffmpeg-git-20170621-64bit-static/ffmpeg -i ./audio.opus -acodec libopus -b:a 16000 -f s16le -acodec pcm_s16le output.raw
原始音频通过Chrome 58中的js中的MediaRecorder录制: https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder 就Opus音频来说,使用以下构造函数参数似乎完全没问题:
audioBitsPerSecond=16000
mimeType="audio/webm"
OGG_OPUS返回的错误是:
ValueError: No results returned from the Speech API.
最初我有点困惑,因为OPUS通常将ffprobe注册为48000比特率,但这似乎是由于编解码器默认在48000解码时无论采样率如何。
答案 0 :(得分:3)
您设置的配置可能不受支持或配置不正确,请尝试使用wave文件及以下配置:
config = types.RecognitionConfig( encoding = enums.RecognitionConfig.AudioEncoding.LINEAR16, sample_rate_hertz = 44100, language_code ='en-US')
您可以通过以下链接检查配置,方法是上传音频文件 https://www.get-metadata.com/