5D Library › 嗓音生物力学、非线性源-滤波耦合与听觉-运动反馈的数学模型 · English

第二章 非线性源—滤波耦合:惯性抗、容性抗与半阻塞声道

线性理论的前提

范特(Fant)1960 年系统表述的声源—滤波理论把嗓音分成两个独立的部分:声门产生的气流脉冲(声源),以及对它滤波的声道(滤波器)(Fant 1960)。这个理论非常成功,第 10 本第二章用它算出了均匀管的共振峰。但它有一个隐含的前提:声源不受滤波器影响,声道里的声压不会反过来改变声门的气流和声带的振动。

证据

提策与斯托里指出,线性理论之所以通常适用,是因为声门往往像一个高阻抗、近似恒流的声源;但影像显示喉前庭(喉管,epilarynx)相当狭窄,使声道的输入阻抗可以与声门阻抗相当,这时就会出现强的相互作用。他们还指出,声道的惯性抗通过降低起振阈压促进声带振动,并且喉管也是歌手共振峰的成因 (Titze and Story 1997)。提策 2008 年进一步把源—滤波相互作用分成两级:第一级,声道中的声压帮助驱动声门气流(气流波形偏斜、产生额外的谐波);第二级,声压帮助驱动声带本身,改变振动的起振、幅度与稳定性,甚至造成分岔。相互作用的强弱主要由喉前庭的截面积控制,喉前庭越窄,声门上方声道的惯性抗越大;当谐波在音高或元音变化中穿过共振峰时,振动模式可能失稳 (Titze 2008)。

惯性抗与容性抗

声道对声门呈现的输入阻抗 Zin=R+jXZ_{\text{in}} = R + jX 有一个实部(阻力)和一个虚部(电抗)。电抗 X>0X > 0 时称为惯性抗(inertive):声道中的空气柱像一块质量,气流加速时在声门上方产生正压,减速时产生负压。X<0X < 0 时称为容性抗或顺性(compliant):空气柱像一根弹簧,压力跟随的是累积的体积而不是加速度。

对一根声门端封闭、唇端开放的均匀管,Zin=jZ0tan⁡(kL)Z_{\text{in}} = jZ_0\tan(kL):第一共振峰以下为惯性,其上一段为容性。下面的程序用一组分段圆管(喉前庭 2.5 cm,其余 15 cm),并加入少量损耗、会振动的管壁与唇端辐射。

推导

# Input impedance Z_in = R + jX of the vocal tract seen from the glottis (X > 0 inertive,
# X < 0 compliant): lossy tube sections chained glottis -> lips, a yielding-wall shunt per
# section (typical mass and resistance), piston radiation at the open end. Illustrative.
import cmath, math

# air; wall mass (kg/m^2), resistance (N s/m^3)
RHO, C, MW, RW = 1.14, 350.0, 15.0, 16000.0

def z_in(f, secs):
    w = 2 * math.pi * f; k = w / C * (1 - 0.004j); s_end = secs[-1][1]
    a = math.sqrt(s_end / math.pi)
    zl = RHO * C / s_end * ((w / C * a) ** 2 / 2 + 0.8j * w / C * a)     # radiation load
    A, B, Cc, D = 1, 0, 0, 1
    for l, s in secs:
        z0, ca, sa = RHO * C / s, cmath.cos(k * l), cmath.sin(k * l)
        A, B, Cc, D = (A * ca + B * 1j * sa / z0, A * 1j * z0 * sa + B * ca,
                       Cc * ca + D * 1j * sa / z0, Cc * 1j * z0 * sa + D * ca)
        yw = 2 * math.sqrt(math.pi * s) * l / (RW + 1j * w * MW)            # wall shunt
        A, Cc = A + B * yw, Cc + D * yw
    return (A * zl + B) / (Cc * zl + D)

# 2.5 cm epilarynx + 15 cm at 3 cm^2 (+ straw)
def tract(epi_cm2, straw=None):
    secs = [(0.005, epi_cm2 * 1e-4)] * 5 + [(0.01, 3.0e-4)] * 15
    if straw:
        secs += [(straw[0] / 14, math.pi * straw[1] ** 2 / 4)] * 14
    return secs

