FreeSWITCH 語音識別 ASR 接口介紹 科大訊飛 百度 阿里雲 等接口實現

FreeSWITCH 語音識別 ASR 模塊

最近很多人都對FreeSWITCH和ASR對接比較感謝興趣,我之前已經做了一個商業模塊(商業模塊請點擊這裏http://www.dingdingtong.cn/smartivr/),考慮到大部分人,只是研究一下,並不準確購買商業模塊,特意做一個開源項目給大家提供一個參考。

第一個版本實現 阿里雲ASR和FreeSWITCH的直接對接,把識別結果通過ESL輸出。

想了開發進度,和本項目的技術交流歡迎加QQ羣:340129771

2017-12-10 第一版本代碼提交

  • 安裝

    • 如果你覺得自己編譯太麻煩,可以直接下載我編譯好的,放在bin 目錄裏面。路徑請根據自己情況修改。注意只支持x64系統
    • mod_asr.so 複製到到 FreeSWITCH mod 目錄。 cp mod_asr.so /usr/local/freeswitch/mod/,如果是fs1.2,請用fs1.2_mod_asr.so的那個。
    • librealTimeUnity.so FreeSWITCH lib 目錄,或者系統lib目錄。cp librealTimeUnity.so /usr/local/freeswitch/lib/
    • libopus.so FreeSWITCH lib 目錄,或者系統lib目錄。cp libopus.so.0 /usr/local/freeswitch/lib/
    • config-realtime.txt 複製到 /etc/目錄。cp config-realtime.txt /etc/
    • /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml 加入 <load module="mod_asr"/>
    • 重啓FreeSWITCH,或者fs_cli 裏面執行 reload mod_asr
    • 注意默認只支持單聲道8000hz的編碼,opus或者g722編碼不支持。
  • 編譯

  • 使用

    • 申請阿里雲的Access Key ID 和 Secret ,請參考 https://help.aliyun.com/document_detail/30437.html?spm=5176.doc35312.6.539.7eNuaN,如果你還沒有,可以先使用我已經申請的id(LTAIRLpr2pJFjQbY)和key(oxrJhiBZB5zLX7LKYqETC8PC8ulwh0)測試。
    • fs_cli 執行 originate user/1001 ‘start_asr:id secret,park’ inline,如 bgapi originate user/1001 'start_asr:LTAIRLpr2pJFjQbY oxrJhiBZB5zLX7LKYqETC8PC8ulwh0,park' inline,分機接起來開始說話,就可以看到識別結果輸出了。 輸出結果的日誌等級是 notify console loglevel 5
    • dialplan中使用 測試的時候如果不執行其他APP,park超時會自動掛斷,可以加入<action application="set" data="park_timeout=60"/>修改park超時時間。

      <extension name="asr">
          <condition field="destination_number" expression="^(888)$">
              <action application="answer"/>
              <action application="start_asr" data="LTAIRLpr2pJFjQbY oxrJhiBZB5zLX7LKYqETC8PC8ulwh0"/>
              <action application="park"/>
          </condition>
      </extension> 
      
  • 開發

    • fs_cli 測試方式 ,執行 /event custom asr 訂閱事件。
    • 識別結果會通過esl輸出(需要訂閱 custom asr 事件)(阿里雲返回的原始json數據)例子如下:

      RECV EVENT
      Event-Subclass: asr
      Event-Name: CUSTOM
      Core-UUID: 48a08a69-7858-407a-be69-679150d34193
      FreeSWITCH-Hostname: MiWiFi-R3D-srv
      FreeSWITCH-Switchname: MiWiFi-R3D-srv
      FreeSWITCH-IPv4: 192.168.31.164
      FreeSWITCH-IPv6: ::1
      Event-Date-Local: 2017-12-10 11:30:32
      Event-Date-GMT: Sun, 10 Dec 2017 03:30:32 GMT
      Event-Date-Timestamp: 1512876632835590
      Event-Calling-File: mod_asr.cpp
      Event-Calling-Function: OnResultDataRecved
      Event-Calling-Line-Number: 55
      Event-Sequence: 914
      ASR-Response: {"finish":0,"request_id":"ee87d7fd5e304bdaa9343d9262f34125","result":{"sentence_id":2,"begin_time":4200,"end_time":6525,"status_code":0,"text":"美國拜拜"},"status_code":200,"version":"2.0"}
      Channel: sofia/external/[email protected]
      

      ASR-Response:asr返回結果。
      Channel:當前通道。主要使用這2個通道變量。

    • 如果你需要用戶說完一整句話,再一次性返回結果。請把config-realtime.txt文件ResponseMode:streaming修改爲ResponseMode:normal
    • 如果你覺得自己開發太麻煩了,可以聯繫QQ:1280791187 或者微信:cdevelop,獲取商業服務和支持。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章