5D Library › 发声的生物力学与注意力转移 · English
第三章 听觉–运动反馈环
靠耳朵唱歌
歌者用两类信息控制音高。前馈控制使用学会了的、从目标音到肌肉指令的映射:受过训练的歌者在听到之前就能落在音上。反馈控制把听到的与想要的作比较,并纠正差值。两者缺一不可。没有前馈,每个音一开始都会错;没有反馈,细小的漂移永远不会被发现。
两个经典实验
证据
1911 年,法国耳鼻喉科医生艾蒂安·隆巴德(Étienne Lombard)报告,说话者在听不清自己时,例如在噪声中,会不自觉地提高音量。此后在许多鸟类和哺乳动物中都发现了隆巴德效应,它是听觉反馈塑造发声输出最稳健的例子之一 (Brumm and Zollinger 2011)。
证据
当一个人持续唱一个音时,如果用电子方法改变他耳机中自己声音的音高,他的嗓音基频会随之变化,通常与偏移方向相反,大约在 100–150 毫秒后开始:这就是变调反馈反射(pitch-shift reflex)(Burnett et al. 1998)。当要求被试主动作出反应时,可以区分出一个早期的反射性成分和一个较晚的随意成分,而指令会改变反应的时程 (Hain et al. 2000)。
音高用音分衡量:一个平均律半音是 100 音分,一个八度是 1200 音分。音分按人耳的方式描述音准,即比值,而不是赫兹。
推导
赫兹换算为音分,以及为什么同样的赫兹误差在低音区更严重。
import math
# Cents: 100 cents = one equal-tempered semitone; 1200 cents = one octave.
def cents(f, ref):
return 1200 * math.log2(f / ref)
A4 = 440.0
for f in (441.0, 445.0, 452.0, 466.16):
print(f"{f:7.2f} Hz against A4 = 440 Hz: {cents(f, A4):+6.1f} cents")
# The same 10 Hz error is a different number of cents at different pitches:
for ref in (220.0, 440.0, 880.0):
print(f"10 Hz sharp of {ref:5.0f} Hz = {cents(ref + 10, ref):5.1f} cents")
# 441.00 Hz against A4 = 440 Hz: +3.9 cents
# 445.00 Hz against A4 = 440 Hz: +19.6 cents
# 452.00 Hz against A4 = 440 Hz: +46.6 cents
# 466.16 Hz against A4 = 440 Hz: +100.0 cents
# 10 Hz sharp of 220 Hz = 77.0 cents
# 10 Hz sharp of 440 Hz = 38.9 cents
# 10 Hz sharp of 880 Hz = 19.6 cents回路中的延迟
任何带延迟的反馈回路,纠正的力度都有上限。这里,歌者大约晚 120 毫秒听到音高误差,并以与听到的误差成正比的速度纠正。纠正温和时,误差平滑地消失。纠正太强时,针对旧误差作出的纠正会冲过已经变化了的音高,于是声音来回摆动。
推导
一个延迟负反馈模型 , 毫秒,一个音开头出现 50 音分的误差。当 超过 时回路开始振荡。
import math
# Pitch held by delayed negative feedback. The singer hears the pitch error
# τ seconds late and corrects at a rate proportional to it:
# dx/dt = −G · x(t − τ) (x = pitch error in cents)
# A step error of 50 cents appears at t = 0 (for example, a wrong onset).
def run(G, tau=0.12, x0=50.0, dt=0.001, T=3.0):
lag = int(tau / dt)
xs = [x0] * (lag + 1)
for _ in range(int(T / dt)):
xs.append(xs[-1] - G * xs[-1 - lag] * dt)
return xs[lag:]
tau = 0.12
G_crit = math.pi / (2 * tau)
print(f"delay τ = {tau * 1000:.0f} ms → oscillation starts at gain G = π/(2τ) = {G_crit:.1f} per s, "
f"frequency 1/(4τ) = {1 / (4 * tau):.1f} Hz")
for G in (4.0, 9.0, 12.0, 15.0):
xs = run(G, tau)
late = xs[2000:] # the last second
amp = (max(late) - min(late)) / 2
under = -min(xs)
settle = next((i / 1000 for i in range(len(xs)) if all(abs(v) < 5 for v in xs[i:])), None)
print(f"G = {G:4.1f}/s (Gτ = {G * tau:.2f}): overshoot {under:5.1f} cents, "
f"swing in 3rd second ±{amp:6.1f} cents, "
+ (f"within ±5 cents after {settle:.2f} s" if settle else "never settles"))
# delay τ = 120 ms → oscillation starts at gain G = π/(2τ) = 13.1 per s, frequency 1/(4τ) = 2.1 Hz
# G = 4.0/s (Gτ = 0.48): overshoot 1.5 cents, swing in 3rd second ± 0.0 cents, within ±5 cents after 0.27 s
# G = 9.0/s (Gτ = 1.08): overshoot 29.2 cents, swing in 3rd second ± 0.4 cents, within ±5 cents after 0.87 s
# G = 12.0/s (Gτ = 1.44): overshoot 47.3 cents, swing in 3rd second ± 17.1 cents, never settles
# G = 15.0/s (Gτ = 1.80): overshoot 663.3 cents, swing in 3rd second ± 605.1 cents, never settles增益为每秒 4 时,误差约四分之一秒就消失,几乎没有过冲。每秒 9 时,过冲 30 音分,将近一秒才稳定。每秒 12 时,虽然仍略低于临界增益,却会以几十音分的幅度摆动好几秒;超过临界值,摆动越来越大。摆动的频率,在 120 毫秒延迟下约为 2 Hz,是由延迟决定的,而不是歌者的意图。
证据
反馈回路不稳定并不只是一个教学比喻。提策等人把颤音,即每秒 5–7 次的规则音高波动,建模为一种反射共振:一个控制声带长度、潜伏期超过 40 毫秒的反馈回路,在其固有频率附近振荡;歌者是从本已存在的生理性震颤中培养出颤音的 (Titze et al. 2002)。
假说 · 尚未验证
尚未确立。 把歌者的注意力引向喉咙和呼吸肌肉,会提高逐时音高纠正的有效增益,从而产生模型所示的那种缓慢的音高摇晃。该假说预测:持续唱一个音时,被要求监控和控制喉部的歌者,其基频在 1–4 Hz 频带内的波动,大于被要求关注房间里的声音时,而 5–7 Hz 的颤音频带不变。如果在一项歌者自身的随机比较中,1–4 Hz 频带的功率在两种指令下没有差别,假说就被推翻。
注
这个模型是有意简化的。真实的音高控制混合了前馈与反馈,除了听觉还利用触觉和肌肉感觉,并且会调整自己的增益。模型要说明的只有一点:带延迟的回路,不可能仅仅靠更用力地纠正而变得更准。
参考文献
Fan, Y. (2026). The Biomechanics of Phonation and Attentional Shift: Myoelastic-Aerodynamic Theory, the Singer's Formant, Auditory-Motor Feedback and External Focus of Attention [发声的生物力学与注意力转移] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23719625 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).