首页 文章

谷歌 Cloud 语音api返回空结果

提问于
浏览
5

我一直在使用Chromium Google Speech API并最近转而使用Google Cloud Speech API . 自谷歌 Cloud 语音API发布以来,性能似乎在识别准确性方面有所下降 . 另外我看到有越来越多的“空结果”回来用于音频流 .

我将音频同时传输到多个不同的服务,Google Cloud Speech API返回空结果,而其他一些服务则返回转录文本 . 让我想知道Chromium Speech API和Google Cloud Speech API的工作方式是否有任何改变?

我验证了音频的正确标头,并验证我正在向Google发送音频 .

是否有人(有时候更多的时候)会回到空的结果?

3 回答

  • 1

    此类问题更适合公共问题跟踪器,因为它需要更多详细信息才能重现您的确切错误 . 请务必使用所需信息填写此form或至少使用代码的最小工作示例清楚地突出显示问题 . 为了准确再现,提供您执行的示例代码或命令以及将错误与配置文件以及您流式传输的音频文件的URI(或文件)以及返回空结果的错误一起返回是非常重要的 .

    事实上,存在当前处于Beta中的语音API的已知问题,因此可能阻止转录正常工作 . 在此期间,您可以参考以下documentation来确定是否有任何最佳做法适用于您的案例 .

  • 1

    我也收到空的回复,但最终通过不同的设置编码获得结果 .

    sox async.wav -t raw --channels=1 --bits=16 --rate=16000 --encoding=signed-integer --endian=little async.raw

  • 4

    我也有同样的问题,Google Speech API返回空结果 . 我使用FFmpgeg将我的音频文件转换为LINEAR16 . 为了安装这个工具,我使用了Homebrew:

    brew install ffmpeg
    

    为了将我的音频文件转换为LINEAR16,我使用了以下命令:

    ffmpeg -i input.flac -f s16le -acodec pcm_s16le output.raw
    

    在我将其加载到我的Google stogage之后: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]
    

相关问题