前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FreeSWITCH对接vosk实现实时语音识别

FreeSWITCH对接vosk实现实时语音识别

原创
作者头像
麦壳儿
发布2023-05-04 21:08:09
5K2
发布2023-05-04 21:08:09
举报
文章被收录于专栏:pyvoip

环境:CentOS 7.6_x64

FreeSWITCH版本 :1.10.9

Python版本:3.9.2

一、背景描述

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

python使用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 文件;

代码语言:javascript
复制
./devel-bootstrap.sh && ./configure

4) 编译并安装 vosk 模块;

代码语言:javascript
复制
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 模块:

代码语言:javascript
复制
<load module="mod_vosk"/>

2)配置 conf 文件;

将 mod_vosk/conf/vosk.conf.xml 配置文件复制到 如下路径:

/usr/local/freeswitch/conf/autoload_configs/

修改 vosk 服务器地址:

三、运行效果

1、启动 vosk 服务器

目录:vosk-server\websocket

启动命令如下:

代码语言:javascript
复制
workon py39env
python asr_server.py vosk-model-cn-0.15

运行效果如下:

具体可参考我之前写的文章:

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

2、实时语音识别

编写拨号方案:

代码语言:javascript
复制
<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 应用,设置回铃音。

拨号方案如下:

代码语言:javascript
复制
<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 配置网关

网关配置信息:

代码语言:javascript
复制
[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 编写本地拨号方案

本地拨号方案:

代码语言:javascript
复制
<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 获取。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景描述
  • 二、具体实现
    • 1、编译及安装vosk模块
      • 2、配置 vosk 模块
      • 三、运行效果
        • 1、启动 vosk 服务器
          • 2、实时语音识别
            • 3、回铃音识别
            • 四、资源下载
            相关产品与服务
            语音识别
            腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档