音频分析:语音识别与合成之共振峰

118 阅读9分钟

在时域上,不同人说出的同一个音(如“中”)几乎没有稳定的共同特征;但在频域上,它们拥有非常稳定和一致的共同特征,即其共振峰模式。

下面我们从不同层面来详细解释:

1. 时域波形 - 几乎没有共同特征

如果你直接看声音的时域波形图(即振幅随时间变化的图形),不同人说同一个“中”字,它们的波形会看起来截然不同

  • 音高不同:男性的基频通常为80-150Hz,女性为150-250Hz,儿童更高。这导致波形的振动周期完全不同。
  • 音色不同:每个人的声道形状、大小(喉咙、口腔、鼻腔)都像一件独特的乐器,这导致了波形的复杂形状千差万别。
  • 时长和强度不同:每个人发音的快慢、轻重都不一样。

所以,无法通过直接比对时域波形来判断两个声音是否是同一个音

2. 频域 - 共同特征的核心所在

当我们把声音从时域转换到频域(通常使用快速傅里叶变换(FFT) 或更先进的线性预测编码(LPC)),声音的本质特征就显现出来了。在这里,我们关注的是频谱声谱图

共同特征主要体现在以下几个方面:

a. 共振峰

这是最关键的特征。共振峰是由你的声道形状决定的谐振频率。当你发一个元音(如“中”的韵母“ong”)时,声道会形成一个特定的形状,这个形状会放大某些特定的频率区域,这些被放大的频率峰值就是共振峰。

  • F1, F2, F3...:通常前三个共振峰(F1, F2, F3)就足够用来区分不同的元音。
  • 稳定性:无论说话者是男是女,是老人还是小孩,一个特定元音的共振峰相对模式(即F1、F2、F3之间的相对关系)是稳定的
    • 例如,发“中”字时,你的舌头位置、口腔开度决定了F1和F2会落在某个特定的频率范围内。
    • 虽然男性的整体共振峰频率由于声道较长而普遍低于女性,但F1和F2的比值或它们在整个频率范围内的相对位置是相似的。

可以把声道想象成一个可变的过滤器。同一个元音指令(如“发‘ong’音”)会让不同的人把自己的“过滤器”调整到相似的形状,从而产生相似的共振峰模式。声带产生的原始声音(基频+谐波)经过这个“过滤器”后,在共振峰频率处得到增强,最终形成了我们听到的特定元音。

b. 声母的频谱特征

“中”字的声母是“zh”,这是一个翘舌清辅音。它的共同特征体现在:

  • 噪音能量集中区域:“zh”是一个摩擦音,它的能量主要集中在中高频区域(大约在2000-8000Hz)。不同人发这个音时,这个噪音能量的中心频率和分布范围是相似的。
  • 静音段与爆破:对于像“b/p/d/t”这样的塞音,其共同特征可能包括一个短暂的静音段和紧随其后的爆破瞬间的频谱特性。

c. 声谱图的整体模式

在声谱图上(时间、频率和强度的三维图),同一个“中”字会形成一个可识别的、稳定的模式

  • 你会看到在开头部分有“zh”声母的高频乱纹(噪音)。
  • 紧接着是“ong”韵母的稳定元音段,显示出几条清晰的、水平方向的共振峰条纹。
  • 这个“条纹图案”的整体结构,对于不同人说同一个“中”字来说是相似的。

3. 感知层面 - 听觉系统如何识别

人类的听觉系统本身就是一个高级的频谱分析仪。我们的大脑并不关心声音的绝对基频(那是我们判断“音高”的依据),而是更关注频谱包络,即共振峰构成的整体形状。

当我们听到一个男声和一个女声说“中”时,我们的大脑会自动“归一化”处理,剥离掉由声带振动决定的音高信息,提取出由声道形状决定的共振峰模式,从而识别出他们是同一个元音。

总结

分析维度共同特征不稳定的因素
时域波形几乎没有基频(音高)、音色、时长、强度导致波形千差万别
频域/频谱高度一致
1. 共振峰模式(核心):元音部分F1, F2, F3的相对位置和模式稳定。共振峰的绝对频率会因声道长度(性别、年龄)而整体偏移,但相对模式不变。
2. 声母的频谱特性:如摩擦音的能量集中区。个人发音习惯可能导致细微差异。
3. 声谱图模式:声音在时间-频率平面上形成的稳定“图案”。发音速度和强度的个人差异。

