浅谈语音质量保障:如何测试 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)拉取声音进行分析,本文后续测试方法均基于端到端。

image.png

音频质量测试方案

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

image.png

客观测试方法

有效频宽

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

image.png

端到端延迟

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

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

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

image.png

ANS

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

测试拓扑

image.png

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

测试素材

image.png

指标计算
  1. 信噪比提升:求取经过消噪后音频的信噪比为 A,则信噪比提升值 =A- 输入信噪比。
  2. 降噪一致性:计算各种噪声输入后噪声的残留值,并统计各种噪声下噪声残留是否一致。
  3. 收敛时间:记录噪声能量开始下降的时间为 t1,记录噪声已收敛至平稳的初始时间 t2,收敛时间 =t2-t1。
  4. 音质:改造 VQT POLQA 测试脚本,计算不同信噪比输入下输出音频 MOS 分。下表展示输入信噪比为 10dB 带噪人声,输出音频音质 MOS 分:

image.png

AGC

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

测试拓扑

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

测试素材

image.png

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

image.png

  1. 输出响度:Line out 方式计算输出音频的平均 RMS;外放方式使用标准声压计,以 A 计权方式记录响度值。
  2. 音质:改造 VQT POLQA 测试脚本,计算不同音量输入下输出音频 MOS 分。下表展示大中小音量输入下,输出音频音质 MOS 分:

image.png

AEC

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

测试拓扑

【单讲】

image.png

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

【双讲】

image.png

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

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

测试素材

image.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 对该算法的工程实现。

image.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)” 中提及的评分规则和维度,在不同场景下为专家和普通用户进行打分测试。

评分方法

image.png

评价维度

image.png

测试场景

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

image.png

本文为 RTC 音频测试系列的第一篇,后续我们将从适配测试、Qos 质量、自动化方案的维度去介绍阿里云视频云如何保障 RTC 语音质量,欢迎关注公众号「视频云技术」。


扫码入群和作者一起探讨音视频技术
获取更多视频云行业最新信息👇

image.png

「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。公众号后台回复【技术】可加入阿里云视频云产品技术交流群,和业内大咖一起探讨音视频技术,获取更多行业最新信息。
相关文章
|
6天前
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成:提升效率与质量的关键
在快节奏的软件开发环境中,自动化测试和持续集成已经成为不可或缺的部分。本文将探讨自动化测试和持续集成的重要性,以及它们如何协同工作以提高软件开发的效率和质量。通过分析自动化测试的策略、工具选择以及持续集成的实践,我们将揭示这些技术如何帮助开发团队快速响应变化,减少错误,并加速产品上市时间。
|
10天前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
1月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
38 3
|
24天前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
28 5
|
1月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
本文是《软件质量保护与测试》(第2版)第十章的学习总结,介绍了黑盒测试的基本概念和方法,包括等价类划分、边界值分析和因果图法,并通过具体例子展示了如何设计测试用例来验证软件的功能性需求。
65 1
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
|
1月前
|
人工智能 人机交互 数据库
软件质量保护与测试(第2版)学习总结第一章
本文是《软件质量保护与测试》(第2版)第一章的学习总结,概述了软件的特征、分类、软件工程的层次化技术、现代软件开发的变化,以及软件质量的概念和评价体系,包括黑盒、白盒和灰盒测试方法。
31 1
软件质量保护与测试(第2版)学习总结第一章
|
24天前
|
Java 测试技术 持续交付
探索自动化测试的奥秘:提升软件质量的关键
【10月更文挑战第20天】 在当今快速发展的软件行业中,自动化测试已成为确保产品质量和加速开发周期的重要工具。本文将深入探讨自动化测试的核心概念、实施策略及其对软件开发生命周期的影响,旨在为读者提供一种全面理解自动化测试的视角,并展示如何有效地将其应用于实际项目中以提高软件质量和效率。
18 2
|
1月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十一章 白盒测试
本文是《软件质量保护与测试》(第2版)第十一章的学习总结,详细讲解了白盒测试中的控制流测试技术,包括语句覆盖、判断覆盖、条件覆盖、判定-条件覆盖和路径覆盖等方法,并通过具体代码示例展示了如何设计测试用例来验证程序中的不同执行路径。
54 2
|
1月前
|
安全 数据挖掘 测试技术
提升软件质量:探索高效测试策略
在软件开发过程中,测试是一个关键步骤,它决定了产品能否满足用户需求并保持高性能和安全性。本文将探讨几种有效的测试策略,包括自动化测试、性能测试和安全测试,以帮助开发团队提高软件质量。我们将分析每种方法的优势、实施步骤及面临的挑战,并提供实用的建议。
23 1