freeswitch的模块中mod_vad的使用说明

简介: 介绍mod_vad是一个freeswitch的模块,实现VAD录音和放音支持打断,vad和asr集成,tts放音支持等。

mod_vad是一个freeswitch的模块,实现VAD录音和放音支持打断,vad和asr集成,tts放音支持等。


vad


<min_speak_ms> <min_pause_ms> <recordfile> [<max_waiting_ms>] [max_recording_ms] [zoom] [playfile] [play_retry]
复制代码


  • min_speak_ms 检测到声音多久就认为开始说话
  • min_pause_ms 检测到静音多久就认为说话停止
  • recordfile 录音文件名
  • max_waiting_ms 最大等待时间,就是多久没检测到声音就退出。
  • max_recording_ms 最大录音长途
  • zoom 录音音量放大或者缩小 百分比, 100就是放大1倍。200就是放大2倍。 -10 就是降低10%。
  • playfile 放音文件,不需要放音可以不设置这个参数。
  • play_retry 重播次数, 不重播设置0


通道变量

  • vad_param_error 参数错误,最少需要 3个参数
  • vad_max_recording_time 录音时间超过 max_recording_ms ,说话还没停止。
  • vad_timeout 等待超过 max_waiting_ms 还没开始说话
  • vad_createrecordfile_error 创建录音文件失败


dialpaln 使用例子

<extension name="public_did">
  <condition field="destination_number" expression="^(999)$">
  <action application = "answer" />
  <action application="vad" data="100 1000 录音1.wav 5000 10000 0 欢迎.wav 3"/> 
  <action application="playback" data="录音1.wav" />
  <action application="vad" data="100 1000 录音2.wav 5000 10000 0 asr处理结果.wav 3"/> 
  </condition>
</extension>
复制代码


start_asr 说明


start_asr 是一个异步函数,只需要执行一次,启动后会一直进行VAD和ASR,直到调用sotp_asr

start_asr [<min_speak_ms>] [<max_speak_ms>] [<min_pause_ms>] [<max_pause_ms>] [<pause_play_ms>] [<threshold>] [<recordpath>] [<volume>]

  • min_speak_ms 最小说话时间,默认值100,单位毫秒,说话时间小于这个值,会被认为是无效声音。
  • max_speak_ms 最大说话时间,默认值10000,单位毫秒,说话时间超过这个值,就停止录音,直接提交ASR服务器识别。
  • min_pause_ms 最小停顿时间,默认值300,单位毫秒,默认值用户停顿时间超过这个值,会提交到ASR识别。识别完成后发送asrprogress事件。 完成后的意思是 ASR服务器可能 300-800ms才返回识别接口。
  • max_pause_ms 最大停顿时间,默认值600,单位毫秒,用户停顿时间超过这个值,认为一句话说完,所有识别完成后发送asrmessage事件。所有识别完成后的意思是,所有提交到asr服务器的识别结果都返回了。 注意 min_pause_ms 必须大于min_pause_ms。
  • pause_play_ms 触发暂停放音时间,默认值0(不开启自动打断),单位毫秒,建议设置200-1000,用户说话时间超过这个值,就暂停放音。 有时候用户一直持续说话,中间没停顿,所以还没提交到ASR服务器识别,不能使用关键词打断,可以先暂停放音。
  • threshold VAD阈值,默认0,建议不要设置,如果一定要设置,建议 2000以下的值。
  • recordpath 录音文件路径,如果不设置,就不会把录音存到文件,如果设置了会保存录音到文件,文件格式是 recordpath/被叫号码Unique-ID序号.wav
  • volume 音量标准化的值。0-100,0不使用音量标准化,其他值 音量把录音音量调整到这个值后,再提交ASR识别。
  • filter_level 防止干扰等级。0-1.0之间,建议 0.3。
  • asr_configure_filename asr配置文件名。可以不同呼叫使用不同的ASR配置。


custom_playback 说明


custom_playback <file> [<wait>] [<retry>] [<allow_interrupt>]

  • file 放音文件,支持URL,和多文件放音。
  • wait 单位毫秒,放音结束后等待时间。用于等待用户说话。
  • retry 重播次数。就是wait时间内用户不说话,就重新播放声音。
  • block_asr -1 放音的时候不识别,放音等待用户说话的时候开启识别,比如 playback(file=”1.wav”,wait=5000) 就是播放 1.wav的时候不识别 等待用户时候的时候开始识别。
    block_asr 0 就是现在的模式 ,一直识别
    block_asr >0 单位毫秒,放音前面多少秒不识别。
  • allow_interrupt 本次放音是否允许自动打断,0允许,-1不允许,大于0 播放多久才允许自动打断。 默认自动打断时间是 start_asr的pause_play_ms参数指定的。
    stop_asr
    停止ASR。


API uuid_console_playback


用于播放控制,用户说话开始,先暂停播放,如果说的是无效声音,可以恢复播放。

uuid_console_playback <uuid> <cmd>

  • cmd 参数内容
  • pause 暂停播放
  • resume 恢复播放
  • stop 停止播放


API uuid_console_asr


