第二章 线性预测编码(LPC)

LPC及相关语音编码技术介绍

这里主要是LPC声码器,这部分的内容绝大部分摘自我的专利《Opus编码器原理和工程实现详解》,对内部细致的实现,以及LPC声码器在音频编解码上如何使用的,可以参看该专栏

线性预测编码 (LPC) 是一种主要用于音频信号处理和语音处理的方法,用于使用线性预测模型的信息以压缩形式表示数字语音信号的频谱包络。

LPC 通过估计共振峰、从语音信号中去除它们的影响以及估计剩余“噪声”的强度和频率来分析语音信号。去除共振峰的过程称为逆滤波,减去滤波后的建模信号后剩余的信号称为残差。

LPC 是语音编码、语音合成以及歌声合成中使用最广泛的方法。它通常用于语音分析和重新合成。一些对算力和实时性要求较高的场景,仍然使用着LPC技术,但是对于语言合成以及歌声合成等质量要求较高的场景,基本都已采用端到端的大模型来实现了。

和第一章类似,如果合成的质量不好,该如何分析?或者说该如何评价TTS以及sing voice(假声、颤音、张力、气声等会比TTS复杂一些),那么基于LPC的谱包络就可以作为其中一个评价指标,当然结合第一章的相位校正和谱包络校正,可以修复大模型合成的一些明显瑕疵。

第二章 线性预测编码(LPC)

人的发生过程是一个source-filter模型,人类发声涉及肌肉、肺、舌和声道等器官位置变化,这些器官在发音时变化速度是有限度的,其中声带和声道的形状相对平稳,这使得语音具有短时平稳特性,短时平稳性是很多语音算法的先决条件之一。语音发音可以分为浊音和清音两类,发浊音时大部分能量集中在低频段,且在时域上具有周期性,在频域上频谱分布具有共振峰结构,清音和白噪声类似,没有明显的时域和频域特征。

基频

Pitch 音高/音调,人耳对声音调子高低的主观感受,音高的大小主要取决于声波基频F0的高低,频率高则音调高,反之则低,用Hz表示。

tone音色/音品,由声音波形的谐波频谱和包络决定。双二阶滤波器,其传递函数,是二阶IIR滤波器,含两个零点和两个极点,高阶滤波器对系数更为敏感,12dB/octave双二阶滤波器可用于音调tone控制;

LPC(部分摘取)

精确重构短时功率谱包络对于音质和清晰度是非常重要的,谱峰对于感知质量更为关键,而LPC参数的包络谱(反应了短时内的共振峰信息)更有益于谱峰的表示,对于低比特率语音编码器,LPC广泛用于谱包络编码,语音编码中LPC是逐帧获取的,通常50帧/秒,LPC通常10~20阶,为压缩比特率通常会对LPC进行量化压缩,由于LPC系数是逐帧获取的,因而有两种方式对齐进行量化,分别是标量量化和矢量量化,标量量化是逐点量化,点与点之间是独立的,而矢量量化是对每帧提取的一组LPC系数量化,其目标是最小化各组失真,这使得矢量量化在各量化比特率下失真都比标量量化小。
语音的相关性有短时和长时两种,短时相关性的滞后小于2ms,而长时相关滞后时间通常大于2ms,这是因为长时相关性基于语音信号的周期性特征,短时相关性确定了功率谱包络,长时相关性确定了功率谱的精细结构,这里的LPC系数是由短时相关性获取的,短时相关性是声道形状的函数。

语音是连续信号,如下图所示,短时采样点之间是相关的,

请添加图片描述

根据这一相关性,由前一个采样点 x [ n − 1 ] x[n-1] x[n1]可以预估当前采样点 x ^ [ n ] \hat {x}[n] x^[n],当前点的真实值可以用下式计算:
x [ n ] ≈ x ^ [ n ] = x [ n − 1 ] x[n] \approx \hat x[n] = x[n-1] x[n]x^[n]=x[n1]
使用越多(对于语音多达50个左右)的历史采样点真实值,估计当前点真实的有效信息越多,准确性越高,可以用p个点估计当前点的值:
x ^ [ n ] = − ∑ k = 1 P a k ( P ) x [ n − k ] \hat x[n]=-\sum \limits_{k=1}^P a_k^{(P)}x[n-k] x^[n]=k=1Pak(P)x[nk]
这是一个标准的线性预测器,是自回归模型,预测器的误差(预测残差)定义为:
e [ n ] = x [ n ] − x ^ [ n ] = x [ n ] + ∑ k = 1 P a k ( P ) x [ n − k ] = ∑ k = 0 P a k ( P ) x [ n − k ] , a 0 = 1 e[n] = x[n] - \hat x[n] = x[n] + \sum \limits_{k=1}^Pa_k^{(P)}x[n-k] = \sum \limits_{k=0}^P a_k^{(P)}x[n-k],a_0=1 e[n]=x[n]x^[n]=x[n]+k=1Pak(P)x[nk]=k=0Pak(P)x[nk],a0=1
请添加图片描述
线性预测器的P个系数(因符合自回归滤波模型,故这里P也称为阶数,即LPC系数的阶数), a 1 , a 2 , ⋯   , a p {a_1, a_2,\cdots, a_p} a1,a2,,ap是LPC系数,P值通常是10~20, e [ n ] {e[n]} e[n]被称为残差信号,由于两个相关信号相减之后的残差信号自身相关性很弱,因而残差信号谱包络是近乎平坦的,将残差信号用Z域表示为:
E [ z ] = A [ z ] S [ z ] E[z] = A[z]S[z] E[z]=A[z]S[z]
其中 A [ z ] = 1 − ∑ k = 1 P a k z − k A[z]=1 - \sum \limits_{k=1}^Pa_kz^{-k} A[z]=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shichaog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值