首页 > 其他分享 >FreeSWITCH vad 模块介绍

FreeSWITCH vad 模块介绍

时间:2022-09-29 11:22:20浏览次数:102  
标签:asr 模块 放音 录音 vad ms FreeSWITCH 识别

介绍

mod_vad是一个freeswitch的模块,实现VAD录音和放音支持打断。

下载

mod_vad

安装

  1. libmyauth.so copy 到 fs/ib 目录 一般是 /usr/local/freeswitch/lib
  2. mod_vad.so copy 到fs/mod 目录/usr/local/freeswitch/mod
  3. machinecode chmod +x machinecode 然后执行他,获取机器码
  4. 发生机器码到 [email protected],申请授权码,授权文件 放到 /etc/vad.license 文件内

使用

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 触发暂停放音时间,默认值1000,单位毫秒,建议设置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>]

  • file 放音文件,支持URL,和多文件放音。
  • wait 单位毫秒,放音结束后等待时间。用于等待用户说话。
  • retry 重播次数。就是wait时间内用户不说话,就重新播放声音。

stop_asr

停止ASR。

API uuid_console_playback

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

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

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/[email protected]
    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/[email protected]
    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/[email protected]
    Unique-ID: 34a719ed-2f22-4349-b9ed-a3329ee875e2


    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Event-Subclass: asrmessage
    Event-Name: CUSTOM
    asrtext: 4.第一句话。;5.第二句话。;6.第三句话。;
    speakms: 3202
    Channel-Name: sofia/external/[email protected]
    Unique-ID: 34a719ed-2f22-4349-b9ed-a3329ee875e2

说明

  • asrprogress 说话停顿min_speak_ms时间后返回的识别结果。
  • asrtextall 包含之前停顿的识别结果的组合。 格式是 录音序号.识别结果;这样组合多个识别结果。
  • asrelapse asr识别服务器消耗的时间,单位毫秒。
  • volumegain 音量标准化放大或者缩小的倍数。
  • recordms 录音时间,单位毫秒。
  • recordfile 录音序号

标签:asr,模块,放音,录音,vad,ms,FreeSWITCH,识别
From: https://www.cnblogs.com/wuchangsoft/p/16740850.html

相关文章

  • logging日志模块
    日志模块log_utils.pyimportlogginglogger=logging.getLogger()#设置日志打印级别.打印该级别及以上的日志信息.logger.setLevel(logging.DEBUG)#创建指定的......
  • 关于time模块的学习总结
    1、Python中时间格式有三种:时间戳(Timestap)、时间元组(Struct_time)、字符串时间(Formatstring)。下面来介绍下这三个时间时间戳(Timestap):例:1importtime2print(time.ti......
  • SSM整合功能模块开发
    pojo层:pojo表结构,在domain包中新建一个pojo类对用数据库中的表生成get和set及无参有参构造  dao层:   service层:接口  实现类  controller层......
  • nginx架构分析之 模块化
    Nginx涉及到的模块分为核心模块、标准HTTP模块、可选HTTP模块、邮件服务模块以及第三方模块等五大类。核心模块核心模块是指Nginx服务器正常运行时必不可少的模块,它们提供了......
  • Python之telnetlib模块
    telnetlib是python标准库中的一员,我们可以使用该模块以telnet的方式与服务器交互。请观察下面示例了解它的用法:importtelnetlibdefrun_telnet(host,username,password,......
  • JavaDoc
    packagebase;publicclassDoc{Stringname;/****@paramname;*@return;*@throwsException;*///由/**回车打出......
  • python-正则表达式re模块
    07、正则表达式学习正则表达式操作字符串re模块是用C语言写的没匹配速度非常快其中compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象,该对象拥有......
  • python-简单模块的使用
    提示:简单模块了解掌握@目录uuid模块calendar日历模块time模块datetime模块os模块sys模块random模块json和pickle模块jsonpickle模块hashlib模块configparser模块subproc......
  • Python错误:模块导入失败from scrapy.xlib.pydispatch import dispatcher
    问题描述:python中使用pip安装模块时,出现:Fatalerrorinlauncher:Unabletocreateprocessusing'"' 解决办法: 原因分析:scrapy版本不对。测试了一下,发现最......
  • cometd源码阅读-SecurityPolicy授权模块(十二)
    使用BayeuxServerbayeuxServer=...;bayeuxServer.setSecurityPolicy(newSecurityPolicy(){....});接口定义publicinterfaceSecurityPolicy{/***......