WebRTC端点检测使用中遇到的部分问题汇总

背景

端点检测技术作为语音识别等技术预处理截断的一项非常重要的技术一直以来是业界研究的重点,也可以说语音信号的端点检测精度直接影响后面进行的语音识别精度,而目前的端点检测算法主要受到以下几个因素的制约:

  1. 噪声环境: 待检测语音信号中的环境噪声强的时候其端点检测精度就明显下降,所以目前采用的主要技术是麦克风阵列技术实现噪声的抑制,从而获得信噪比较高的语音信号作为端点检测的输入。
  2. 多说话人: 在待检测语音中存在多人同时说话时端点检测的精度也会明显下降,同样,目前业界主要还是通过麦克风阵列技术实现说话人定向、波束成形、信号增强等技术手段获得较为理想的语音信号。(麦克风阵列技术也是一项非常重要的技术。本人毕业设计就是做的移动机器人声源定位)

就目前端点检测算法来说主要有基于能量阈值的检测方法(能量方法又包括多中能量)、基于能量与过零率的检测方法、基于谱熵的检测方法、基于倒谱的检测方法等,这些方法在实际应用中对于环境的泛化能力较弱,算法的鲁棒性较低,主要受噪声、音量、远近场的不同等因素影响。

正文

几个月前公司的一个项目中需要做一个鲁棒性较好的端点检测算法来更换公司在用的基于能量与过零率实现的端点检测算法,经过一段时间的折腾(为什么说折腾呢?因为公司也没告诉我用什么算法,所以全靠我自己摸索了),最后我决定用Google的开源项目WebRTC试试(无奈,我只是个来实习生啊,苦)经过一个月的探索终于有点眉目了,我通过修改了WebRTC底层算法的部分逻辑实现又经过无数次实际环境中的测试终于有一天项目经理说合格了(激动的心,颤抖的手啊)。下面我将使用WebRTC的过程中遇到的部分问题分享出来供大家参考:

首先WebRTC的VAD模块返回的是每一帧音频数据是否为语音信号的标志位,也就是直接使用的话接收到的是一帧一帧拼接的语音数据,在实际项目中使用时不能满足实际需要,听到的声音断断续续的,所以这时就需要在WebRTC中VAD算法的基础上再进行一次封装,这次封装主要解决的为题是按照实际应用中的那样将每帧音频按照语音,非语音分成完整的段。

由于我们的使用环境噪声较大,信噪比较低,实际测试中端点检测时出现了将大量噪声判别为语音的情况,所以此时我通过修改WebRTC底层判别语音信号的能量阈值(vad_core.h)KMinEnergy,这样就可以过滤掉大部分低能量的噪声对端点检测算法的影响。

其次在WebRTC的VAD中判别语音还是非语音的高斯模型中在计算六个频段的似然比之后与设定的阈值比较时,分为两种情况:

  1. 当六个频带的局部似然比阈值超过阈值门限时判别为语音;
  2. 当六个频带的似然比阈值加权求和后得到的一个全局阈值超过预先设定的阈值门限时判定为语音。

原始的算法当满足这两者之一时就可以认为此帧为语音帧,通过实验这样做的方式得到的效果并不好,所以我通过屏蔽局部逻辑判断进行了测试,实验表明这样做效果更好,端点检测精度更高。

最后在修改上述地方后我通过开放似然比阈值接口实现了再多种环境下的端点检测模式的设定。

今天就先记录到这里,后期我再详细的描述WebRTC算法的工作流程和低信噪比环境下的优化。