FREQS = list(range(60, 2001, 2))
CONFIGS = (("neutral, epilarynx 2.0 cm2", tract(2.0)),
           ("narrow epilarynx 0.5 cm2", tract(0.5)),
           ("narrow + straw 14 cm x 4 mm", tract(0.5, (0.14, 0.004))))

if __name__ == "__main__":
    for name, secs in CONFIGS:
        z = [z_in(f, secs) for f in FREQS]
        m = [abs(v) for v in z]
        peaks = [FREQS[i] for i in range(1, len(z) - 1) if m[i - 1] < m[i] > m[i + 1]]
        edges = [FREQS[0]] + [FREQS[i] for i in range(1, len(z))
                              if (z[i].imag > 0) != (z[i - 1].imag > 0)] + [FREQS[-1]]
        bands = [f"{a}-{b}" for a, b in zip(edges[::2], edges[1::2])]
        print(f"{name}: impedance peaks (formants) {', '.join(map(str, peaks[:3]))} Hz")
        print("   inertive (X > 0) bands: " + ", ".join(bands) + " Hz")
        xs = [f"{f0}:{z_in(f0, secs).imag / 1e6:+5.2f}"
              for f0 in (110, 220, 330, 440, 660)]
        print("   X at f0 (MPa s/m^3)  " + "  ".join(xs))
    i0, i1 = (z_in(150, tract(a)).imag / (2 * math.pi * 150) for a in (0.5, 2.0))
    print(f"effective inertance X/w at 150 Hz: {i1:.0f} (neutral) vs {i0:.0f} kg/m^4"
          " (narrow epilarynx)")
# neutral, epilarynx 2.0 cm2: impedance peaks (formants) 542, 1508 Hz
#    inertive (X > 0) bands: 60-544, 932-1510, 1870-2000 Hz
#    X at f0 (MPa s/m^3)  110:+0.51  220:+1.08  330:+1.98  440:+4.29  660:-3.19
# narrow epilarynx 0.5 cm2: impedance peaks (formants) 580, 1624 Hz
#    inertive (X > 0) bands: 60-582, 748-1632, 1734-2000 Hz
#    X at f0 (MPa s/m^3)  110:+0.80  220:+1.65  330:+2.75  440:+4.75  660:-3.47
# narrow + straw 14 cm x 4 mm: impedance peaks (formants) 208, 1132, 1344 Hz
#    inertive (X > 0) bands: 60-210, 386-1134, 1232-1362, 1366-2000 Hz
#    X at f0 (MPa s/m^3)  110:+1.25  220:-0.42  330:-0.75  440:+0.64  660:+2.56
# effective inertance X/w at 150 Hz: 741 (neutral) vs 1164 kg/m^4 (narrow epilarynx)
三种声道构形的输入电抗。中性元音(灰)在第一共振峰约 540 Hz 以下为惯性,越过后进入容性区;狭窄的喉前庭(蓝)使低频的惯性抗增大约一半;加上一根 14 cm、内径 4 mm 的吸管(暗红虚线),第一共振峰降到约 210 Hz,其上约 210–390 Hz 为容性,约 390–1130 Hz 为一大段惯性区。参数为示意值。

结果与理论的定性描述一致。中性声道的第一个阻抗峰(对应第一共振峰)在 542 Hz:其下全部为惯性,544–932 Hz 为容性,932–1510 Hz 又是惯性。把喉前庭从 2.0 cm² 收窄到 0.5 cm²,150 Hz 处的等效惯性(X/ωX/\omega)从 741 增加到 1164 kg/m⁴,增加了约 57%,第一共振峰略升到 580 Hz。也就是说,在常见的说话与男声音区(100–400 Hz),收窄喉前庭使声带「背后」的空气质量明显变大。

声道负载如何改变起振阈压

第一章的阈压公式没有声道。现在把一个最简单的声道负载接上去:一块声带(质量、阻尼、刚度),一个矩形声门,声门上方的压力由声道负载与气流共同决定。把系统在静止点附近线性化,得到一个三次特征多项式,用劳斯—赫尔维茨判据(a2a1>a3a0a_2a_1 > a_3a_0)判断何时失稳。

推导

