浅谈语音质量保障:如何测试 RTC 中的音频质量?

日常音视频开会中我们或多或少会遭遇这些场景:“喂喂喂,可以听到我说话吗?我听你的声音断断续续的”,“咦,我怎么可以听到回声?”,“太吵啦,我听不清楚你在说啥” 等等。这些语音质量问题影响音视频开会体验,如若是重要的会议,那足够让人 “恼羞成怒”。那么如何有效的减少这些问题发生呢?本系列文章就将为大家分享阿里云视频云在保障 RTC 语音质量方面的测试经验。

作者|柯淮

审校|泰一

背景介绍

音频质量是指正常网络下的听觉质量和音频 3A 算法质量。听觉质量,是在无损网络情况下人耳对语音优劣的主观感受。但在实际生活中,不同人对同一声音可能会有不同的优劣判断,另外还会受到收听环境和收听心理影响。在测试时,我们可以从声音三要素:响度、音高、音色纬度出发,对一些指标进行量化评估。另外业内标准还会将这些量化指标通过一定的加权处理以期望拟合主观感受,比如 POLQA、PESQ 等。

音频 3A 算法是指:

AGC: Automatic gain control(自动增益控制)

ANS: Adaptive noise suppression(噪声抑制)

AEC: Acoustic echo cancellation(回声消除)

这部分内容公众号中已有较多文章较详细介绍原理及实现,这里不再赘述。

往期文章

详解 WebRTC 高音质低延时的背后 — AGC(自动增益控制)

硬货专栏 |深入浅出 WebRTC AEC(声学回声消除)

本系列文章将从音频质量、适配测试、Qos 质量、自动化方案四个纬度去介绍阿里云视频云如何保障 RTC 语音质量,本文先介绍音频质量部分(正常网络下的听觉质量和音频 3A 算法质量)。

RTC 语音测试链路拆解

在正式测试前,我们先了解 RTC 语音传输的整个链路框架图,声音通过麦克风采集,而后上行音频算法进行前处理,编解码传输后通过扬声器播放出来。若想测试上行音频算法可在(1)处输入声音,而后在(2)处拉取输出音频进行分析。系统测试时,我们往往从端到端角度评估,即从(1)处输入声音而后在(4)拉取声音进行分析,本文后续测试方法均基于端到端。

f239eacfdcaec4647424c5db9fe475c4.png

音频质量测试方案

阿里云视频云采用业内常用的客观指标+主观评价相结合的方法来保障音频质量,具体指标请参考下图:

6f2562a89211cf4948c3e24b08c26080.png

客观测试方法

有效频宽

Line in 输入扫频文件 +48K 采样率的人声音频(音频素材参考如下),Line out 录制输出音频,通过频率分析读取有效频宽;

f468dcc7bab3c47f42dfdbb234a4d603.png

端到端延迟

方法一:使用 VQT 测试,测试结果中输出延迟时间。

方法二:自研。Line in 测试素材,Line out 录制未经过传输及输出音频,计算音频延迟时间。

  • 测试素材:一段连续的单音。

  • 指标计算:录制文件中读取未经过传输的音频起始时间记为 t1,读取经过会议传输的音频起始时间记为 t2,则 Delay=t2-t1。

f7a86427297197152ace0c37501a864c.png

ANS

考察 ANS 算法在纯噪声和语噪混合场景下的表现,分析指标包含:降噪一致性、信噪比提升、收敛时间、消噪后人声音质。

  • 测试拓扑

244535b482b4ca63573235e4813738fa.png

通过音量 Line in 或者外放输入背景素材及语音素材,在拉流端 Line out 录制输出音频进行指标分析。

  • 测试素材

分类

音频素材

音频素材

声学噪声

白噪声

如下是粉红噪声示意图:

009c2681379af07cb5a4b0551db16aee.png

粉红噪声

真实环境噪声

咖啡馆噪声

如下是办公环境噪声示意图:

b57dba19c8e720dfa203108766526985.png

汽车空间内噪声

会议室空间内噪声

办公环境噪声

餐馆环境噪声

地铁站/高铁站环境噪声

街道环境噪声

带噪人声

信噪比10dB

如下是信噪比为10dB的带噪人声:

26d87190633d7963f7394dce984d3519.png