因此,在音频分析和语音识别中,我们几乎总是在频域上进行操作。通过提取MFCC(梅尔频率倒谱系数)、PLP(感知线性预测)等特征,这些技术本质上都是在模拟人耳的听觉感知,专注于捕捉和量化那个稳定的频谱包络,从而让机器能够像人一样,忽略说话者的个体差异,识别出他们说的是同一个“中”字。


通过精确控制共振峰的频率和强度来合成语音,是语音合成领域的核心原理之一。最经典和直接的方法就是共振峰合成

让我们来深入探讨一下这是如何工作的,以及其中的精妙之处。

1. 共振峰合成的基本原理

共振峰合成的核心思想是:用一个简单的激励信号,去激励一个模拟人类声道的滤波器,而这个滤波器的特性就由共振峰参数来控制。

这个过程模拟了人类发声:

  • 声带 -> 激励源
  • 声道 -> 共振峰滤波器

合成步骤:

  1. 生成激励信号

    • 对于元音和浊辅音:生成一个周期性的脉冲序列(模拟声带振动),其频率就是您想要的基频,它决定了声音的音高。
    • 对于清辅音:生成白噪声(模拟气流摩擦),例如发“s”、“f”时。
  2. 设计共振峰滤波器

    • 这是一个极其关键的步骤。滤波器需要被设置成在您指定的共振峰频率(F1, F2, F3...) 上产生峰值。
    • 每个共振峰不仅需要指定其中心频率,还需要指定其带宽。带宽决定了这个共振峰峰的“尖锐”程度,影响着音色。
    • 通常,一个合成器会设置至少前3-5个共振峰来获得一个比较逼真的元音。
  3. 让激励信号通过滤波器

    • 当周期性的脉冲(代表音高)通过这个设置好的滤波器时,滤波器会在共振峰频率处极大地放大信号,最终输出的就是一个具有目标元音音色的声音。

所以,如果您能知道“中”字的韵母“ong”的典型共振峰频率(比如F1=500Hz, F2=1000Hz, F3=2500Hz),并正确合成其声母“zh”的摩擦噪声特性,那么通过上述过程生成的声音,人耳听到的就会是“中”字。

2. 实践中的挑战与精妙之处

虽然原理听起来很直接,但要合成出自然、清晰、可懂的语音,还需要解决很多问题:

  • 动态变化:真实的语音不是静态的。发音时,我们的声道形状在持续变化,导致共振峰也在滑移。例如,发“中”字时,从声母“zh”到韵母“ong”,舌头和嘴唇有一个运动过程,共振峰频率也是连续变化的。静态的共振峰只能合成出机器人般呆板的声音。
  • 协同发音:同一个音在不同的上下文中,其共振峰也会不同。例如,“中”在“中国”和“中间”里,由于受到前后音素的影响,其共振峰模式会有细微差别。高级的合成器必须模拟这种效应。
  • 更多细节
    • 鼻音和鼻化元音:需要引入额外的“零点”来模拟鼻腔的共鸣。
    • 清浊辅音转换:需要在激励源中动态地在周期性脉冲和白噪声之间切换或混合。
    • 基频变化:需要让基频随时间变化以模拟语调、声调(对于“中”的一声,基频需要保持高水平且平稳)。

3. 一个简单的示例

您可以很容易地体验到这个原理。网上有很多在线的共振峰合成器或简单的音频编程环境(如Pure Data, Max/MSP, 甚至某些MATLAB代码)。

如果你输入以下近似参数(数值为示例,非精确值):

  • 元音 [a](如“阿”):F1=700Hz, F2=1200Hz
  • 元音 [i](如“衣”):F1=300Hz, F2=2300Hz
  • 元音 [u](如“乌”):F1=300Hz, F2=900Hz

合成器会生成三个听起来截然不同的、清晰的元音。尽管声音可能有些“电子味”,但它们毫无疑问是您指定的那个元音。

结论

所以,您的论断是完全正确的。控制共振峰的相对位置,确实是生成特定字音(尤其是元音和响音)的核心。早期的电子语音合成器(如著名的KLATT合成器)和很多老式文本转语音系统,都是基于共振峰合成技术。

虽然现代更主流的语音合成技术(如单元挑选拼接和WaveNet等神经网络合成)能产生更自然的声音,但它们本质上仍然是在学习并再现这些底层的声学特征,其中就包括了随时间变化的共振峰轨迹。共振峰至今仍然是语音学家和分析工程师理解和描述语音的最重要工具。