# Onset pressure with a vocal-tract load: one fold, m x'' + b x' + k x = Am (p_wave +
# p_e). p_wave: Titze's surface-wave term, a negative damping Am P T / (kt c xi0). p_e:
# pressure above the glottis from load Z; linearised Bernoulli gives
#   p_e = Z G x / (g1 + Z),  g1 = sqrt(2 rho P) / a0,  G = 4 P Lg / a0
# Z = I s (inertive) or 1/(Ca s) (compliant). The characteristic cubic is tested with
# Routh-Hurwitz (a2 a1 > a3 a0). Parameters illustrative, as in p02.
import math

RHO, KT, BAREA, CW, T, XI0, LG = 1.14, 1.1, 800.0, 1.0, 0.003, 0.001, 0.014
# medial area, rest glottal area (m^2), mass (kg)
AM, A0, M = LG * T, 2 * LG * XI0, 1e-4
# 120 Hz natural frequency; damping
K, B = M * (2 * math.pi * 120) ** 2, BAREA * LG * T

def poly(P, inert=0.0, compl=None, wave=True):
    b = B - (AM * P * T / (KT * CW * XI0) if wave else 0.0)
    g1, alpha = math.sqrt(2 * RHO * P) / A0, AM * 4 * P * LG / A0
    if compl is not None:                       # force = alpha x / (1 + tc s)
        tc = g1 * compl
        return M * tc, M + b * tc, b + K * tc, K - alpha
    if inert == 0.0:
        return 0.0, M, b, K
    tau = inert / g1                            # force = alpha tau s x / (1 + tau s)
    return M * tau, M + b * tau, b + (K - alpha) * tau, K

def unstable(c):
    a3, a2, a1, a0 = c
    return (a1 <= 0 or a0 <= 0) if a3 == 0.0 else (min(c) <= 0 or a2 * a1 <= a3 * a0)

def show(label, **kw):
    lo, hi = 1.0, 5000.0
    if not unstable(poly(hi, **kw)):
        return print(f"{label:46s} no onset below 5 kPa")
    for _ in range(60):
        mid = (lo + hi) / 2
        lo, hi = (lo, mid) if unstable(poly(mid, **kw)) else (mid, hi)
    a3, a2, a1, a0 = poly(hi, **kw)
    f = math.sqrt(a1 / a3 if a3 else K / M) / (2 * math.pi)
    print(f"{label:46s} Pth = {hi / 98.07:4.2f} cm H2O, onset near {f:3.0f} Hz")

show("surface wave only, no tract (Titze 1988)")
show("no surface wave, no tract (straight glottis)", wave=False)
show("no surface wave, inertive tract 741 kg/m^4", wave=False, inert=741.0)
show("no surface wave, inertive tract 1164 kg/m^4", wave=False, inert=1164.0)
show("surface wave + neutral tract (741 kg/m^4)", inert=741.0)
show("surface wave + narrow epilarynx (1164 kg/m^4)", inert=1164.0)
xc = 2 * math.pi * 120 * 741.0                  # same |X| at 120 Hz, but compliant
show("surface wave + compliant load of equal |X|", compl=1 / (2 * math.pi * 120 * xc))
# surface wave only, no tract (Titze 1988)       Pth = 2.99 cm H2O, onset near 120 Hz
# no surface wave, no tract (straight glottis)   no onset below 5 kPa
# no surface wave, inertive tract 741 kg/m^4     Pth = 10.32 cm H2O, onset near 112 Hz
# no surface wave, inertive tract 1164 kg/m^4    Pth = 6.24 cm H2O, onset near 106 Hz
# surface wave + neutral tract (741 kg/m^4)      Pth = 2.02 cm H2O, onset near 114 Hz
# surface wave + narrow epilarynx (1164 kg/m^4)  Pth = 1.96 cm H2O, onset near 110 Hz
# surface wave + compliant load of equal |X|     Pth = 5.17 cm H2O, onset near 111 Hz

