前言

RTC(实时音视频通信)技术的快速发展,助力了直播、短视频等互动娱乐形式的普及;在全球疫情持续蔓延的态势下,云会议需求呈现爆发式增长,进一步推动了 RTC 行业的快速发展。为了给客户提供稳定可靠的服务,网络系统方面需要不断提升频道连通率,降低会议过程中的断流率,增强抗弱网能力;视频方面需要提升视频清晰度,降低视频卡顿率等,音频方面在追求端到端 MOS 的同时,也要重点关注音频 3A 算法的效果,这些都是各厂家必须修炼的 “内功”,也是最终沉淀下来的核心竞争力。本文将重点阐述硬件设备采集的音频质量对 RTC 端到端音频体验的重要性。

采集质量不佳,会有什么影响?

在 RTC 架构中,端到端的音频信号处理流程大致如下图,上行分别经过了音频信号的采集,音频 3A(AEC: 回声消除、ANS: 自适应降噪和 AGC: 自动增益控制)和编码;下行分别经过丢包恢复,解码,混音和播放。



端到端的音频信号处理流程

不难看出,音频信号经过模数转换,再经过设备集成的音频信号处理芯片,最后才传递给 RTC SDK。由于硬件厂商的不同,音频采集解决方案参差不齐,因此采集到的音频质量的好坏直接影响着 3A 算法拿到的生产资料的可用性,同时也决定这最终用户接收到音频信号质量的上限。根据实际工作中遇到的音频问题,因为设备采集引起的问题基本可以归纳为如下几类:

举几个例子:

(1)采集异常

采集异常主要体现在频谱 “模糊”,严重的会导致无法听懂语义,影响正常交流。如下语谱图。

另外,采集异常后,播放的信号被麦克风采集后也会表现出异常,从而引起严重的非线性失真,影响回声消除效果,如下图。

(2) 采集抖动

常见的就是采集丢数据,听感上会听到有很多高频噪点(下图为上图中噪点放大后的局部图),严重的会影响 AEC 算法中对延时估计准确性和远近端非因果问题,严重的会导致漏回声。

(3)爆音和音量小问题

采集爆音问题主要发生在 PC,也是 PC 端设备最应该避免的问题,影响较大,除了截顶导致的频谱失真之外,严重的非线性失真会影响回声消除效果。爆音问题需要 AGC 算法通过自适应调节 PC 端模拟增益以及麦克风加强解决。

(4)频谱缺失

频谱缺失主要是硬件回调的音频采样率与实际的频谱分布不一致,即使编码器给到很高的编码码率,听感上也没有高音质的效果,如下图,采集信号采样率为 48kHz,但是频谱上限却只有 8k。

改善采集音质,硬件层面我们能做什么?

具备 RTC 能力的硬件设备早已渗透我们生活的方方面面,常见的如移动端手机和 PC,现在甚至连儿童电话手表,天猫精灵以及各种高端的指纹密码锁等设备都支持了 RTC。然而,设备的多样性直接决定这采集能力的差异性,抛开声学元器件设计差异这一因素,就 Android 端而言,芯片和软件系统的差异使得同一品牌的手机,也没办法用同一种配置适配所有型号的手机。

另外,现在绝大多数的移动端设备都自带硬件音频信号处理(后称硬件 3A)能力,不同芯片效果方面也是千差万别的同时,更严重的是经过硬件处理的音频信号频谱往往会有缺失,如开启硬件 3A 后回调到 RTC SDK 的音频信号频谱上限仅支持到 8k,相当于 16kHz 采样的音频信号,尤其在娱乐方面根本无法满足我们对高音质的追求。因此,做好硬件层的适配工作,是保障 RTC 高质量音频体验的基础。

Android 端

(1)需要搞清楚 javaaudioclass 和 opensles 这两种模式的差异,以及各自需要适配的参数,掌握关闭硬件 3A 的配置。

(2)采集抖动或音频音量异常,可以试试更改请求的采样率,通常设置的 48k 采样不会适用于所有的 android 设备。

Windows 端