WebRTC端点检测使用中遇到的部分问题汇总相关推荐

  1. python分割语音端点检测_python的webrtc库如何实现语音端点检测 科大讯飞输入法PC体验版下载:语音+手写+...

    python的webrtc库如何实现语音端点检测 科大讯飞输入法PC体验版下载:语音+手写+ 2018-03-05 出处:网络 整理:zhishizhan.net 延伸:科大讯飞输入法PC体验版下载: ...

  2. 基于双门限法的端点检测

    基于双门限法的端点检测 代码+论文+PPT+仿真结果下载地址:下载地址 摘要 语音端点检测是指从一段语音信号中准确的找出语音信号的起始点和结束点,它的目的是为了使有效的语音信号和无用的噪声信号得以分离 ...

  3. 小波变换学习~语音端点检测

    参考: 现代语音信号处理,p97 Precise detection of speech endpoints dynamically: A wavlet convolution based appro ...

  4. 语音识别-过零率和短时能量-端点检测

    端点检测 个人理解 能量与过零数的端点检测算法步骤 语音信号x(n)进行分帧处理 计算每一帧的短时能量,得到语音的短时帧能量 计算每一帧语音的过零数,得到短时帧过零数 考擦语音的平均能量设置一个较高的 ...

  5. 语音识别端点检测matlab,关于语音识别的端点检测问题

    这是我的端点检测程序,语音是6个连续字,执行后却只检测了一个字的端点,求大神指点哪里的错 %读入语音 [x,fs,bits]=wavread('D:\voice\openleft.wav'); %增益 ...

  6. webrtc静音检测

    webrtc静音检测 语音检测 代码 webrtc静音检测二 语音检测 很多语音检测的比如科大讯飞是使用pcm或者wave传输过去进行语音识别的,流量很大,使用客户端的时候可以使用静音检测算法来减小传 ...

  7. 【语音识别】语音端点检测及Python实现

    [语音识别]语音端点检测及Python实现 一.语音信号的分帧处理 二.端点检测方法 2.1.短时能量 2.2.短时过零率 三.Python实现 从接收的语音信号中准确检测出人声开始和结束的端点是进行 ...

  8. matlab浊音段和清音段,基于Matlab编写的语音端点检测1

    wavread 基于Matlab编写的语音端点检测 专业: 班级: 姓名: 指导教师: 2011年6月18日 一.实验目的 1.学会MATLAB的使用,掌握MATLAB的程序设计方法: 3.掌握语音处 ...

  9. python信号端点检测_语音信号端点检测

    语音信号的端点检测方法有很多种,简单的方法可以直接通过计算出声音的音量大小,找到音量大于某个阈值的部分,认为该部分为需要的语音信号,该部分与阈值的交点即为端点,其余部分认为非语音帧. 计算音量 计算音 ...

最新文章

  1. SpringBoot2.x 官方推荐缓存框架-Caffeine高性能设计剖析
  2. 无限轮播的N+2 策略
  3. 三步更改win7开机密码
  4. C语言中的结构体,联合,链表和枚举,位域(上)
  5. 剑指 Offer 43. 1~n 整数中 1 出现的次数(数位dp)
  6. android 天气接口简书,天气API接口说明
  7. 大地win11 32位旗舰版镜像v2021.08
  8. Excel之【保护工作表】功能(工具----保护) ------可以防止修改格式,删除行。只能在里面填写数据。
  9. 阿凡题UWP的源码公开
  10. 前端 Vue 浏览器调试工具 Vue.js devtools 安装
  11. html5 contenteditable 可编辑属性
  12. (转)ENVI端元提取(MNF→PPI→n-D Visualizer)
  13. 活动报名 | 中科院信工所陈恺:人工智能安全攻防对抗
  14. Linux LVS 负载均衡群集
  15. SpringBoot导出数据到Excle中
  16. node.js 用typescript实现 图片,音频压缩工具
  17. FPGA开发与ARM(单片机)开发的区别
  18. android iphone 记事本,苹果iPhone手机上有哪些便签记事本类app值得推荐?
  19. OSChina 周四乱弹——死了都要try,不catch够我不痛快(多图慎入)
  20. 计算机讲评试卷教案,【作业批改记录检查情况总结】_教师备课、作业批改及记录、试卷批阅与讲评检查情况总结...

热门文章

  1. 沉入海底2年的微软数据中心浮出水面:故障率只有陆地上的1/8,除了长点贝类和藻类完全没问题...
  2. 弱电工程光纤传输基础知识
  3. 数据中心即服务(DCaaS):建筑设计师的下一个重大机遇
  4. 计算机机房消防安全工作应急预案
  5. 成功解决IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (100,)
  6. HighNewTech:LL / GCP BOOTH at CES 2019 - January 8-11, 2019 - Westgate Convention Center Las Vegas
  7. Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
  8. Sql:成功解决将sql输出的datetime时间格式转为常规格式
  9. select 实现server I/O多路复用通信
  10. 设计模式——桥梁模式