OGG_OPUS使用Google Speech API失败,但在同一样本中使用LINEAR16似乎没问题?

时间:2017-06-25 21:19:43

标签: google-speech-api

将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解码时无论采样率如何。

1 个答案:

答案 0 :(得分:3)

您设置的配置可能不受支持或配置不正确,请尝试使用wave文件及以下配置:

  

config = types.RecognitionConfig(       encoding = enums.RecognitionConfig.AudioEncoding.LINEAR16,       sample_rate_hertz = 44100,       language_code ='en-US')

您可以通过以下链接检查配置,方法是上传音频文件 https://www.get-metadata.com/