实时通信服务中的语音解混响算法实践
导读:
随着音视频通信会议越来越普及,与会各方在不同环境中遇到了越来越明显且差异的混响场景,譬如大会议室场景、玻璃会议室场景和小房间且隔音材料不佳场景等。为了保证更好的听音可懂度和舒适度,通信中的语音解混响需求愈来愈重要且紧迫。本文讲解了网易云信在语音解混响以及提升通信效果方面的一些研发进展和观点,重点研究基于自适应结合双麦信号相关性的方案,总体目标是在保真语音情况下提升解混响效果。
文|张龙 网易云信资深算法工程师
一、语音混响的相关介绍
(一)混响介绍
下图描述了语音混响产生的原因和过程,信号中混响程度取决于:
房间密闭形态;
房间大小;
反射材质;
说话人距离麦克风距离等。
(注意区分回声含义)
如下图,根据到达时间的先后,混响一般分为:直达声+早期混响+后期混响,他们在声学理解上有不同的意义。
下图展示语音混响效果:
(二)混响和解混响研究发展历程
最初的研究来自对房间内声音传播现象的基础研究,随后应用于音乐厅、教室等空间的声学设计,为了更好地传播声音包括音乐、人声等;
接下来研究了混响对于语音可懂度的影响;
一些研究者关注混响带来的正向收益:提升语音自然度、层次感和空间感等,包括可懂度提升。研究者通过人造混响感来提升多样体验,譬如娱乐、游戏和音乐领域;如下图,网易云信基于 Feedback Delay Network(反馈延时网络)方案提供人造混响感的能力;
70 年代开始,语音解混响的研究主要关注混响对通话和录音的负面效果,提升可懂度和质量;
04~05 年之后,免提通信和视讯通话会议兴起,结合 11 年后语音助手(尤其强调远场)的发展,语音解混响的研究和应用越来越广泛。
我们根据语音解混响的应用将评估性能的指标进行了分类:
二、重点算法和研究进展
结合算法实践和运算考虑,当前网易云信从传统算法开始实现语音解混响,配合降噪算法提升通信体验。
下图将语音解混响算法根据信号模型和目标进行了大致分类:
本文主要关注以下重点:
线性预测类演进算法;
相关性抑制类算法;
然后讨论后续结合深度学习的计划。
(一) AWPE 算法
模型转换可得:
Xt^m 表示第 m 个麦克风在 t 时刻接收到的信号,Lm 表示麦克风数目;hk^m表示信源 s 到达第 m 个麦克风的冲击响应,Lh 是冲击响应长度;nt^m 表示第 m 个麦克风在 t 时刻接收到的加性噪声信号成分。
其中
表示麦克风 m 在 t 时刻前的 D 时刻及之前接收到的数据。dt^m 是前述前期反射信号,即解混响的目标信号;当然也有直接将求解源信号 s 作为目标信号的模型,但不是主流,因为前期混响一般有利于听觉和识别系统。
继续求解上述模型可得:
对上述模型进行时频域转换并引入 Recursive Least Squares 转换可得:
求解上述目标函数得到如下解:
上述求解可总结为如下步骤:
(二)相关性降噪解混响算法介绍
基于后期混响信号部分是散射场噪声的假设,利用麦克间散射场噪声相关性估计方法计算后期混响成分大小,然后采用谱减法估计增益的方式解混响。经验表明,这一类算法在降散射场噪声方面性能更优。
信号模型:
计算如下中间结果:
最后得到如下降噪增益,施加增益至输入信号可解混响目标:
(三)综合应用
对于通信任务,目前网易云信重点关注 AWPE 串接降噪的方案实现;同步考虑在散射场噪声强的场景结合 CDR 抑制算法提升性能;
通信中上行必然包含降噪模块,解混响算法需要配合降噪实现联合调优的性能,一般通过模块和参数调试实现。
智能语音任务,一般采用线性语音解混响作前期增强处理:
未来趋势:
三、算法实现和运算优化
关于上述第二节中算法具体实现中的关注点:
设置好 buffer 存取机制(涉及麦克数目、历史帧数、频点等),降低计算耗时;RLS 算法注意使用 Woodbury matrix identity 规则替换矩阵求逆;
如公式所示,这一类统计信息可以尝试用平滑更新机制代替;
注意部分矩阵尽量采用对角化,甚至实数化实现计算量降低;
可以通过表格化,频率索引减少计算量。
——设定理想散射场噪声模型。
四、结果汇报和后续展望
(一)当前结果展示
当前结合降噪我们设置解混响阶段优先语音保真;当前算法处理混响能力约 800ms~1s,最重要的调试参数是:遗忘因子和 block 数目。
(二)后续展望
通信领域而言:
遗忘因子的自适应实现方案;
深度学习方案实现语音解混响和降噪的融合,替代目前结合传统算法的方案。
网易云信当前优化:
未来:
参考文献
[1] Xiang, Teng, Jing Lu, and Kai Chen. "Multi-channel adaptive dereverberation robust to abrupt change of target speaker position." The Journal of the Acoustical Society of America 145.3 (2019): EL250-EL256.
[2] Taniguchi, Toru, et al. "Generalized weighted-prediction-error dereverberation with varying source priors for reverberant speech recognition." 2019 IEEE Workshop on Applications of Signal Processing to Audio and Acoustics (WASPAA). IEEE, 2019.
[3] Tang, Xinyu, et al. "A Time-Varying Forgetting Factor-Based QRRLS Algorithm for Multichannel Speech Dereverberation." 2020 IEEE International Symposium on Signal Processing and Information Technology (ISSPIT). IEEE, 2020.
[4] Schwarz, Andreas. Dereverberation and Robust Speech Recognition Using Spatial Coherence Models. Diss. Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU), 2019.
作者介绍
张龙,就职于网易云信音视频实验室,目前从事音频信号增强和动态增益控制等研发工作。
实时通信服务中的语音解混响算法实践相关推荐
- 双麦克风语音去混响算法C代码实现(附github项目链接)
1. 算法依据 算法的依据是论文<Multi-Channel Linear Prediction Speech Dereverberation Algorithm Based on QR-RLS ...
- java event sourcing_使用Spring Cloud和Reactor在微服务中实现EventSourcing -解道Jdon
使用Spring Cloud和Reactor在微服务中实现Event Sourcing 当在微服务架构中构建应用时,状态管理成为分布式系统的问题,相比于传统monolithic应用,将状态管理通过事务 ...
- 语音去混响算法之WPE( Weighted Prediction Error for speech dereverberation)
目录 简介 信号模型 WPE 算法(Weighted prediction error) TVG 模型(time-varying Gaussian model) 目标函数 迭代求权重离线解 参考文献 ...
- 微服务中常用的限流算法(一)
一个业务系统在指定配置的服务器上,可以承载的容量是一定的,当请求流量超过系统的容量后,系统就会变得不稳定,可用性下降,为了保证系统的可用性,需要将系统能够承载容量之外的流量进行丢弃,这样虽然会导致部分 ...
- 语音去混响之MCLP算法
概述 MCLP(Multichannel Linear Prediction)算法也被称为WPE(Weighted Prediction Error)算法,是实现语音信号去混响的一种方法.本文关注MI ...
- java break 在if 中使用_java中使用国密SM4算法详解
前言 上次总结了一下加密算法的分类(加密算法有集中形式,各有什么不同?),现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法.对称加密,密钥长度和分组长度均为128位. ps:我们既可 ...
- 苹果宣布将把语音助手Siri整合到Apple Music服务中
10月19日消息,据国外媒体报道,在周二举行的苹果发布会上,苹果宣布将把语音助手Siri整合到Apple Music服务中. 此外,该公司还将推出Apple Music Voice Plan套餐计划, ...
- 十三. 四轮车驱动开发之五: 由浅至深理解6轴陀螺仪姿态解算算法<中>
十二.四轮车驱动开发之五: 由浅至深理解6轴陀螺仪姿态解算算法(上) 十三.四轮车驱动开发之五: 由浅至深理解6轴陀螺仪姿态解算算法(中) 十四.四轮车驱动开发之五: 由浅至深理解6轴陀螺仪姿态解算算 ...
- matlab中gad,10大经典算法matlab代码以及代码详解【数学建模、信号处理】
[实例简介] 10大算法程序以及详细解释,包括模拟退火,禁忌搜索,遗传算法,神经网络.搜索算法. 图论. 遗传退火法.组合算法.免疫算法. 蒙特卡洛.灰色预测.动态规划等常用经典算法.是数学建模.信号 ...
最新文章
- Service 层和 Dao 层有必要为每个类都加上接口吗?
- Mysql:查询当天、今天、本周、上周、本月、上月、本季度、本年的数据
- 场景多、变种快、粒度细,网易易盾是如何有效解决这些内容安全难题的?
- vue 自己写上传excel组件_vue结合elementui组件 el-upload 上传excel表格(二)
- overfitting(过度拟合)的概念
- SQL Server数据库同步问题分享[未完,待续](一)
- 老是担心数学学不好?这些基础是时候正视了!
- 如何看云服务器性能,从存储速度看云服务器性能测试
- java 一元稀疏多项式简单计算器_一元稀疏多项式简单的计算器
- BGP(边界网关协议)
- 6.3交换器(Exchangers)
- java range注解_最全的Java Spring注解
- PPPoE技术白皮书
- 网络安全状况分析报告-2019年5月
- 王家林百万大数据人才之路
- mysql 修改校对规则_mysql的校对规则引起的问题分析
- NtripShare OpenSource/NtripShare GNSS共享计划 -- JT808终端模拟器源码(四)
- MySQL pt工具应用
- DC/DC直流隔离升压电源模块5V12V24V转60V/100V/110V/150V/200V/250VDC
- 哪一款电容笔比较好用?平板电脑高性价比电容笔推荐
热门文章
- HTML哪些是块级元素,哪些是行内元素、
- Thread如何中断
- dede:arclist 不能调用文章的副栏目或多个副栏目的解决方法
- 音乐文件基本格式,wave,mod,midi,mp3,wma,flac
- 单细胞数据库PanglaoDB使用指南
- mysql gtid 5.7_MySQL5.7之GTID复制
- 编程语言学习--C语言学习资料
- 北斗导航 | GPS 信号频谱分析
- android 的弱网测试,Android APP弱网测试问题和解决分析
- 保护 wp cron.php,wp-cron.php任务的定时执行和控制