2017-01-19 61 views
0

我试图用syncrecognize方法将我的PBX IVR连接到Google语音API,但由于我需要记录语音,将它发送到API,等待响应并处理它,是不可能的进行正常的对话或尝试使用正常的对话/流程语音进行实时服务。 是否有其他API推荐?或者有没有办法为Google设置VoIP /流媒体。类似于Alexa/Google Home。我没有找到任何东西RecognitionAudio对象:Google Speech API streaming

+0

你看过* streaming *识别方法吗? https://cloud.google.com/speech/docs/streaming-recognize – blambert

回答

1

谷歌云语音API服务支持两种不同的功能:

  • 非流式识别,假设您向Google平台提供了完整的音频,并在处理完毕后收到结果
  • Streaming Recognition,让您以交互方式输送到音频(实时),并收到通知的结果(部分,中间,结果和最终结果),而音频块被处理

两个以上的操作可以是:

  • Syncronous,执行该命令,并等待结果(适合的短文件的标准识别)
  • Asyncronous,发出命令并等待被通知/检查该特定命令的结果(通常在不同的线程中或在多语言环境,音频超过一分钟的强制模式)

流识别API是recomended为您的应用场景,认为它仅与云语音RPC API(谷歌RPC)访问,而非流识别API是既云语音REST和RPC API都可用。

我们通过gRPC API在类似的应用程序环境中使用了AsyncStreamingRecognize,该项目使用C++,环境设置相当长且复杂(您需要为您的环境下载和构建grpc,protoc和Google Speech API存根/库) 。对于我们用作参考的应用程序Google Speech API Site上的示例,一旦环境准备就绪,将示例应用程序逻辑适用于我们的特定场景非常简单。

使用流媒体API时,您对音频编码(并非所有编码均受支持)以及处理音频的长度有限制(在流媒体中最多可处理1分钟的演讲),此外,您只能访问API必须启用使用Speech API的服务帐户。

0

您可以提供记录的缓冲区对于像识别方法的内容参数:

speechClient.recognize({content: voiceRecord.buffer}, options) 
    .then((results) => { 
    const transcription = results[0]; 
    console.log(`Transcription: ${transcription}`); 
}); 
相关问题