(1)当前很多 Windows 设备会在屏幕顶端内置麦克风阵列,提供音频增强功能,开启方式如下图。这个功能默认屏幕正前方夹角区域为拾音区域,通过麦克风阵列技术可以有效的增强拾音区域内发言人语音,“隔离” 拾音区域以外的 “噪声”,其主要的弊端就在于开启此功能后仅支持 8k 频谱,且各厂家增强算法存在差异,效果也参差不齐。因此,软件需要具备能够 bypass 硬件自带音频增强功能的能力,为高音质做保障。



Windows 设备自带的双麦阵列(图片来源于网络)



音频设置中的增强功能开关



开启音频增强后,带来的频谱缺失

(2)音量方面,PC 端设备都支持模拟增益调节,大多数带有阵列的 Windows 设备都有额外的麦克风加强(如下图)。软件算法层面(3A 中的 AGC)需要具备自适应调节他们的能力,保障音频采集音量的平稳以控制采集底噪水平。初值设置或自适应调节不当都会导致音量小和爆音等问题,严重的会影响回声消除和降噪的效果,带来影响可用性的风险。



模拟增益与麦克风加强

苹果设备

(1)ios 端适配工作较少,需要熟悉关闭硬件 3A 的配置,因为 ios 设备自带的硬件 3A 频谱也只能支持到 10k-12k。

(2)Mac 笔记本设备比较简单,仅提供了模拟增益调节。但是有一点需要注意,RTC 在支持双声道播放时,由于麦克风会与某个扬声器在同一侧,导致播放音频时附近的麦克风采集爆音问题,一般只能优化软件 AEC 算法解决。

总结

当 48k 高音质成了刚需,为了保障采集环节的高质量,一方面需要投入时间去掌握 Android 参数适配的规律,同时市面上出现的越来越多的定制化的 android 设备(手表,智能音箱等),也必不可少的需要先确定好配置参数;另一方面关闭硬件设备自带的音频处理功能,启用 RTC 自带的纯软 3A 算法也是一种趋势,前提是要优化好软件 3A 算法整体效果以及控制好功耗,这也是客户评测各厂家之间音频体验的必测项,也是各厂家的核心竞争力之一。

「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。公众号后台回复【技术】可加入阿里云视频云产品技术交流群,和业内大咖一起探讨音视频技术,获取更多行业最新信息。

最新文章

  1. 谈谈基于OAuth 2.0的第三方认证 [中篇]
  2. CSS3的@keyframes用法详解:
  3. DBNull 与 求和方法
  4. net2.0对于递归变量的处理方式不同引发的递归问题
  5. JS常规的验证代码 - 手机号,邮箱,字符串查找
  6. Ubuntu12.04安装YouCompleteMe插件
  7. iOS NSString的常用用法
  8. Windows 8.1 正式版微软官方原版镜像下载(新增10/17新版下载)
  9. Scut游戏server引擎Unity3d访问
  10. Vmware Vsphere WebService之vijava 开发一-vcenter连接、及集群信息获取
  11. 实现Echarts折线图的虚实转换
  12. CSS 学习笔记 - Flex 布局
  13. thinkinginjava学习笔记02_对象
  14. c语言的第三次---单程循环结构
  15. JavaScript单线程的疑问与解答
  16. pyspider爬虫框架webui简介-爬取阿里招聘信息
  17. 2018-2019-1 20189210 《Linux内核原理与分析》第三周作业
  18. 【洛谷2252&HDU1527】取石子游戏(博弈论)
  19. 【C#】获取URL上的参数
  20. [IR] Advanced XML Compression - ISX

热门文章

  1. 2020.11.1--pta阶梯练习赛补题
  2. gin 源码阅读(5) - 灵活的返回值处理
  3. 重磅!微软发布 vscode.dev,把 VS Code 带入浏览器!
  4. SyntaxError: Non-UTF-8 code starting with '\xbb' in file D:\流畅学python\ex32.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
  5. 什么是产品待办列表?(What is Product Backlog)
  6. iNeuOS工业互联网操作系统,智慧用电测控应用案例
  7. 嵌入式单片机之STM32F103C8T6最小系统板电路设计参考
  8. TCP 拥塞窗口原理
  9. Python | 实现pdf文件分页
  10. 使用jax加速Hamming Distance的计算