我也有同样的问题,谷歌语音 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]