opus编码控制参数

作者:txp
来源:飞一样的成长
原文:https://mp.weixin.qq.com/s/crATmFKtXnO-SsCeCbl57w

opus介绍:

本文档定义了Opus交互式语音与音频编解码器。Opus专为广泛的实时音频应用场景设计,包括IP语音(VoIP, Voice over IP)、视频会议、游戏内语音聊天,甚至实时分布式音乐演出。其支持的码率范围从6 kbit/s的低比特率窄带语音到510 kbit/s的高质量立体声音乐。Opus结合线性预测(Linear Prediction, LP)与改进的离散余弦变换(Modified Discrete Cosine Transform, MDCT)技术,实现了对语音和音乐的高效压缩。

Opus编解码器是一种实时交互式音频编解码器,旨在满足[REQUIREMENTS]中描述的需求。它由基于线性预测(LP,Linear Prediction)的编码层和基于改进离散余弦变换(MDCT,Modified Discrete Cosine Transform)的编码层组成。采用双层的核心思想如下:

● 语音场景:线性预测技术(如码激励线性预测,CELP)对低频频段的编码效率优于变换域技术(如MDCT);

● 音乐与高频语音场景:MDCT等变换技术在高频与音乐信号的编码效率更高。 因此,结合两种层的编解码器能覆盖更广泛的应用场景,并通过混合编码实现比单一层更高的音质。

opus codec overview:

Opus编解码器的码率范围可从6 kbit/s的窄带单声道语音扩展到510 kbit/s的全频带立体声音乐,其算法延迟范围从5毫秒到65.2毫秒。在任意时刻,线性预测(LP)层、改进离散余弦变换(MDCT)层或两者可能同时处于激活状态。它能够无缝切换所有工作模式,从而无需重新协商当前会话即可灵活适应不同内容及网络条件。该编解码器支持多种音频带宽的输入和输出,定义如下:

opus编码控制参数
opus编码控制参数

注意:虽然采样定理允许带宽高达采样率的一半,但 Opus 从不对高于 20kHz 的音频进行编码,因为这是人类听力普遍接受的上限.

与其他使用32 kHz的音频编码标准不同,Opus将超宽频(SWB)的有效采样率定义为24 kHz。选择这一采样率出于多方面原因:MDCT层的频带布局天然允许跳过12 kHz以上的频率系数,但无法仅干净地去除16 kHz以上的频率;24 kHz的采样率还使MDCT层的重采样更易实现(因为24可被48整除),且在24 kHz足够时,可节省其他处理(如声学回声消除,AEC)的计算资源。对频带布局进行实验性调整以实现16 kHz截止频率(32 kHz有效采样率)的结果显示,其他采样率下可能出现质量下降,且在典型比特率下,相比全频带(FB)模式编码,使用此截止频率节省的比特数极少。因此,若应用程序需处理32 kHz采样的信号,应直接使用全频带(FB)模式。

LP(线性预测)层基于SILK编解码器[SILK],支持窄带(NB)、中带(MB)或宽带(WB)音频,帧大小范围为10毫秒至60毫秒,并需要额外的5毫秒前向预测时间用于噪声整形估计。采样率转换可能引入少量额外延迟(最多1.5毫秒)。与Vorbis [VORBIS-WEBSITE]及许多现代编解码器类似,SILK本质设计支持可变比特率(VBR)编码,但编码器也可生成恒定比特率(CBR)流。Opus中使用的SILK版本与Skype此前独立部署的SILK编解码器存在重大修改且互不兼容,本文档不定义原始SILK格式,相关技术细节请参考[SILK]。

