本文有部分演示音视频请移步 字节跳动技术团队微信大众号 进行观看

从视频会议到远程医疗,从连麦开黑到陪伴社交,疫情常态化加快了线下活动线上化,逐步改变了人们的出发生活办法。其间,音频质量很大程度上影响着通话体会,而噪声又很大程度决议音频质量。比方,居家工作场景,就流传着“居家工作,必有邻居装修”的定律。也是由于装修声会很大程度影响参加效率,所以对居家工作的同学带来了很大的影响。火山引擎 RTC,集成了自研的深度学习降噪计划,来应对游戏、互娱、会议等实时音视频沟通场景下的噪声影响。

让咱们看一下 RTC AI 降噪在会议、游戏、居家场景下的降噪作用比照。

【点击进入原文观看演示音视频】

经过上面的比照作用可以明显看到不同噪声对线上出产、生活场景的影响,以及经过 AI 降噪到达的降噪作用。RTC AI 音频降噪采用了经典的CRN网络结构【参考文献1 】作为降噪结构。CRN 网络结构由 Encoder、Recurrent Layer 和 Decoder 三部分组成。这种结构兼具了 CNN 的深层特征抽取才能和递归网络的回忆才能,体现出了比纯 CNN 网络或者纯 GRU 网络更好的降噪才能。

火山引擎 RTC 音频 AI 降噪的运用与实践

CRN网络结构

在详细落地到产品的进程中,咱们在上述根底模型中,处理了实践场景中呈现的五大问题:

1. 怎么应对各种复杂的设备,多样的环境

2. 怎么在满意低延时条件下,提高模型作用

3. 怎么在满意低核算量条件下,提高模型作用

4. 怎么平衡强降噪和高保真

5. 怎么应对对音乐的损害

经过处理上述问题,可以有用提高算法的速度、实时性和稳定性,确保在语音无损害的状况下最大程度地实现噪声按捺,提高实时音视频场景,特别是会议、音乐等复杂场景下的互动体会。下面详细展开讲下咱们是别离怎么处理上述五大问题的。

一、练习数据增广

在咱们实践生活中,降噪算法所需求面临的场景是十分复杂多样的。

拿“会议”场景举例,开会环境的多样性给降噪算法带来了不少挑战:在座位上开会,设备会收集到邻座工位上的说话声,此刻咱们期望算法能去除一定的背景说话人声;在会议室中开会,由于说话人离麦克风的间隔各不相同,此刻降噪算法面临着多人声、远间隔拾音、混响的难题;假如是在公交、地铁、高铁上开会,除了人声,还会引入车辆信号、报站等声响。还有比方在室内玩游戏运用游戏语音的比方,此刻,场景中的噪声除了环境噪声,还有敲击屏幕或键盘、拍桌子等各类噪声,此刻就需求降噪算法可以尽量按捺足够多类别的噪声。

火山引擎 RTC 音频 AI 降噪的运用与实践

不仅如此,在不同环境下常用的设备也是不尽相同的。常用设备首要可以归类为以下几类:

火山引擎 RTC 音频 AI 降噪的运用与实践

除了运用场所有所不同,另外一个首要差异点在于不同设备的收集特性不同,而且自带了不同的音频前处理算法,以现在主流的安卓手机为例,往往出厂就自带了强按捺降噪算法,但在实践体会中仍然存在噪声较多以及人声损害问题,那么就需求咱们的降噪算法去适配这一类“二手”音频数据,包含需求去覆盖残留形状的噪声数据,以及损害形状的人声数据。

除此之外,个人外接设备也需求特别小心,比方有线耳机或许会带来高频噪声,而蓝牙耳机或许引入衔接不稳定的问题,而且降噪耳机还携带有额外的音频处理才能。

下为耳机杂音噪声降噪前后的体现。

【点击进入原文观看演示音视频】

咱们将在数据增广进程中侧重应对这类问题。将增广中噪声的类型打上标签、对不同的场景运用不同的增广装备文件即可装备不同的练习增广计划。下面简单阐明一下咱们常用的练习数据增广手法。

基本增广手法包含:

  • 音量调整:现实生活中收集到的音量巨细往往不同,用于模仿不同收集音量的状况;
  • 凹凸通滤波:不同设备的有用频率不同,如蓝牙耳机往往只有 4k 的有用频段;
  • 削波模仿:模仿爆音之后的音频作用;
  • 房间冲击呼应:模仿不同房间下的混响场景;
  • 破音信号模仿:添加对丢帧信号的模仿
  • 模仿噪声改变:模仿不同噪声环境,如常见场景的噪声叠加和改变;

咱们近期针对语音中的啸叫信号侧重进行了模仿和处理。经过线下收集,以及线上仿真模仿的办法生成了大量的不同啸叫周期、频率规模的啸叫语音,并以较低的信噪比交融进原始语音中。

