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

时间:2017-02-26 12:30:54

标签: audio-recording google-speech-api

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

这是我想要做的事情:

  1. 在浏览器中录制音频
  2. 将录制内容转换为base64并发送到我的服务器
  3. 在服务器上,调用Google Speech API的syncRecognize函数,传入我的base 64编码音频
  4. 我总是收到一个空的结果对象。

    当我遵循此getting started tutorial时,虽然一切正常。

    我做错了什么?

    非常感谢任何提示/想法。

    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};
            });;
    
        }
    }
    

1 个答案:

答案 0 :(得分:2)

顺便说一下,你从浏览器录制的内容并不是那些配置参数。

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

要验证我的webapp中音频的元数据,我使用ffmpeg:我自动将文件保存到存储并在脚本中运行ffmpeg -i filename以检索采样率,编码,通道数和持续时间。

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