Google Speech API - 识别 base64 编码的音频

问题描述 投票:0回答:1

我一直在努力使用 Google Speech API 一段时间,希望得到一些建议。

这是我正在尝试做的事情:

  1. 在浏览器中录制音频
  2. 将录音转换为base64并发送到我的服务器
  3. 在服务器上,调用 Google Speech API 的 syncRecognize 函数,传入我的 base 64 编码音频

我总是收到一个空的结果对象。

当我按照这个入门教程虽然一切正常。

我做错了什么?

任何提示/想法将不胜感激。

const Speech = require('@google-cloud/speech');
const SpeechV1beta1 = require('@google-cloud/speech/src/v1beta1')

module.exports = {

    syncRecognize: function(base64Encoding) {

       const speech = Speech();
       const speechV1beta1 = SpeechV1beta1();
       const client = speechV1beta1.speechClient();

       const body = {
           "config": {
               "encoding":"LINEAR16",
               "sampleRate":16000,
               "languageCode":"en-US"
           },
           "audio": {
              "content": base64Encoding
           }
       }

       return client.syncRecognize(body)
        .then((results) => {
            console.log('results', results) 
            return {transcription: results[0]};
        }).catch(function(error) {
            return {error: error};
        });;

    }
}
audio-recording google-speech-api
1个回答
3
投票

可能您从浏览器录制的内容没有这些配置参数。

我遇到的另一个问题是,对于超过 5 秒的音频持续时间,超时开始,到目前为止,我无法有效地更改 API 截止日期。这也可能是你的情况。

为了验证我的网络应用程序中音频的元数据,我使用 ffmpeg:我自动将文件保存到存储中并在脚本中运行

ffmpeg -i filename
以检索采样率、编码、通道数和持续时间。

注意同步语音识别请求有音频长度限制。如果你超过它们,我建议你使用异步方法(或将音频文件拆分为子文件)。在前一种情况下,您可能需要转换音频编码(幸运的是,FFmpeg 也可以为您做这件事:))。在后一种情况下,您可以使用 SoX 在静音上拆分音频并单独处理它们。

© www.soinside.com 2019 - 2024. All rights reserved.