2017-01-19 60 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}`); 
}); 
相關問題