MDCT(改进离散余弦变换)层基于约束能量重叠变换(CELT)编解码器[CELT],支持窄带(NB)、宽带(WB)、超宽频(SWB)或全频带(FB)音频,帧大小范围为2.5毫秒至20毫秒,并因MDCT窗口重叠需要额外2.5毫秒前向预测时间。CELT编解码器本质设计支持恒定比特率(CBR)编码,但与多数CBR编解码器不同,它不受限于预设码率集,而是内部精确分配比特数以完全填充任意给定目标码率;编码器可通过逐帧调整目标码率生成可变比特率(VBR)流。当音频带宽为宽带(WB)或更低时,MDCT层不用于语音编码(因无实际增益),而线性预测技术对非语音信号的编码效果有限。因此,MDCT层应用于音乐信号编码。

“混合模式”允许同时使用两个编码层,帧大小为10或20毫秒,支持超宽频(SWB)或全频带(FB)音频。线性预测(LP)层通过将信号下采样至宽带(WB)编码低频部分,改进离散余弦变换(MDCT)层随后编码高频部分。两者的分界点为8 kHz(宽带音频的最大带宽),MDCT层会丢弃8 kHz以下的所有频段,因此两层间无编码冗余。

编码器与解码器的采样率(与实际音频带宽不同)可独立选择,例如全频带信号可解码为宽频带,反之亦然。此设计确保发送方与接收方无论硬件音频能力如何均可互通。LP层内部始终以两倍音频带宽的采样率运行(最高16 kHz,即使处理SWB/FB信号),解码器通过重采样输出适配不同采样率;MDCT层内部固定以48 kHz采样率运行。由于所有支持的采样率均为48 kHz的整数分频,且解码器可轻松在频域将高频部分置零,因此通过降采样即可低成本实现其他采样率输出。

解码器将两层输出统一至目标采样率后直接叠加。为补偿两层所需的前向预测时间差异,CELT编码器输入额外延迟2.7毫秒,确保低频与高频信号同步。编码器可通过减少噪声整形的前向预测时间或简化LP层重采样来降低此延迟,但会牺牲质量。而CELT层的基准2.5毫秒前向预测时间不可缩减(因其用于MDCT窗口重叠,该值由解码器固定)。

两层共享同一熵编码器,避免“填充比特”浪费。混合模式天然支持恒定比特率(CBR)与可变比特率(VBR)编码:虽然LP层为VBR,但MDCT层可通过分配LP层未使用的剩余比特,使最终码流成为CBR。

Control Parameters:

Opus编解码器包含多个可在编码器正常运行期间动态调整的控制参数(无需中断编码器到解码器的音频流)。这些参数仅影响编码器,因其对码流的任何影响均通过带内信令传递,解码器无需依赖带外信令即可解码任意Opus码流。任何Opus实现均可添加或修改此类控制参数且不影响互操作性。参考编码器中最重要的编码器控制参数如下。

1、Bitrate:

Opus支持从6 kbit/s到510 kbit/s的所有比特率。在其他参数相同的情况下,更高的比特率通常带来更高的质量。对于20毫秒的帧大小,以下是Opus在不同配置下的“最佳比特率”推荐值:

● 8-12 kbit/s for NB speech(窄宽)

● 16-20 kbit/s for WB speech(宽带)

● 28-40 kbit/s for FB speech(全频带)

● 48-64 kbit/s for FB mono music(全频带单声道音乐)

● 64-128 kbit/s for FB stereo music(全频带立体音乐)

2、number of channels(mono/stereo):

Opus可在单一声道流中传输单声道或立体声帧。当立体声解码器收到单声道帧时,左右声道输出相同;当单声道解码器收到立体声帧时,单声道输出为左右声道的平均值。某些场景下(如比特率过低导致立体声编码质量不足时),可选择将立体声输入流编码为单声道。声道数可实时切换,但默认情况下参考编码器会根据当前比特率自动做出最优决策。

3、audio bandwidth:

Opus支持的音频带宽如表1所示。与声道数类似,任何解码器均可解码任意带宽编码的音频。例如,运行在8 kHz的Opus解码器可解码全频带(FB)Opus帧,而运行在48 kHz的解码器也可解码窄带(NB)帧。同理,参考编码器可将48 kHz输入信号编码为窄带(NB)。音频带宽越高,实现可接受质量所需的比特率也越高。音频带宽可实时显式指定,但默认情况下参考编码器会根据当前比特率自动选择最优带宽。

4、frame duration:

Opus支持编码2.5、5、10、20、40或60毫秒的帧,并可将多个帧组合成最大120毫秒的数据包。对于实时应用,减少每秒发送的数据包数量可降低比特率(因减少了IP、UDP和RTP协议头的开销),但会增加延迟和对丢包的敏感性(单个数据包丢失意味着更大块的音频丢失)。增加帧时长也可略微提升编码效率,但超过20毫秒后增益趋微。因此,20毫秒帧长是多数应用场景的最佳选择。

5、complexity:

Opus编码过程中存在多个可调节CPU计算复杂度与质量/比特率权衡的环节。在参考编码器中,复杂度通过0至10的整数进行选择,其中0为最低复杂度(计算量最小),10为最高复杂度(计算量最大)。可能涉及此类权衡的计算案例如下:

● 基音分析白化滤波器的阶数[WHITENING]   ;基音分析 (Pitch Analysis):指语音信号中基频(Fundamental Frequency, F0)的检测与跟踪,常用于语音编码的线性预测层。白化滤波器 (Whitening Filter):一种使信号频谱平坦化的滤波器,通过去除信号相关性(如共振峰结构)来提升编码效率。阶数 (Order):滤波器系数的数量,阶数越高,滤波器对频谱细节的建模能力越强,但计算复杂度也相应增加。

● 短时噪声整形滤波器的阶数:短期噪声整形滤波器用于调整量化噪声的频谱分布,使其在听觉敏感频段(如中高频)的能量更低,从而提升主观音质。

● 残差信号延迟决策量化的状态数:延迟决策量化(如多阶段决策或格型量化)通过评估多个候选量化路径(即“状态”),选择最优路径以减少量化误差。

● 对特定码流特性的使用,例如可变时频分辨率与基音后置滤波器

6、packet loss resilience(数据包丢失恢复能力):

音频编解码器通常利用帧间相关性来降低比特率,但这会导致误差传播:丢失一个数据包后,解码器需要接收多个数据包才能准确重建语音信号。Opus 编解码器在多大程度上利用帧间依赖关系,可以动态调整,以在比特率和误差传播量之间选择一个折衷方案。

7、forward error correction(FEC):

另一种提供抗丢包鲁棒性的机制是带内前向纠错(FEC)。被判定为包含感知上重要语音信息(如起始音或瞬态)的数据包会以较低的比特率重新编码,并将这些重新编码的信息添加到后续的数据包中。

8、Constant/Variable Bitrate:

Opus 在默认的变比特率(VBR)模式下运行效率更高。当需要在相对较慢的连接上进行低延迟传输时,也可以使用受限的 VBR。这种方式通过模拟“比特池”来使用 VBR,与 MP3(MPEG 1,Layer 3)和 AAC(高级音频编码)中的 CBR(由于比特池的存在,并非真正的恒定比特率)等效。在某些(罕见的)应用中,需要恒定比特率(CBR)。使用 CBR 模式的主要原因有两个:

o 当传输仅支持每个压缩帧的固定大小时

o 当对高度受限(例如是/否、录制提示)或高度敏感的音频流使用加密时 [SRTP-VBR]。 即使对于敏感数据,只要比特率的变化不是由输入信号驱动(例如为了适应网络条件的变化),比特率仍然可以允许变化。为了实现这一点,应用程序仍应在 CBR 模式下运行 Opus,但在每个数据包之前更改目标比特率。

9、Discontinuous Transmission (DTX)不连续传输:

不连续传输(DTX)在静音或背景噪声期间降低比特率。当启用 DTX 时,每 400 毫秒仅编码一帧。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论