这个示意模型复现了提策理论的几个要点。只有表面波(第一章的机制)时,阈压为 2.99 cm H2O,起振频率约等于声带的固有频率 120 Hz。去掉表面波、也没有声道时,矩形声门在 5 kPa 以下都不会起振:这是「对称形状得不到能量」的另一种表现。只有惯性声道、没有表面波时,声带也能起振(惯性 741 kg/m⁴ 时 10.3 cm H2O,1164 时 6.2 cm H2O):声道空气柱的惯性使声门上方的压力在声门张开(气流加速)时为正、闭合时为负,恰好与运动同相,起到了相位差的作用。这正是提策 2008 年强调的第二级相互作用。

两种机制同时存在时,中性声道使阈压从 2.99 降到 2.02 cm H2O(降低约 32%),狭窄喉前庭降到 1.96(约 34%)。在这个模型里,收窄喉前庭在中性声道之上只再带来很小的额外好处,因为表面波已经提供了大部分负阻尼。反过来,同样大小但为容性的负载把阈压提高到 5.17 cm H2O(约 73%):压力滞后于运动,从组织中吸走能量。这就是「f0 低于 F1 时声道助振、越过 F1 进入容性区时妨碍振动」的物理含义。

注

这个模型很粗糙。 它只有一块质量、一个与频率无关的电抗,忽略了声门内的空气惯性、气流分离点的移动和碰撞;电抗取 150 Hz 处的值,而真实声道的电抗随频率变化。一项三维计算研究在回顾以往文献时指出,收窄喉前庭对阈压的影响并不总是一致,也有研究观察到相反的方向 (Zhang 2023)。程序只说明方向与机制,不提供可以用于某位歌者的数字。

f0 越过 F1:失稳与「破音」

证据

提策、里德与波波洛让 9 名成年男性与 9 名成年女性做三种滑音练习,组合了基频滑动与共振峰滑动。他们的假设是:f0 穿过 F1 时声学负载剧烈变化,声带振动最容易失稳,应当出现与交叉同时发生的突然频率跳变、次谐波或混沌振动。结果是,有 f0–F1 交叉的发声中分岔更常见,作者据此认为非线性源—滤波耦合部分造成了声源的不稳定;男性受试者在交叉时的分岔更多,作者推测这是因为男性在日常说话中很少经历这种交叉 (Titze et al. 2008)。

这为框架中的说法提供了支持,但也划出了它的边界。第一,研究说的是「更常见」与「部分负责」,不是每次交叉都会失稳。第二,歌唱中最常说的「破音」通常指音区转换处的突然跳变(第四章的 M1/M2),它主要来自喉部肌肉与声带组织的振动机制改变;声道负载可以促发或加重这种跳变,但不是唯一原因。第三,女高音在高音区常常把 F1 调到 f0 附近(共振峰调谐)(Sundberg 1977),说明 f0 与 F1 的关系是可以训练和利用的,而不是一个必然的「危险区」。

半阻塞声道练习:吸管与水

半阻塞声道练习(semi-occluded vocal tract exercises,SOVTE)包括唇颤音、舌颤音、双唇摩擦音、哼鸣,以及对着吸管或浸在水中的管子发声。

证据

提策 2006 年用一个自激振荡声带模型与 44 段声道的计算机模拟,为这些练习提出了理论依据:唇部的半阻塞提高声门上与声门内的平均压力,从而加强源—声道相互作用;训练的目标是使声门阻抗与声道输入阻抗相匹配,而通过声带内收与喉前庭收窄,即使不阻塞嘴唇也能得到类似的效果 (Titze 2006)。提策在一篇面向歌者的短文中写道,吸管使声道的第一共振峰降到约 200 Hz,较低的谐波落在 F1 之上、F2 之下的惯性区域;起振前声带略微分开、两表面平行时阈压降低,振幅与碰撞力减小 (Titze 2018)。

我们的阻抗程序(图一暗红虚线)对此给出了一个更细的图景:加一根 14 cm、内径 4 mm 的吸管后,第一个阻抗峰降到 208 Hz,与「约 200 Hz」吻合;但在这个模型中,紧挨着它之上有一段约 210–390 Hz 的容性区,之后约 390–1130 Hz 是一大段惯性区。于是对一个 220 Hz 的音,基频本身处在容性区(X=−0.42X = -0.42),而第二、三、四、五谐波(440–1100 Hz)都在惯性区。这说明「吸管提高惯性抗」不能理解为「所有频率都变成惯性」:它改变的是哪些谐波处在有利的电抗区域。