信噪比15dB

信噪比25dB

  • 指标计算

1. 信噪比提升:求取经过消噪后音频的信噪比为 A,则信噪比提升值 =A- 输入信噪比。

2. 降噪一致性:计算各种噪声输入后噪声的残留值,并统计各种噪声下噪声残留是否一致。

3. 收敛时间:记录噪声能量开始下降的时间为 t1,记录噪声已收敛至平稳的初始时间 t2,收敛时间 =t2-t1。

4. 音质:改造 VQT POLQA 测试脚本,计算不同信噪比输入下输出音频 MOS 分。下表展示输入信噪比为 10dB 带噪人声,输出音频音质 MOS 分:

7cc4cb2a5b43d6484aef06ea97fd4ab3.png

AGC

考察AGC算法在不同音量下表现,分析指标包括:声音平稳性、输出响度。

  • 测试拓扑

参考 ANS 测试拓扑图,通过音量 Line in 或者外放输入语音素材,在拉流端 Line out 录制输出音频进行指标分析。

  • 测试素材

分类

音频素材

音频素材

阶梯音量人声

“大-小-大”平稳性声音素材(以3dB步长音量增减)

如下是“大-小-大”平稳性声音素材示意图:

08ccbf4be2502703c628ac47710c53fa.png

不同音量男声&女声(打分)

小音量(打分)

如下是用于打分中音量人声:

780aef5d67a8287815945cb884fbe611.png

中音量(打分)

大音量(打分)

  • 指标计算

1. 声音平稳性:计算输出音频各音量段的平均 RMS,而后求解这个输出音频的平均 RMS 的方差。如下是平均 RMS 的计算公式:

227252cb26b50b3f99393f00da4b8635.png

2. 输出响度:Line out 方式计算输出音频的平均 RMS;外放方式使用标准声压计,以 A 计权方式记录响度值。

3. 音质:改造 VQT POLQA 测试脚本,计算不同音量输入下输出音频 MOS 分。下表展示大中小音量输入下,输出音频音质 MOS 分:

8f5f90f0877fce6d3c1bb789f915e313.png

AEC

考察 AEC 算法单讲和双讲场景下是否存在漏回声、人声抑制等问题。

  • 测试拓扑

【单讲】

3e5b440957c3af1104d1fd3755e1696c.png

推流端播放单讲语音素材,拉流端默认配置放在空旷会议室中。Line out 录制推流端的输出,判断拉流端是否存在漏回声。

【双讲】

e020ed068468d16d06729d38946b592c.png

同时向推流端和拉流端播放双讲测试素材,Line out 录制推流端的输出,判断拉流端是否存在漏回声和人声抑制。

同时向推流端和拉流端播放双讲测试素材,Line out 录制推流端的输出,判断拉流端是否存在漏回声和人声抑制。

  • 测试素材

分类

音频素材

音频素材

单讲

连续标准人声素材(男声、女声、孩童、老人)

连续人声素材示意图:

4e4e27960def6257050bd9bc6ec4d7be.png

双讲

双讲人声素材(包含连续说话、单字说话)

双讲人声素材(包含连续说话、单字说话)示意如下:

800b9d61dc8c52a6d5fa89258ec5f84d.png

  • 指标计算

1. 漏回声:读取录制音频文件的人声残留量,理论上该处值为 0- 没有漏回声。

2. 人声抑制:双讲场景下评估此指标。利用 3gpp TS 26.132 标准评价剪切情况,最终评价以 D 类(连续剪切大于 150ms)为标准,值越接近于 0 质量越好。

3. 收敛时间:测试开始时间记为 t1,AEC 收敛完成无漏回声出现时间记为 t2,收敛时间 =t2-t1。

4. 人声音质:双讲场景下评估此指标。改造 VQT POLQA 测试脚本,计算双讲场景下人声的音质得分。

STOI

短时客观可懂度,当前学术上比较精确,可靠的客观评估方法来计算语音可懂度,客观测试结果可以一定程度上反映语音可懂性和自然性。存在局限性:需降采样到 16K 进行计算。

  • 测试拓扑:参考 ANS 测试拓扑。

  • 测试素材:ITU-P863 提供标准人声素材。

  • 指标计算:如下框架图展示了 STOI 计算流程,当前业内已有 matlab 和 python 对该算法的工程实现。

