Freeswitch VAD改造支持as

简介: Freeswitch VAD改造支持as

当用户说话才开始录音,当用户停止说话停止录音.

uuid_record和record_session


1.使用条件:


设置录音时间长度在1-50s之间

就启动支持asr:当用户说话才开始录音,当用户停止说话停止录音.

假如没设置录音时间长度,或者时间长度超过50s,支持asr功能不起效.

uuid_record和record_session 行为跟修改之前一样.


2.设置参数:


2.1 可以设置 RECORD_SILENCE_THRESHOLD  通道变量


参数是判断用户说话开始的能量,可以设置<3000,比如设置RECORD_SILENCE_THRESHOLD=1000

没设置就是使用系统里面默认的能量=3000.一般情况下设置=1000

 

可以设置 EOS_SILENCE_THRESHOLD  通道变量

参数是判断用户没说话的能量,可以设置>200,EOS_SILENCE_THRESHOLD=5000

没设置就是使用系统里面默认的能量=200.一般情况下设置=500


2.2 可以设置 RECORD_FINAL_TIMEOUT_MS  通道变量


参数是设置用户说话之后没说话多久认为用户真的停止说话了

可以设置<2000,比如设置RECORD_FINAL_TIMEOUT_MS=1000

没设置就是使用系统里面默认的是2000ms,

假如 拨入可以设置 default 拨号计划里面

假如拨出的 需要vars.xml 里面设置

说话间隔超时时间:

 

说话开始能量:

   

 说话结束的能量:

 

 

3.事件处理


设置录音时间长度在1-20s之间,这个时候支持asr功能生效,

用户假如一直没说话,时间到了会产生RECORD_STOP事件.

假如用户开始说话,马上产生:RECORD_START事件,

用户说话结束产生: RECORD_STOP

假如系统有播音(对话方式),那么收到RECORD_START事件

需要马上停止播音,收到RECORD_STOP事件可以把录音文件打开

读出里面的语音拿去进行识别


4.esl 修改:


4.1 增加 RECORD_START RECORD_STOP 事件监听
4.2
if (strcmp(event, "RECORD_START") == 0)//yhy2018-01-13 需要判断自己的record filename才能stop play
{if (xxx)//有播音要停止播音
{char*p = strstr(eventbody, "Record-File-Path: ");
if (p)
{p = p + strlen("Record-File-Path: ");
strncpy(tmp, p, 64);
tmp[64] = 0;
if (strlen(Lineinfo.filename)>1 && strstr(tmp, Lineinfo.filename + 4))//d:/xx Record-File-Path: d%3A/data/2018/01/13/150614_13606060253_001.wav
{sprintf(cmd_tmp, "api uuid_break %s all", uuid);
esl_send_recv_timed(handle, cmd_tmp, 1000);
cti_log(5, "RECORD_START,%s,stop play,pause on", cmd_tmp);
return 0;
4.3
if (strcmp(event, "RECORD_STOP") == 0)//yhy2017-12-19 支持op_record 50秒内的录音改进. sos 才录音,eos 录音结束.
{
get_lineinfo(index, Lineinfo);
if (Lineinfo.record == 1 && time(NULL)>Lineinfo.time)//yhy2018-01-31 之前的record 不是当前的record 才停止
{
char*p = strstr(eventbody, "Record-File-Path: ");//yhy2018-03-17停止也要判断文件名
if (p)
{
p = p + strlen("Record-File-Path: ");
strncpy(tmp, p, 64);
tmp[64] = 0;
if (strlen(Lineinfo.filename) > 1 && strstr(tmp, Lineinfo.filename + 4))//d:/xx Record-File-Path: d%3A/data/2018/01/13/150614_13606060253_001.wav
{if (xxx)//有播音要停止播音
{sprintf(cmd_tmp, "api uuid_break %s all", uuid);
esl_send_recv_timed(handle, cmd_tmp, 1000);
cti_log(5, "index=%04d,RECORD_STOP,filename=%s", index, Lineinfo.filename);
return 0;


相关文章
|
机器学习/深度学习 算法 机器人
FreeSWITCH ASR 电话机器人 VAD 打断 ASR集成 全功能开源代码
最近很多人都对FreeSWITCH和ASR对接比较感谢兴趣,我之前已经做了一个商业模块(商业模块请点击这里http://www.ddrj.com/callcenter/asr.html),考虑到大部分人,只是研究一下,并不准确购买商业模块,特意做一个开源项目给大家提供一个参考。
1413 0
|
API 语音技术
freeswitch的模块中mod_vad的使用说明
介绍 mod_vad是一个freeswitch的模块,实现VAD录音和放音支持打断,vad和asr集成,tts放音支持等。
1072 0
|
JSON Linux 语音技术
FreeSWITCH 语音识别 ASR 模块
最近很多人都对FreeSWITCH和ASR对接比较感谢兴趣,(,考虑到大部分人,只是研究一下,并不准确购买商业模块,特意做一个开源项目给大家提供一个参考。
3321 0
|
机器人
智能电话机器人源码系统 的VAD和CNG
概观 VAD概述 VAD代表语音活动检测。它的作用是区分声音和其他任何东西,包括沉默。在VoIP应用中,它可以用作最小化传输的音频分组数量的工具。如果没有人说话,则可以停止音频数据包的流动,或者至少改变为低得多的舒适噪声数据包
1026 0
|
编解码 网络协议 机器人
顶顶通电话机器人开发接口对接大语言模型之实时流TTS对接介绍
大语言模型通常流式返回文字,若一次性TTS会导致严重延迟。通过标点断句或流TTS可实现低延迟的文本到语音转换。本文介绍了电话机器人接口适配流TTS的原理及技术点,包括FreeSWITCH通过WebSocket流TTS放音,以及推流协议和旁路流对接的详细说明。
1149 1
|
存储 视频直播
FreeSwitch中的录像和录音设置
FreeSwitch中的录像和录音设置
|
开发工具 C++
FREESWITCH 怎样添加自定义模块
FREESWITCH 怎样添加自定义模块
|
关系型数据库 MySQL 数据库连接
FreeSWITCH通过mod_mariadb原生连接MySQL
FreeSWITCH通过mod_mariadb原生连接MySQL
1339 0
真正解决办法:编译freeswitch错误,You must install libavformat-dev to build mod_av
真正解决办法:编译freeswitch错误,You must install libavformat-dev to build mod_av
668 1
|
数据库
FreeSWITCH 发起呼叫和学习使用命令行帮助
FreeSWITCH 发起呼叫和学习使用命令行帮助

热门文章

最新文章

下一篇
开通oss服务