首页 > 其他分享 >FreeSWITCH对接vosk实现实时语音识别

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

时间:2023-05-04 21:11:28浏览次数:46  
标签:识别 语音 vosk conf FreeSWITCH 回铃音 mod

环境: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 文件;

./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 获取。

标签:识别,语音,vosk,conf,FreeSWITCH,回铃音,mod
From: https://www.cnblogs.com/MikeZhang/p/fsvosk20230504.html

相关文章

  • 极速进化,光速转录,C++版本人工智能实时语音转文字(字幕/语音识别)Whisper.cpp实践
    业界良心OpenAI开源的Whisper模型是开源语音转文字领域的执牛耳者,白璧微瑕之处在于无法通过苹果M芯片优化转录效率,Whisper.cpp则是Whisper模型的C/C++移植版本,它具有无依赖项、内存使用量低等特点,重要的是增加了CoreML支持,完美适配苹果M系列芯片。Whisper.cpp的张量运算......
  • 免费无需魔法会语音聊天的ChatGPT
    今天发现了一个很好的ChatGPT,可以语音聊天,而且免费无需魔法角色目前包括夏洛克、雷电影等等,对话的声调完全模拟了原角色!目前只有英文和日语两种对话,我们可以文字输入或者语音输入,中文即可,系统会语音回答,自带翻译。联系口语交流还是很不错的,目前响应速度很快,无广告。具体的机器人......
  • 【专栏精选】实战:百度语音合成
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复语音识别获取源码工程。洪流学堂,让你快人几步。你好,我是郑洪智。大智:“昨天我们实战了语音识别,在人工智能的语音领域,还有很大一块是语音合成,也就是TexttoSpeech,文字转语音。”小新:“是不......
  • 【专栏精选】实战:百度语音识别
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复语音识别获取源码工程。洪流学堂,让你快人几步。你好,我是郑洪智。大智:“今天给你来点刺激的。”小新满面红光:“啥刺激的?人家可还是个小孩子。”大智:“带你实战!”小新:“啊?智哥你变了!”大......
  • 微信QQ_语音提取
    测试2023年-02-22日可行准备工作获取手机本地语音文件夹参考https://www.qinyuanyang.com/post/296.html?app=ARMtoMP3在这里插入代码片服务器准备工作sudosumkdir/opt/ffmpegyum-yinstallbzip2下载、安装lame#cd/opt/ffmpeg#wgethttp://downloads.sourceforge.ne......
  • 语音处理加窗分帧
    语音处理加窗分帧一、分帧语音数据和视频数据不同,本没有帧的概念,但是为了传输与存储,我们采集的音频数据都是一段一段的。为了程序能够进行批量处理,会根据指定的长度(时间段或者采样数)进行分段,结构化为我们编程的数据结构,这就是分帧。二、帧移由于我们常用的信号处理方法都要......
  • 除螨仪语音方案芯片推荐:NV040D 家用8脚语音ic
    随着时代的发展,大家对于健康的重视程度越来越高,而螨虫这类生物对于特殊群体来说,可能会带来皮肤问题,甚至引发呼吸道疾病,困扰生活,由此,清除床上的螨虫就成为了一个较为刚性的需求。除螨仪也就随之被发明,通过拍打、紫外线照射、吸尘和一定温度实现除螨操作,保持床铺清洁。 NV040D除......
  • freeswitch的任务引擎问题与解决方案
     概述freeswitch核心框架中有一个定时任务系统task,在开发过程中用来做一些延时操作和异步操作很方便。我们在VOIP的呼叫流程中,经常会有一些对实时性要求没那么高的操作,或者会有阻塞流程的操作,我们都可以开启一个定时任务子流程,来达到延时和异步的目标。但是在实际的生产应用......
  • ios apns推送 离线锁屏语音播报
    一、背景公司正在研发的一款App,需要在进行消息推送时支持语音播报。具体要求:离线:App在用户未打开时,可收到消息推送锁屏:用户在设备锁屏状态下,仍可收到消息推送语音播报:收到消息推送时可同时进行语音播放苹果的APNs消息推送,支持在应用未打开及设备锁屏状态下收到推送。而......
  • 自定义Python版本ESL库访问FreeSWITCH
    环境:CentOS7.6_x64Python版本:3.9.12FreeSWITCH版本:1.10.9一、背景描述ESL库是FreeSWITCH对外提供的接口,使用起来很方便,但该库是基于C语言实现的,Python使用该库的话需要使用源码进行编译。如果使用系统自带的Python版本进行编译,过程会比较流畅,就不描述了。这里记录下使用自定义......