04bc59223e5c5df2dd6ef271630818aa.png

POLQA

ITU-T P.863 提供测试方法,可得到 MOS 分和音频延迟。支持 8K、16K、48K 测试,局限性是设备贵。

  • 测试拓扑:参考 ANS 测试拓扑。

  • 测试素材:ITU-P863 提供标准人声素材 &VQT 内置语音测试素材。

  • 指标计算:POLQA MOS 分。

PESQ

ITU-T P.862 提供测试方法,可得到 MOS 分,局限性是仅可支持 8K 和 16K。

  • 测试拓扑:参考 ANS 测试拓扑。

  • 测试方法:测试素材:ITU-P863 提供标准人声素材。

  • 指标计算:PESQ MOS 分

主观测试方法

采用 “YD/T 2309 音频质量主观测试方法(ITU-R BS.1284)” 中提及的评分规则和维度,在不同场景下为专家和普通用户进行打分测试。

评分方法

94199564e0253cfaa126001e4ecb9dd7.png

评价维度

d7fbc9a1488e204e25f63601964dd7b3.png


测试场景

测试素材采用“惠威试音碟”和“TUT-acoustic-scenes-2017-development”。

10fff5139ee4f23a929cff9d80766f22.png

246a4d5681badadebfa15aa2160b3702.png

技术交流,欢迎加我微信:ezglumes ,拉你入技术交流群。

963ada24207ccab08a993c105b6f9f61.png

推荐阅读:

音视频面试基础题

OpenGL ES 学习资源分享

开通专辑 | 细数那些年写过的技术文章专辑

NDK 学习进阶免费视频来了

推荐几个堪称教科书级别的 Android 音视频入门项目

觉得不错,点个在看呗~

c30bf7aabaaca1736980d24f09168a2a.gif

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# MOS-PESQ The project is a tool that can get MOS(PESQ) score for the voice. PESQ measure: ------------- Usage of the PESQ objective measure is as follows: [pesq_mos]=pesq(cleanfile.wav,enhanced.wav) where 'cleanfile.wav' contains the clean speech file and 'enhanced.wav' contains the enhanced file. Example: To run the PESQ objective measure with the example files provided, type in MATLAB: >> pesq('sp09.wav','enhanced_logmmse.wav') ans = 2.2557 Source code for the PESQ implementation is available from a CD-ROM included in the following book: Loizou, P. (2007) "Speech enhancement: Theory and Practice", CRC Press. COMPOSITE MEASURE: ----------------- Usage: [Csig,Cbak,Covl]=composite(cleanfile.wav,enhanced.wav) where 'Csig' is the predicted rating of speech distortion 'Cbak' is the predicted rating of background distortion 'Covl' is the predicted rating of overall quality. You may run example files included in the zip file. In MATLAB, type: >> [c,b,o]=composite('sp09.wav','enhanced_logmmse.wav') LLR=0.681368 SNRseg=3.991727 WSS=49.671978 PESQ=2.255732 c = 3.3050 b = 2.6160 o = 2.7133 where 'sp09.wav' is the clean file and 'enhanced_logmmse.wav' is the enhanced file. The predicted ratings for overall quality was 2.7133, for background was 2.61 and for signal distortion it was 3.3050. Operating steps: ----------------- >> ./matlab-PESQ/readme.txt Thank: ----------------- Any questions, please E_mail: kinglongbest@163.com/245051943@qq.com 操作步骤 1.将所录序列加载如当前工作路径,也可以按自己工作路径自行加载; 2.在read.m修改参考序列,默认为ref.wav,16KHz采样; 3.利用wavdivide.m对所录多组序列文件进行拆分(支持多种采样频率),并按序保证至当前路径; 4.运行tongji.m计算PESQ_MOS得分并通过excel/txt输出至指定路径; NOTE: 对于步骤4,每次执行记得修改excel输出列位置,如cellnames2=['B',num2str(k+1),':B',num2str(k+1)];, 指定写入B列,下次执行改为C列,以此类推; 其ref_8k.wav为8KHz采样测试序列,ref.wav为16KHz,ref_3s.wav只是为方便测试在ref.wav语音前加3s静音;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值