火山引擎 RTC 音频 AI 降噪的运用与实践

啸叫语音线上模仿

在添加了上述啸叫数据的根底上,咱们又单独对啸叫语音施加强按捺的丢失函数,消除了大部分的啸叫语音。

【点击进入原文观看演示音视频】

咱们测试了各种设备、各种场景下的 500+ 种噪声,均能实现理想的消除作用。

二、紧缩模型核算量

实时率 (Real Time Factor) 是衡量算法的 CPU 消耗的目标。实时通讯下场景,对模型算力要求极为苛刻。为了让模型在移动端可流通运行,咱们首要在特征紧缩、模型精简和引擎加快三个方面进行了改善。

(1) 特征紧缩

在原始的 CRN 的文章中,运用的是短时傅里叶 (STFT) 特征,如 WebRTC 中默认运用的 257 维的 STFT 特征。可是 STFT 在高频处包含的信息量现已较少,依据人耳听觉特性进行频谱紧缩现已是常见的计划,如 RNNoise 中运用 ERB 计划。咱们采用依据梅尔听觉特性设计的滤波器进行频谱紧缩的计划。

火山引擎 RTC 音频 AI 降噪的运用与实践

经过将高维特征紧缩到低维,能将核算量紧缩为原来的 1/3。

(2) 模型精简

如前文所述,咱们运用了 CRN 结构作为首要的结构。为了将整体的模型的核算量进行进一步的紧缩,咱们尝试了许多的战略,首要包含:

  • 将其间的卷积或者转置卷积模块替换为深度可分离卷积或者可分离转置卷积
  • 运用空泛卷积,运用更少层数可以取得更长的感受野
  • 将 GRU 模块替换为分组 GRU 模块
  • 运用稀疏化工具,进一步紧缩通道数的巨细

经过上述一系列优化,模型的核算量被紧缩到数十兆 MACS 的核算量级,模型的参数量在 100K 以内。

(3) 引擎加快

最后咱们在字节跳动的推理引擎 ByteNN 上,与智创语音团队和 AI 平台团队协作,新增了适配音频算法的流式推理才能,来提高设备上的核算效率。首要包含:

  • 架构支撑子图推理 / 提前退出等流式推理才能节约算力
  • 包含卷积 / GRU 等流式算子的支撑
  • ARM / X86 等平台汇编级别优化加快

经过上述手法,现在将端到端的 48K 降噪模型的 RTF 目标在各端机型上都控制在 1% 以内。

三、降低延时

为了确保端到端延时在较低水平,AINR 直接运用 AEC 输出的频域特征作为输入,减少了一次 ISTFT 和一次 STFT 的核算时刻以及引入的(窗长-步长)的延时(一般在 20ms 左右)。然而在试验中咱们发现,由于 AEC 的非线性处理的操作是直接在频谱的操作,导致了 STFT 的不一致性,即原始的 STFT 经过 ISTFT 后再做 STFT 的值与原始值不一致。所以直接运用 AEC 的频域输出(频域特征 1 )作为模型的输入和运用频域特征 2 作为模型输入的处理成果略有不同,前者在单个场景会呈现语音损害。

火山引擎 RTC 音频 AI 降噪的运用与实践

咱们经过一系列的工程手法,处理了这种不一致性,使得处理进程可以绕过上述的 ISTFT 和 STFT 进程,节约了 20 毫秒以上的时刻。如此节约下来的时刻,可用于添加模型的延时,但确保系统的整体延时不会添加。添加模型的延时对区分清子音和噪音有很大的协助。如左、中比方所示,清子音在频谱和听感上和噪声十分挨近,在不知道下文的状况下模型很难做出准确的判别。于是咱们引入 20~40ms 不等的较短延时,运用未来的信息协助模型做当前帧的判别,如右比方所示,参加延时后的非语音段要明显比优化前洁净。

【点击进入原文观看演示音视频】

四、降噪与保真的平衡

降噪作用中,强降噪和高保真往往是天平的两头,尤其是针对小模型。强力的降噪往往会带来部分语音的损害,对语音高保真往往会残留部分的小噪声。比方,在针对 babble 的降噪试验进程中发现,假如采用强力降噪模型,可以把工作室的 babble 类噪声都消除的很洁净,可是针对会议室的远场语音就会带来损害。为了平衡这两者,咱们首要采取了如下的一些战略来改善:

  1. 除掉噪声脏样本:去掉包含“说话声”的噪声样本,防止噪声中包含内容明晰的语音,导致推理时将远场人声误判为噪声。
  2. 输入特征进行起伏规整:确保不同起伏的语音提取的特征值是十分挨近的,除掉起伏的影响。
  3. 在静音段部分运用按捺力度大的丢失函数,而在人声部分运用维护力度更大的丢失函数。来确保非语音段强降噪、而语音段高保真的意图。
  4. 针对小语音段,在核算丢失函数时提高对于语音有损的惩罚力度。