uuid_console_asr 用于暂停ASR,比如放音的时候暂停ASR

uuid_console_asr <uuid> <cmd>

  • cmd 参数内容
  • pause 暂停asr
  • resume 恢复asr


esl 订阅 事件


CUSTOM asrprogress asrmessage

下面的esl消息,为了方便查看我去除了无关字段

| ``` +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Event-Subclass: asrprogress Event-Name: CUSTOM asrtype: aiui asrtext: 第一句话。 asrtextall: 4.第一句话。; asrelapse: 594 asrerror : 0 volumegain: 0.984585 recordms: 1175 recordfile: 4 Channel-Name: sofia/external/abc@192.168.31.210 Unique-ID: 34a719ed-2f22-4349-b9ed-a3329ee875e2  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Event-Subclass: asrprogress Event-Name: CUSTOM asrtype: aiui asrtext: 第二句话。 asrtextall: 4.第一句话。;5.第二句话。; asrerror : 0 asrelapse: 360 volumegain: 1.396321 recordms: 1169 recordfile: 5 Channel-Name: sofia/external/abc@192.168.31.210 Unique-ID: 34a719ed-2f22-4349-b9ed-a3329ee875e2  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Event-Subclass: asrprogress Event-Name: CUSTOM asrtype: aiui asrtext: 第三句话。 asrtextall: 4.第一句话。;5.第二句话。;6.第三句话。; asrelapse: 359 asrerror : 0 volumegain: 1.567299 recordms: 1208 recordfile: 6 Channel-Name: sofia/external/abc@192.168.31.210 Unique-ID: 34a719ed-2f22-4349-b9ed-a3329ee875e2   +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Event-Subclass: asrmessage Event-Name: CUSTOM asrtext: 4.第一句话。;5.第二句话。;6.第三句话。; speakms: 3202 Channel-Name: sofia/external/abc@192.168.31.210 Unique-ID: 34a719ed-2f22-4349-b9ed-a3329ee875e2

| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
#### [](http://www.ddrj.com/smartivr/mod_vad.html#%E8%AF%B4%E6%98%8E "说明")说明
-   asrprogress 说话停顿min_speak_ms时间后返回的识别结果。
-   asrtextall 包含之前停顿的识别结果的组合。 格式是 录音序号.识别结果;这样组合多个识别结果。
-   asrelapse asr识别服务器消耗的时间,单位毫秒。
-   volumegain 音量标准化放大或者缩小的倍数。
-   recordms 录音时间,单位毫秒。
-   recordfile 录音序号


相关文章
|
算法 Java 开发工具
Magisk模块:Audio HeadQuarter(使用前仔细阅读)
Magisk模块:Audio HeadQuarter(使用前仔细阅读)
733 0
|
存储 缓存 网络协议
freeswitch使用说明
freeswitch使用说明
797 1
freeswitch使用说明
|
Web App开发 存储 编解码
Freeswitch关于支持jsip的配置
1、freeswitch安装过程(安装过程省略,运行环境为centos7,freeswitch1.6.5)
|
2月前
|
编解码
FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作
《FFmpeg开发实战》书中讲解了音视频封装格式,重点介绍了TS,因其固定长度和独立解码特性,常用于HLS协议。HLS通过m3u8文件指示客户端播放TS分片。SRS服务器在转换MP4至TS时,会在每个TS包头添加SPS和PPS帧,保证解码完整性。这一过程在SrsIngestHlsOutput::on_ts_video函数中体现,调用write_h264_sps_pps和write_h264_ipb_frame完成。详细实现涉及SrsRawH264Stream::mux_sequence_header函数,遵循ISO标准写入SPS和PPS NAL单元。
54 0
FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作
|
Linux
ffmpeg编译配置srt模块
ffmpeg编译配置srt模块
300 0
ffmpeg编译配置srt模块
|
编解码 编译器 C语言
【FFmpeg】ffmpeg 命令查询一 ( 版本 | 编译配置 | 复用格式 | 编解码器 )(一)
【FFmpeg】ffmpeg 命令查询一 ( 版本 | 编译配置 | 复用格式 | 编解码器 )(一)
2173 0
【FFmpeg】ffmpeg 命令查询一 ( 版本 | 编译配置 | 复用格式 | 编解码器 )(一)
|
Shell Android开发 开发者
【Magisk模块】全局120hz 面具模块
【Magisk模块】全局120hz 面具模块
1433 0
|
XML 算法 Java
FreeSWITCH 空号检测 模块 mod_da2使用说明
mod_da2是顶顶通开发的一个FreeSWITCH回铃音检测模块(通过分析FreeSWITCH早期媒体的声音,得到被叫号码状态【可以识别到回铃音、忙音、彩铃、空号、通话中,关机、停机,语音信箱和留言等各种号码状态】)
247 0
|
开发工具 C++
FREESWITCH 怎样添加自定义模块
FREESWITCH 怎样添加自定义模块
|
Linux Perl
FreeSwitch 一些模块的安装
这里列出来 安装libyuv libvpx opus mod_av 等模块的代码方便大家使用