环境:CentOS 7.6_x64
FreeSWITCH版本 :1.10.9
Python版本:3.9.2

一、背景描述

vosk是一个开源语音识别工具,可识别中文,之前介绍过python使用vosk进行中文语音识别,今天记录下FreeSWITCH对接vosk实现实时语音识别。

vosk离线语音识别可参考我之前写的文章:

二、具体实现

1、编译及安装vosk模块

可直接使用github上的代码进行编译:

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进行验证,运行效果如下:

运行效果视频获取途径:

 关注微信公众号(聊聊博文,文末可扫码)后回复 2023050401 获取。

3、回铃音识别

这里使用其它服务器配合来模拟回铃音。

fs服务器 :192.168.137.32
回铃音服务器 :192.168.137.31
3.1 配置回铃音服务器
核心点是使用 pre_answer 应用,设置回铃音。
拨号方案如下:
<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 获取。

四、资源下载

本文涉及源码及预编译模块二进制文件,可以从如下途径获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230504 获取。

FreeSWITCH对接vosk实现实时语音识别的更多相关文章

  1. 什么?小程序实时语音识别你还在痛苦的对接科大讯飞?百度Ai识别?

    前言 微信小程序,说不上大火,但是需求还是不少的.各大企业都想插一足 于是前端同学就有事情做了. 需求 我需要录音 我边说话边识别,我要同声传译,我要文字转语音,还要萝莉音 我:??? 正文 一开始, ...

  2. freeswitch对接其它SIP设备

    这几天用到freeswitch对接其它设备方面的知识,这里整理下,也方便我以后查阅. 操作系统:debian8.5_x64 freeswitch 版本 : 1.6.8 一.freeswitch作为被叫 ...

  3. Python实时语音识别控制

    代码地址如下:http://www.demodashi.com/demo/12946.html Python实时语音识别控制 概述 本文中的语音识别功能采用 百度语音识别库 ,首先利用 PyAudio ...

  4. freeswitch对接WEBRTC的一个candidate问题

    概述 近几年,WEBRTC的完善与成熟,使得网页上使用webrtc的应用越来越多. Freeswitch是一个开源的软交换平台,可以直接支持webrtc的对接方式. 最近在测试fs和webrtc的对接 ...

  5. python使用vosk进行中文语音识别

    操作系统:Windows10 Python版本:3.9.2 vosk是一个离线开源语音识别工具,它可以识别16种语言,包括中文. 这里记录下使用vosk进行中文识别的过程,以便后续查阅. vosk地址 ...

  6. 安卓与PC网络对接实现视频实时播放

    研究安卓网络通信一段时间了,  由于最近公司催的比较紧, 硬着头皮弄出来了. 现在手机客户端终于能够连接流媒体服务器实时播放前端的视频流了. 其实通信方面主要还是命令包的解析, 以及分包组包. 比如要 ...

  7. FreeSWITCH与FreeSWITCH对接

    (主机A ---> 主机B)192.168.100.A主机:修改/usr/local/freeswitch/conf/dialplan/default.xml 10         <ex ...

  8. FreeSWITCH 对接RTSP和RTMP视频

    在某些场景需要把摄像头或者其它推流视频加入FreeSWITCH.因此可以采用如下方式处理: 安装mod_vlc 然后在配置文件中加入 < action applicaiton="pla ...

  9. kylin对接hive实现实时查询

     前提: 安装kylin之前,需要安装hadoop2.0.hbase.hive,并且对版本有要求,可以参照官网链接 http://kylin.apache.org/cn/docs/install/in ...

  10. freeswitch对接电信线路VOLTE视频通话

    在public.xml上设置视频编码: <action application="export" data="nolocal:absolute_codec_stri ...

随机推荐

  1. go 发布

    rm test-serv.bingo build -o test-serv.bin main.go

  2. pip第三方库安装失败原因及解决办法

    pip安装三方库失败原因及解决方法 提示:WARNING: You are using pip version 20.2.3, however version 20.2.4 is available. ...

  3. 比 poi导入导出更好用的 EasyExcel使用小结

    转载请注明出处: 官方文档: https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read 1.简洁 Java解析.生成E ...

  4. 手把手教你蜂鸟e203移植(以Nexys4DDR为例)

    准备工作:(网盘链接:) 1.蜂鸟e203的RTL源码: 2.一段分频代码: 3.顶层设计文件(system.v) 4.开发板文件: 5.Nexys4DDR电路图: 6.Nexys4DDR管脚约束模板 ...

  5. Python学习笔记--函数来啦!

    函数 函数,就是组织好的,可重复使用的,用来实现特定功能的代码块 实际的小案例:不使用内置函数len,利用函数知识计算出字符串的长度 实现: 函数的基础定义语法 案例:自动查核酸 实现: 函数的传入参 ...

  6. 对于Java课上问题的探究和解答

    问题一:子类和父类的继承关系(extends) 需要强调的是,子类自动声明继承父类中的public和protected的成员 其中,public成员,外界可以自由访问: private成员,外界无法进 ...

  7. Salesforce Javascript(四) 展开语法 ...

    本篇参考: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax Sale ...

  8. Golang数据结构

    数据类型 不同类型的内存样式图 append,切片添加元素 清空切片的3种方法 清空切片的2种方法 查看变量类型 使用 fmt.Printf package main import "fmt ...

  9. 钛度守望者旗舰版TSG550鼠标(原相3335芯片)拆解

    鼠标整体外观 鼠标按键支柱,采用的十字形的按键柱,没有采用现在市面上多数鼠标的平面贴片形的按键柱设计,但是耐用性比一字型的按键柱会好很多. 可换微动设计,原装的是凯华GM8.0黑曼巴8000万次微动, ...

  10. 自己动手从零写桌面操作系统GrapeOS系列教程——24.加载并运行loader

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 之前我们在电脑的启动过程中介绍过boot程序的主要任务就是加载并运行loader程序,本讲我们就来实现. 本讲代码文件共2个: boot.asm ...