FreeSWITCH对接vosk实现实时语音识别
一、背景描述
vosk是一个开源语音识别工具,可识别中文,之前介绍过python使用vosk进行中文语音识别,今天记录下FreeSWITCH对接vosk实现实时语音识别。
二、具体实现
1、编译及安装vosk模块
https://github.com/alphacep/freeswitch.git

这里描述下使用FreeSWITCH 1.10.9 编译 mod_vosk 的过程,大致步骤如下:
1)将 mod_vosk 代码复制到 freeswitch-1.10.9.-release/src/mod/asr_tts 目录;
2)modules.conf 文件中启用mod_vosk模块;

3)生成 Makefile 文件;
./devel-bootstrap.sh && ./configure
4) 编译并安装 vosk 模块;
cd freeswitch-1.10.9.-release/src/mod/asr_tts/mod_vosk
make
make install

fs编译遇到问题,可参考这篇文章:CentOS7环境源码安装freeswitch1.10
2、配置 vosk 模块
1)启用 vosk 模块;
编辑 autoload_configs/modules.conf.xml 文件,启用 vosk 模块:
<load module="mod_vosk"/>
2)配置 conf 文件;
将 mod_vosk/conf/vosk.conf.xml 配置文件复制到 如下路径:
/usr/local/freeswitch/conf/autoload_configs/
修改 vosk 服务器地址:

三、运行效果
1、启动 vosk 服务器
目录:vosk-server\websocket
启动命令如下:
workon py39env
python asr_server.py vosk-model-cn-0.15
运行效果如下:

具体可参考我之前写的文章:python使用vosk进行中文语音识别
2、实时语音识别
编写拨号方案:
<condition field="destination_number" expression="^123456$">
<action application="answer"/>
<action application="set" data="fire_asr_events=true"/>
<action application="detect_speech" data="vosk default default"/>
<action application="sleep" data="10000000"/>
</condition>
本地分机拨打123456进行验证,运行效果如下:

运行效果视频获取途径:
3、回铃音识别
这里使用其它服务器配合来模拟回铃音。
<extension name="public_extensions">
<condition field="destination_number" expression="^(654321)$">
<action application="pre_answer"/>
<action application="set" data="ringback=/usr/local/freeswitch/sounds/test/tips1.wav"/>
<action application="transfer" data="1008 XML default"/>
</condition>
</extension>
需要注意的是,如果回铃音不生效,可以看下后续的拨号方案是否有替换动作。
3.2 配置网关
网关配置信息:
[root@host32 conf]# cat sip_profiles/external/gw_a.xml
<include>
<gateway name="gw_A">
<param name="username" value="anonymous"/>
<param name="from-user" value=""/>
<param name="password" value=""/>
<param name="outbound-proxy" value="192.168.137.31:5080"/>
<param name="register-proxy" value="192.168.137.31:5080"/>
<param name="expire-seconds" value="120"/>
<param name="register" value="false"/>
<param name="register-transport" value="UDP"/>
<param name="caller-id-in-from" value="true"/>
<param name="extension-in-contact" value="true"/>
<variables>
<variable name="gateway_name" value="gw_A"/>
</variables>
</gateway>
</include>
[root@host32 conf]#
3.3 编写本地拨号方案
本地拨号方案:
<condition field="destination_number" expression="^9123456$">
<action application="bridge" data="{ignore_early_media=false,bridge_early_media=true,fire_asr_events=true,execute_on_pre_answer='detect_speech vosk default default'}sofia/gateway/gw_A/654321"/>
</condition>
本地分机拨打9123456,可听到回铃音,识别效果如下:

运行效果视频获取途径:
关注微信公众号(聊聊博文,文末可扫码)后回复 2023050402 获取。
四、资源下载
本文涉及源码及预编译模块二进制文件,可以从如下途径获取:

FreeSWITCH对接vosk实现实时语音识别的更多相关文章
- 什么?小程序实时语音识别你还在痛苦的对接科大讯飞?百度Ai识别?
前言 微信小程序,说不上大火,但是需求还是不少的.各大企业都想插一足 于是前端同学就有事情做了. 需求 我需要录音 我边说话边识别,我要同声传译,我要文字转语音,还要萝莉音 我:??? 正文 一开始, ...
- freeswitch对接其它SIP设备
这几天用到freeswitch对接其它设备方面的知识,这里整理下,也方便我以后查阅. 操作系统:debian8.5_x64 freeswitch 版本 : 1.6.8 一.freeswitch作为被叫 ...
- Python实时语音识别控制
代码地址如下:http://www.demodashi.com/demo/12946.html Python实时语音识别控制 概述 本文中的语音识别功能采用 百度语音识别库 ,首先利用 PyAudio ...
- freeswitch对接WEBRTC的一个candidate问题
概述 近几年,WEBRTC的完善与成熟,使得网页上使用webrtc的应用越来越多. Freeswitch是一个开源的软交换平台,可以直接支持webrtc的对接方式. 最近在测试fs和webrtc的对接 ...
- python使用vosk进行中文语音识别
操作系统:Windows10 Python版本:3.9.2 vosk是一个离线开源语音识别工具,它可以识别16种语言,包括中文. 这里记录下使用vosk进行中文识别的过程,以便后续查阅. vosk地址 ...
- 安卓与PC网络对接实现视频实时播放
研究安卓网络通信一段时间了, 由于最近公司催的比较紧, 硬着头皮弄出来了. 现在手机客户端终于能够连接流媒体服务器实时播放前端的视频流了. 其实通信方面主要还是命令包的解析, 以及分包组包. 比如要 ...
- FreeSWITCH与FreeSWITCH对接
(主机A ---> 主机B)192.168.100.A主机:修改/usr/local/freeswitch/conf/dialplan/default.xml 10 <ex ...
- FreeSWITCH 对接RTSP和RTMP视频
在某些场景需要把摄像头或者其它推流视频加入FreeSWITCH.因此可以采用如下方式处理: 安装mod_vlc 然后在配置文件中加入 < action applicaiton="pla ...
- kylin对接hive实现实时查询
前提: 安装kylin之前,需要安装hadoop2.0.hbase.hive,并且对版本有要求,可以参照官网链接 http://kylin.apache.org/cn/docs/install/in ...
- freeswitch对接电信线路VOLTE视频通话
在public.xml上设置视频编码: <action application="export" data="nolocal:absolute_codec_stri ...
随机推荐
- C/C++ 数据结构优先级队列的实现(使用二级指针)
#include <iostream> #include <Windows.h> #include <iomanip> //优先级队列的实现 using names ...
- 华为云服务器搭建FTP后,内网访问无法连接。
总结:1.内网访问公网需要用被动模式 2.云服务器需要放开除20.21以外的部分端口,指定范围 3.PASV IP配置为云服务器的弹性公网IP 4.局域网使用主动模式连接FTP,客户端需要关闭防火墙, ...
- typescript 的动态引入组件
环境: Arco Pro + Vue3 vite自身对动态字符串形式的组件引入是有限制的, 以下写法会报错 官方文档中也对此有做说明, 只能通过固定形式去引用 以下形式不会报错, 但这种固定格式的局限 ...
- iOS C#远程推送证书.p12文件制作
1.PushChat.certSigningRequest 请求证书文件 生成Certificate Signing Request (CSR): 2.填写你的邮箱和Common Name, ...
- 查看Doris表占用空间
近期想统计下各表占用的存储空间大小,官网文档SHOW-TABLE-STATUS给的语句很简单,但是对于列的含义写的不是很明白,我写入数据验证了一下. Doris版本:1.2 查看当前数据库下所有表的信 ...
- 递推求解DAG最长路径长度及最长路径条数
说明 在一般图中,求解最长路或最短路只能通过最短路算法解决 但是在DAG中,由于不存在环,因此可以通过递推,以线性复杂度计算处最长路或最短路.当然需要首先对有向图进行Tarjan缩点转化为DAG 例题 ...
- Android开发踩坑日记
ViewModelProviders被弃用,改为ViewModelProvider ViewModelProvider使用方法 MyViewModel model = new ViewModelPro ...
- 数据挖掘关联分析—R实现
关联分析 关联分析又称关联挖掘,就是在交易数据.关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式.关联.相关性或因果结构.或者说,关联分析是发现交易数据库中不同商品(项)之间的联系 ...
- [数据库/Linux]CentOS7安装MySQL Percona版(RPM方式)
OS: CentOS7 (x86_64) MySQL: MySQL Percona 5.7.31-34 0 前置条件 已配置完成YUM源 已卸载先前可能安装的MySQL rpm -qa | grep ...
- Cesium案例(八) Terrain
第一步正常建viewer,需要注意的是官网例子属性值比较老,最新版本的属性值有所差异,全copy官网会无法运行,提示函数未定义. 第一处差异 官网: 1 const viewer = new Cesi ...