高手问答第 292 期 —— 实时互动娱乐场景下如何提升RTC音频引擎音质

OSC哒哒 2022-09-14 16:31:54 阅读数:84

实时高手互动问答娱乐场

传统RTC(语音通信)场景,音频引擎的整个处理链路如3A算法、编解码、丢包补偿等技术仅针对语音做处理。而实时互动娱乐场景(如主播连麦、互动播客、游戏语音等)会涉及到音乐、音效等,以优化语音质量为目标的音频引擎在面对这类场景时,经过算法处理后的音质会大打折扣。例如语音场景双讲问题出现的频率较低,然而在音乐一直播放时,只要对端说话,就会形成双讲,如果回声消除处理不好,就会对语音或者音乐造成很大的损伤;又如降噪算法在遇到音乐时也不可避免的对音乐产生损伤。因此在实时互动娱乐场景下需要对音频引擎的整个音频算法处理链路做出针对性的优化,以尽量提升实时互动娱乐场景下的音质。

OSCHINA 本期高手问答 (9 月 14 日 - 9 月 20 日) 我们请来了徐潇宇老师和大家一起探讨关于实时互动娱乐场景音频引擎整个链路的音频算法优化方向

可讨论的问题包括但不限于:

  • 音频采集
  • 回声消除
  • 降噪
  • AGC
  • 丢包补偿
  • 编解码
  • 传统算法与深度学习结合优化

或者其它关于实时互动娱乐场景音频引擎整个链路的音频算法优化方向相关问题,也欢迎大家积极提问!

嘉宾介绍

徐潇宇,荔枝资深音频算法工程师,精通数字信号处理、自适应滤波、3A算法、深度学习等,在荔枝负责通过传统音频算法+深度学习打造互动娱乐场景下的高音质RTC音频引擎。

github 账号https://github.com/ewan-xu

为了鼓励踊跃提问,荔枝集团会在问答结束后从提问者中抽取 5 名幸运会员赠予荔枝2022年度致敬T。

 

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就实时互动娱乐场景音频引擎整个链路的音频算法优化方向相关问题向徐潇宇老师提问,请直接回帖提问。




采纳答案1:
某人gmgn3

web端如何做实时语音交互

ewan_xu
web端的实时通信主要依靠webrtc api,主流的浏览器都支持。由于其语音引擎集成到了浏览器的内核中,我们无法对其中的音频算法做优化,因此我们在优化语音引擎时一般不考虑web端。



采纳答案2:
xiaoaiwhc1

@ewan_xu 记得做视频质量评估时,会分有源和无源情况。就是编码后的视频再解出YUV 跟源视频做对比。不知道这里的回声消除会不会也利用到类似的方法,至少音乐的特征可以实时获取到的。

ewan_xu
回复 @zn123 : 'F'一般叫做回声路径,包含线性和非线性两部分,一般使用自适应滤波器来估计线性回声路径,估计的回声路径会随着环境改变而动态更新,是不用每个机型都测试的。非线性部分使用NLP算法,其原理类似于降噪,通过估计残余非线性回声,构造一个滤波器进行消除,而残余回声较难精确建模,这部分需要针对机型去测试并优化。
zn123
回复 @ewan_xu : 对 这个F 如何得出的,每个android机型都测试么。
ewan_xu
你所说的音乐特征应该指的是播放信号,这是可以实时获取到的,例如我们的应用正在播放信号A,A又通过扬声器-环境-麦克风路径被录制形成回声A',假如我们将扬声器-环境-麦克风路径设为函数F,那么回声消除的基本原理就是通过估计函数F,然后利用A'=F(A)估计出回声,然后从麦克风录制的信号中减去这个回声。



采纳答案3:
程思

@ewan_xu 请问如果想学习这个方面的技术,需要什么样的技术基础,以及推荐什么样的学习路径?

ewan_xu
算法基础:学习滤波器、音效、经典3A算法,编解码、neteq等基本的音频算法,这些算法一般都可以找到一些开源的算法,可以根据代码去学习,例如webrtc、speex、sox等
ewan_xu
理论基础:学习数学、声学、数字信号处理、自适应滤波等相关理论知识。目前基于深度学习的音频算法的研究也比较火热,也可以学习一些深度学习的基本理论。这些理论基础学习可通过阅读专业书籍、网课、学术会议或期刊发表的专业论文等渠道去学习
ewan_xu
编程基础:推荐学习matlab、python、C/C++,若能熟悉汇编/指令集更好。
PanPacificTech
程思同学,是做战屡研究嘛



采纳答案4:
PanPacificTech

@ewan_xu 使用BIGO LIVE这种产品,音频处理的很好,但是使用Starmaker这种产品,音频听的非常不清晰,是两个厂商技术的问题导致的嘛

 




采纳答案5:
mental

@ewan_xu 用过webrtc, 其实它的回音消除效果很差的, iOS, android,window还是用硬件支持的, 试过在window设置关闭了回音消除, webrtc的aec效果很差, 还是靠硬件, 你们的aec是自己做吗

ewan_xu
是的,webrtc的aec仅提供了一个针对rtc场景的算法,仅能保证消除回声,不保证双讲效果,而娱乐场景中音频内容就很丰富了,不仅有语音,还有音乐、音效等,可以说大部分都是双讲状态,所以我们是自己做aec,延时估计、自适应滤波、NLP都是针对娱乐场景研发的
zn123
效果不好 是因为 他说的那个F 确定 在android 环境不很通用;



采纳答案6:
zn123

@ewan_xu 说说你们在rtc 这个路上 做了哪些优化? 还有对语音识别,人声模拟方面有什么技术经验

ewan_xu
rtc整个音频引擎音频链路都针对娱乐场景做了优化,如自研回声消除,保证回声消除效果。添加音乐检测,通过检测链路中的音乐,动态根据场景调整相应的优化算法。音乐场景降噪算法保证音乐不受损伤,语音AI降噪消除环境噪音和突发噪音。根据语音与音乐,调整相应的编解码格式和参数,以及jitterbuffer大小,plc算法等。另外还添加了实时变声、音效等效果。



采纳答案7:
pyboy58

@ewan_xu  1. RTC (语音通信 ,我有个劣质耳机,有的人和我通话,他经常反馈有刺耳的声音,有的人没有反应任何问题,这是不同的手机端做了优化效果,降低噪音了吗?

2.作为一个java的web项目,webrtc怎么加进web项目的需求比较好,智能客服这类,识别语音转为文字,不知道大哥推荐用哪个算法库的工具?

 




采纳答案8:
ericyan1

@ewan_xu  
1. 语音如何做自动会测试呢 ,要模拟不同的场景?
2. 算法是否考虑开源,更好的构建良性社区?


版权声明:本文为[OSC哒哒]所创,转载请带上原文链接,感谢。 https://www.oschina.net/question/4855753_2326898