吸管还有一个更直接的效果:背压。

推导

# Mouth back pressure during straw phonation, and the extra pressure with the tip in
# water. Straw: Poiseuille friction + kinetic loss of the exit jet (a rough engineering
# estimate):
#   dP = 8 mu L U / (pi r^4) + rho U^2 / (2 A^2);   water: dP_w = rho_w g h
# Transglottal pressure (lung minus mouth) drives the folds; lung pressure held at 10 cm
# H2O. Flows and sizes are illustrative.
import math

RHO, MU, RHO_W, G = 1.14, 1.85e-5, 1000.0, 9.81
CM = 98.07                                     # Pa per cm H2O
P_LUNG = 10.0                                  # cm H2O

def straw_dp(flow_lps, length_m, diam_m):
    u = flow_lps / 1000.0
    r, area = diam_m / 2, math.pi * diam_m ** 2 / 4
    lam = 8 * MU * length_m * u / (math.pi * r ** 4)
    kin = RHO * u * u / (2 * area * area)
    re = RHO * (u / area) * diam_m / MU
    return (lam + kin) / CM, re

print("straw 14 cm long, flow 0.15 L/s (soft sustained tone):")
print("  inner diameter | mouth pressure | transglottal | Reynolds number")
for d_mm in (8.0, 6.0, 4.0, 3.0):
    dp, re = straw_dp(0.15, 0.14, d_mm / 1000)
    print(f"      {d_mm:3.0f} mm      |  {dp:5.2f} cm H2O  |  {P_LUNG - dp:5.2f} cm H2O"
          f" | {re:6.0f}")
dp, _ = straw_dp(0.15, 0.27, 0.009)
print(f"resonance tube 27 cm x 9 mm (tube phonation): {dp:.2f} cm H2O before any water")
print("adding water at the tube tip (depth below the surface):")
for h_cm in (2, 5, 10):
    pw = RHO_W * G * h_cm / 100 / CM
    tg = P_LUNG - dp - pw
    print(f"  {h_cm:2d} cm deep: +{pw:4.1f} static -> mouth {dp + pw:4.1f}, "
          f"transglottal {tg:4.1f} cm H2O")
    if tg < 3:
        print("             (below a typical onset pressure: lung pressure must rise)")
print("note: bubbling adds a pressure ripple at a few to tens of Hz (not modelled here)")
# straw 14 cm long, flow 0.15 L/s (soft sustained tone):
#   inner diameter | mouth pressure | transglottal | Reynolds number
#         8 mm      |   0.09 cm H2O  |   9.91 cm H2O |   1471
#         6 mm      |   0.29 cm H2O  |   9.71 cm H2O |   1961
#         4 mm      |   1.46 cm H2O  |   8.54 cm H2O |   2942
#         3 mm      |   4.61 cm H2O  |   5.39 cm H2O |   3923
# resonance tube 27 cm x 9 mm (tube phonation): 0.08 cm H2O before any water
# adding water at the tube tip (depth below the surface):
#    2 cm deep: + 2.0 static -> mouth  2.1, transglottal  7.9 cm H2O
#    5 cm deep: + 5.0 static -> mouth  5.1, transglottal  4.9 cm H2O
#   10 cm deep: +10.0 static -> mouth 10.1, transglottal -0.1 cm H2O
#              (below a typical onset pressure: lung pressure must rise)
# note: bubbling adds a pressure ripple at a few to tens of Hz (not modelled here)

在 0.15 L/s 的轻柔流量下,14 cm 长的吸管内径从 8 mm 减到 3 mm,口内压力从不到 0.1 cm H2O 增加到约 4.6 cm H2O(摩擦与出口动能损失都随直径急剧增加)。表中的雷诺数在 4 mm 与 3 mm 时约为 2900 与 3900,已超过管流通常的层流上限(约 2300),泊肃叶公式只是粗略估计,实际的摩擦损失可能更大。如果肺压保持 10 cm H2O,跨声门压就从 9.9 降到 5.4 cm H2O。水阻练习中,管口每没入水下 1 cm,口内静压就增加约 1 cm H2O:2 cm 深时跨声门压约 7.9,5 cm 时约 4.9;10 cm 深时跨声门压降到零附近,歌者必须提高肺压才能继续发声。这提醒我们,水越深并不等于「练得越多」:它改变的是声门上下的压力平衡,并带来气泡造成的压力起伏。

