FreeSWITCH 语音识别 ASR 接口介绍 科大讯飞 百度 阿里云 等接口实现
2018-01-20 16:18
3207 查看
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编码不支持。
编译
下载阿里云语音识别SDK http://download.taobaocdn.com/freedom/33762/compress/nlsSpeech-release.zip?spm=5176.doc48715.2.4.bRraen&file=nlsSpeech-release.zip
安装FreeSWITCH https://freeswitch.org/confluence/display/FREESWITCH/Installation
下载mod_asr代码
git clone https://github.com/cdevelop/FreeSWITCH-ASR.git[/code]
编译g++ -shared -fPIC -o mod_asr.so mod_asr.cpp -pthread -I ./nlsSpeech-release/include -I /usr/local/freeswitch/include -L./nlsSpeech-release/lib/linux -L /usr/local/freeswitch/lib -ldl -lopus -lrealTimeUnity -lfreeswitch,nlsSpeech-release和FreeSWITCH路径请根据自己情况修改。
使用
申请阿里云的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,分机接起来开始说话,就可以看到识别结果输出了。 输出结果的日志等级是 notifyconsole 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/linphone@192.168.31.210
ASR-Response:asr返回结果。
Channel:当前通道。主要使用这2个通道变量。
如果你需要用户说完一整句话,再一次性返回结果。请把config-realtime.txt文件ResponseMode:streaming修改为ResponseMode:normal。
如果你觉得自己开发太麻烦了,可以联系QQ:1280791187 或者微信:cdevelop,获取商业服务和支持。
相关文章推荐
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
- 百度天气预报接口介绍
- Comparable接口实现和使用方法介绍
- 阿里云ECS开放批量创建实例接口,实现弹性资源的创建
- ArcEngine下动态数据的实现显示——概念及接口介绍
- 用百度天气接口的实现安卓天气预报(json数据)
- PHP接口的介绍与实现(转)
- Comparable接口实现和使用方法介绍
- python实现微信接口(itchat)详细介绍
- ArcEngine下动态数据的实现显示——概念及接口介绍
- SpringBoot第二讲 利用Spring Data JPA实现数据库的访问(二)_分页和JpaSpecificationExecutor接口介绍
- 使用科大讯飞的语音技术实现语音识别
- 百度搜索词&淘宝搜索词 接口实现
- jsonp结合百度接口-实现搜索功能
- Jmeter自定义脚本实例(以项目中阿里云上传接口为例子的需求分析以及实现)
- unisound_asr 云知声 语音识别 python版接口
- 实现Android语音识别服务接口 RecognitionService的方法
- Android调用百度地图Web端接口,实现百度定位、导航
- 实现百度下拉菜单实例(利用jsonp跨域请求百度数据接口)
- 百度天气预报接口介绍--职坐标