Freeswitch MRCP中介軟體- 阿里雲TTS、ASR對接

語言: CN / TW / HK

    最近用業餘時間完成了MRCP中介軟體與阿里雲TTS、ASR的對接,對MRCP中介軟體不熟悉的可以參考之前的一篇文章

https://blog.csdn.net/yugan7061/article/details/88953593 介紹了MRCP中介軟體的JAVA實現。第一個選擇對接阿里的TTS、ASR原因是最早接觸的也是阿里,還有文件比較詳細,所以先準備用阿里做一個標準。


TTS對接

    TTS的對接分為兩種方式,因為阿里的TTS只能通過sdk的方式來呼叫,沒有公網URL的方式呼叫。如果有URL的方式交換機是可以直接呼叫的。

   1、URL呼叫方式,這種方式不需要通過MRCP中介軟體中轉,直接交換機呼叫URL的方式,這種實現方式需要呼叫阿里的TTS SDK 做一個HTTP 代理,由於阿里提供的SDK 是生成語音檔案的方式,在檔案寫入的時候直接寫到HTTP流中即可;這樣通過HTTP傳文字就能夠獲取合成的TTS語音流,在交換機中做一定的快取,就能減少呼叫;

  2、通過mrcp的方式,這種方式還是先生成語音檔案,然後將語音檔案轉化為RTP流,然後通過MRCP訊息控制,實現TTS的播放,為什麼要先生成語音檔案,主要還是因為JMF的檔案獲取方式還是檔案流,實時流無法實現;

這兩種方式的實現比較,個人感覺第一種更優,因為互動更少,邏輯更簡單,而且互動響應更快,不用等所有流結束,但是需要一個代理服務;第二種方式就是標準的MRCP對接簡單,標準對於不支援直接訪問url來播音的交換機是可以直接用的。


ASR對接

       阿里提供的ASR介面主要有兩種方式,一種是一句話識別,一種是實時語音流識別,第一種方式需要根據語音檔案來識別,這種需要把每次MRCP互動的語音流儲存成檔案,然後呼叫識別介面,這個在MRCP中介軟體中有一個問題,就是一次互動你可能無法判斷是不是語音流結束,所以這種方式不適合MRCP對接;第二種實時語音流識別,是根據傳送的實時流,不停的返回結果,比較符合MRCP的互動模式,所以採用了第二種,兩種方式的雲端計費方式也不一樣,第一種是按次計費,第二種是按時間計費,總體感覺兩種成本是差不多的。

     通過實時流對接我們需要將接收到RTP流轉化車PCM流傳送給阿里ASR服務端,然後將收到的結果轉化為MRCP訊息返回給交換機,目前做到的就是直文翻譯,對於IVR應用,有時候還需要支援語音識別語法,如SRGS,這個目前還是沒有實現的。


做了一個簡單的IVR互動流程,從實時性和識別效果來說,基本上和我們之前對接nuance差不多,對於一般性的企業應用應該具備商用的標準。