证据

关于实际效果,一项让 36 名受试者分别做吸管发声与水中吸管发声的自身对照研究发现,吸管发声后振幅微扰显著降低、多数声学指标有一定改善;但水中吸管发声后,听者评定的紧张度反而显著升高,自评发声费力在两种练习之间没有差别 (Ford et al. 2024)。前面提到的三维计算研究认为,半阻塞练习的治疗益处很可能不在于直接提高发声效率或经济性 (Zhang 2023)。

因此 SOVTE 的机制分三个层次:可靠的物理效应(背压、第一共振峰下移、电抗重新分布);有待检验的生理推论(声带略分开、碰撞减小、阈压降低);以及仍不确定的实际效果。

本章小结

线性源—滤波理论假定声源不受声道影响,这在声门阻抗远大于声道阻抗时成立;喉前庭狭窄时二者相当,出现非线性相互作用。提策 2008 把它分为驱动气流与驱动声带两级。声道在第一共振峰以下呈惯性,惯性使声门上方的压力与声带运动同相,降低起振阈压(示意模型中约降低三分之一),容性负载则提高阈压。f0 与 F1 交叉时分岔更常见,但「破音」主要是喉部音区机制,声学负载只是因素之一。吸管把第一共振峰降到约 200 Hz、改变谐波所处的电抗区域并产生背压;它的实际效果仍缺乏一致的证据。下一章回到第 10 本讲过的歌手共振峰,在明示假设下算一笔信噪比的账。

参考文献

Fant, Gunnar. 1960. Acoustic Theory of Speech Production. Mouton.
Ford, D. S., Eric J. Hunter, and Dimitar D. Deliyski. 2024. “Immediate Effects of Semi-Occluded Vocal Tract Exercises on Acoustic, Auditory-Perceptual, and Self-Perceptual Measures of Voice Production.” Folia Phoniatrica Et Logopaedica 76 (5): 467–81. https://doi.org/10.1159/000536002.
Sundberg, Johan. 1977. “The Acoustics of the Singing Voice.” Scientific American 236 (3): 82–91.
Titze, Ingo R. 2006. “Voice Training and Therapy with a Semi-Occluded Vocal Tract: Rationale and Scientific Underpinnings.” Journal of Speech, Language, and Hearing Research 49 (2): 448–59. https://doi.org/10.1044/1092-4388(2006/035).
Titze, Ingo R. 2008. “Nonlinear Source–Filter Coupling in Phonation: Theory.” Journal of the Acoustical Society of America 123 (5): 2733–49. https://doi.org/10.1121/1.2832337.
Titze, Ingo R. 2018. “Major Benefits of Semi-Occluded Vocal Tract Exercises.” Journal of Singing 74 (3): 311–12.
Titze, Ingo R., Tobias Riede, and Peter Popolo. 2008. “Nonlinear Source–Filter Coupling in Phonation: Vocal Exercises.” Journal of the Acoustical Society of America 123 (4): 1902–15. https://doi.org/10.1121/1.2832339.
Titze, Ingo R., and Brad H. Story. 1997. “Acoustic Interactions of the Voice Source with the Lower Vocal Tract.” Journal of the Acoustical Society of America 101 (4): 2234–43. https://doi.org/10.1121/1.418246.
Zhang, Zhaoyan. 2023. “The Influence of Source-Filter Interaction on the Voice Source in a Three-Dimensional Computational Model of Voice Production.” Journal of the Acoustical Society of America 154 (4): 2462–75. https://doi.org/10.1121/10.0021879.

Fan, Y. (2026). Vocal Biomechanics, Non-Linear Source-Filter Coupling and Auditory-Motor Feedback: From Titze's Self-Sustained Vocal Fold Oscillation and Vocal-Tract Inertance to the Lombard Effect, Read Beside Classical Chinese Vocal Aesthetics [嗓音生物力学、非线性源-滤波耦合与听觉-运动反馈的数学模型] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23770084 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).