咱们以轻微带噪语音的 PESQ 目标作为语音保真的目标。以纯噪部分的残留噪声均匀分贝作为噪声按捺的目标。下表列出了几次迭代在会议场景下的目标改善。

第一版 第二版 第三版
语音保存 3.72 3.76 3.85
噪声残留(dB) -75.88 -105.99 -111.03

从几个版别降噪模型的客观目标来看,语音维护目标在较小的规模内动摇,噪声残留则不断减少。可以看出 RTC AI 降噪模型在较大程度维护语音的前提下,噪声按捺力度不断提高。

五、实时音乐辨认

在互娱场景,往往有较多的音乐场景。由于部分音乐元素和噪声的特色十分挨近,假如直接运用深度学习降噪模型,音乐会被压制得很卡顿。假如把音乐维护参加模型练习,其他语料中的噪声压制的作用会受到影响。因而,准确辨认出声响是音乐仍是噪声就变得十分重要,能在辨认出音乐之后关闭降噪,一起也不会影响正常场景下的降噪力度。

咱们的音乐辨认模型和【参考文献 2 】办法十分相似。都是在 PANNS 【参考文献3 】的 527 类语音检测的根底上,运用语音、音乐和噪声三类数据进行微调。考虑这类办法的一个首要原因是运用 CNN 对长时语音(4 秒窗长)进行建模,以 0.33 秒为步长输出判别成果,来替代如 GRU 类模型帧级别的输出,从而增强辨认的作用和稳定性。相对于原文,咱们进一步对模型进行了紧缩和裁剪,到达了 4M FLOPS 的核算量 和 20KB 的参数量的尺度,确保在低端的移动设备上可以运行。一起,在进入音乐时,添加 2 秒延时的多帧交融判别以及脱离音乐时 4 秒延时的多帧交融判别,进一步提高了音乐辨认的稳定性。在音乐误辨认率为 0%的状况下,召回率到达了 99.6%。

下图展现了 SIP 场景下的音乐同享场景的一个比方。由于 SIP 场景下,同享音乐和收集信号是混合后再传输的,所以同享的信号和收集的信号运用的是同样的处理通路。在实践测试中,咱们发现即运用很轻量级的传统降噪计划也会对音乐发生损害。经过运用音乐检测,维护相对应的音乐段,可以有用缓解该损害问题。

火山引擎 RTC 音频 AI 降噪的运用与实践

六、作用和目标的比照

经过上述几点的改善,现在无论是主观听感,仍是客观目标,火山引擎 RTC 中的降噪算法现已处于职业抢先位置。

咱们在高中低三种信噪比条件的白噪声、键盘声、babble 噪声、空调噪声四种噪声环境下以及 Windows 和 MAC 设备中,测试了火山引擎 RTC 和职业同类产品的降噪成果的 POLQA 分数。从表中可以看出,无论是在这四种噪声场景上,仍是在不同设备上,咱们的降噪算法均优于同类产品。

火山引擎 RTC 音频 AI 降噪的运用与实践

展望

在运用 AI 降噪之后,咱们可以消除环境噪声带来的各种影响。但除了噪声影响之外,影响语音质量的还包含收集硬件的损害、硬件处理算法的损害、传输通道的损害等等,后续咱们会进一步在软件算法中缓解这些损害,以期到达运用任何硬件均能到达类似录音棚的高音质作用。

参考文献

【1】Tan K, Wang D L. A convolutional recurrent neural network for real-time speech enhancement[C]//Interspeech. 2018, 2018: 3229-3233.

【2】Reddy C K A, Gopa V, Dubey H, et al. MusicNet: Compact Convolutional Neural Network for Real-time Background Music Detection[J]. arXiv preprint arXiv:2110.04331, 2021.

【3】Kong Q, Cao Y, Iqbal T, et al. Panns: Large-scale pretrained audio neural networks for audio pattern recognition[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2020, 28: 2880-2894.

关于咱们

火山引擎 RTC 团队,作为全球抢先的音视频团队,咱们致力于供给全球互联网规模内高品质、低延时的实时音视频通讯才能,现在现已支撑了抖音、TikTok、清北网校、字节系游戏,视频会议等多个场景的运用,服务 10 亿用户,遍及全球每一个角落。

咱们是 RTC Lab 部门,负责 RTC 产品中音频、视频、网络等根底功用的研制,经过极致的工程和音视频算法,打磨顶级的实时音视频根底体会,期待优秀同学的参加!