我一直在使用Chromium Google Speech API并最近转而使用Google Cloud Speech API。自谷歌云语音API发布以来,性能似乎在识别准确性方面有所下降。我也看到有越来越多的空洞结果"回来播放音频。
我将音频同时传输到多个不同的服务,Google Cloud Speech API返回空结果,而其他一些服务则返回转录文本。让我想知道Chromium Speech API和Google Cloud Speech API的工作方式是否有任何改变?
我验证了音频的正确标头,并验证了我正在向Google发送音频。
是否有人(有时候大部分时间)都会遇到谷歌的空白结果?
答案 0 :(得分:4)
此类问题更适合公共问题跟踪器,因为它需要更多详细信息才能重现您的确切错误。请务必使用所需信息填写此form,或者至少使用代码的最小工作示例清楚地突出显示问题。为了准确再现,提供您执行的示例代码或命令以及将错误与配置文件以及您流式传输的音频文件的URI(或文件)以及返回空结果的错误一起返回的示例代码或命令非常重要。
事实上,目前在Beta中存在语音API的已知问题,因此可能阻止转录正常工作。在此期间,您可以参考以下documentation来确定是否有任何最佳做法适用于您的案例。
答案 1 :(得分:1)
我也收到了空的回复,但最终通过不同设置的编码得到了结果。
sox async.wav -t raw --channels=1 --bits=16 --rate=16000 --encoding=signed-integer --endian=little async.raw
答案 2 :(得分:1)
我也有同样的问题,Google Speech API返回空结果。 我使用FFmpgeg将我的音频文件转换为LINEAR16。为了安装这个工具,我使用了Homebrew:
brew install ffmpeg
为了将我的音频文件转换为LINEAR16,我使用了以下命令:
ffmpeg -i input.flac -f s16le -acodec pcm_s16le output.raw
我将其加载到我的Google存储设备后:https://console.cloud.google.com/storage/browser/
这是我的JSON文件,其中包含用于发出请求的配置:
{
'config': {
'encoding':'LINEAR16',
'sampleRate': 16000,
'languageCode': 'en-US'
},
'audio': {
'uri':'gs://your-bucket-name/output.raw'
}
}
对于超过1分钟的文件,您需要使用Asyncrecognize方法:
curl -s -k -H "Content-Type: application/json" \
-H "Authorization: Bearer [YOUR-KEY]" \
https://speech.googleapis.com/v1beta1/speech:asyncrecognize \
-d @sync-request.json
它将返回操作ID。您可以通过获取操作结果来检查它是否准备就绪:
curl -s -k -H "Content-Type: application/json" \
-H "Authorization: Bearer " [YOUR-KEY]\
https://speech.googleapis.com/v1beta1/operations/[OPERATION-ID]