环境: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. Ubuntu 20.04 使用deb包安装mysql

    Ubuntu 20.04 使用deb包安装mysql 1.环境 WSL2 + Ubuntu 20.04 2.下载mysql的Ubuntu / Debian安装包 MySQL :: Download M ...

  2. DB2通过java代码生成自定义uuid()函数

    一.简单的方法 此种方法在快速大量生成时,会有重复 SELECT concat (hex (RAND ()), hex (RAND ())) as uuid FROM SYSIBM.SYSDUMMY1 ...

  3. go 发布

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

  4. centos7下安装Node.js MongoDB Nginx

     一.Node.js 方法1(笔者采用).如果对Node.js环境有比较高的要求,建议选择源码安装的方式进行安装,通过wget命令下载Node.js官网上的tar.gz文件包到centos服务器上,进 ...

  5. vue树形结构图

    1.下载插件:cnpm i vue2-org-tree 2.下载less-loader不然报错(this.getOptions is not a function):npm install less- ...

  6. DVWA-File Upload(文件上传)

    文件上传是很危险的漏洞,攻击者上传木马到服务器,可以获取服务器的操作权限 LOW 审计源码 <?php if( isset( $_POST[ 'Upload' ] ) ) { // 定义 文件上 ...

  7. burpsuite 设置文字大小、抓取https数据头

    设置文字大小 burpsuite安装好后,有些时候文字非常的小,看的眼睛直接痛死. 找到 User options -> Display 其中 User Interface -> Font ...

  8. SpringBoot笔记--自动配置(高级内容)(中集)

    @Enable*注解 使用该注解,需要导入相应的依赖坐标,其中的groupId标签里面写入Bean的Java文件所在的包的路径下面 spring-enable-other 还需要在SpringBoot ...

  9. badapple最后一步,讲黑白图转为字符图,然后输出就行了。

    from PIL import Image import os char_s = list(" .,-'`:!1+*abcdefghijklmnopqrstuvwxyz<>()\ ...

  10. [Elixir/Erlang/Racket] 模式匹配,字符串,哈希表,格式化输出

    https://leetcode.cn/problems/evaluate-the-bracket-pairs-of-a-string/solutions/2057593/s-by-yhm138_-n ...