5D Library › 嗓音生物力学、非线性源-滤波耦合与听觉-运动反馈的数学模型 · English
第六章 隆巴德效应与骨导—气导混合监听
一个百年的反射
第 10 本第三章介绍了隆巴德效应。本章看它在歌唱中的两种处境——响亮的伴奏,以及耳塞或返听耳机——因为它们改变了第五章那个回路的输入。
证据
法国耳鼻喉科医生隆巴德 1911 年报告了「提高嗓音的征象」:说话者在噪声中会提高音量 (Lombard 1911)。莱恩与特拉内尔 1971 年的经典综述把隆巴德效应与「侧音」效应放在一起讨论:前者是听到的噪声越大、说话越响;后者是听到的自己的声音被放大时,说话变轻;两者都说明说话者在用耳朵调节音量 (Lane and Tranel 1971)。此后在多种鸟类与哺乳动物中都发现了这一效应,它是听觉反馈塑造发声最稳健的例子之一 (Zollinger and Brumm 2011; Brumm and Zollinger 2011)。皮克等人发现,隆巴德效应「极其稳定而稳健」:单靠指令几乎不能使未受训练的说话者抑制它;提供显示声强的视觉反馈后,受试者才学会抑制,而且撤去反馈后仍能保持——但他们主要是整体降低了音量,而不是改变了对噪声的反应方式 (Pick et al. 1989)。在合唱中也观察到了隆巴德效应 (Tonkinson 1994)。
证据
加尼耶、昂里克与迪布瓦比较了通过耳机与通过扬声器播放噪声的条件:耳机使说话者「沉浸」在噪声中,嗓音的变化更大;在耳机中加入说话者自己声音的返送可以减小这种差别,但不能完全抵消。他们还发现,有交流对象时的嗓音调整与独自朗读时不同 (Garnier et al. 2010)。
两条路,一个耳蜗
歌者听到自己的声音有两条路:气导——声音从嘴唇出来,绕过脸颊进入外耳道;骨导——声带振动经颅骨与软组织直接传到内耳。
证据
赖因费尔特等人比较了十个音素发声时自身声音的骨导与气导成分,发现对大多数音素,骨导部分在 1–2 kHz 之间占优,不同音素因发声方式不同而略有差别 (Reinfeldt et al. 2010)。当外耳道被堵住时,骨导传入外耳道的低频声音不再能从耳道口逸出,耳道内的低频声压升高,即堵耳效应;施滕费尔特与赖因费尔特的模型与测量显示,堵耳效应在各种堵塞深度下都存在,入耳式耳机在低频产生的堵耳效应大于压耳式耳机 (Stenfelt and Reinfeldt 2007)。
这里有一个常被忽略的物理事实:气导与骨导的自身声音在同一个耳蜗里相加。外界的伴奏声经由气导到达同一个耳蜗,同时掩蔽这两部分自身声音。所以「靠骨导听自己」并不是一条绕开掩蔽的独立通道。耳塞与返听耳机真正改变的是比例:它们把外界声音与气导的自身声音一起衰减,却放过(并在低频放大)骨导的自身声音。
下面的程序按频带算这笔账:自身声音的气导与骨导成分、伴奏、耳塞或返听耳机的隔声与堵耳效应,以及返听耳机中自身声音的混音增益。每个频带的「自身声音与伴奏之比」决定那个频带的音高分辨精度,各频带按方差倒数合并;最后与一个精度较低、但不受噪声影响的体感通道融合(稳态卡尔曼权重)。所有声级都是示意假设。
推导
# Hearing yourself through air and bone in loud accompaniment, band by band
# (illustrative). Air- (AC) and bone-conducted (BC) own voice add up in the SAME cochlea;
# outside noise masks both. Plugs cut AC voice and band by 20 dB and boost BC at low
# frequencies (occlusion); in-ear monitors isolate 25 dB and add the own voice back at mix
# gain m dB. Band pitch sd = 6 cents x (1 + 10^(-SNR/10)), combined by inverse variance,
# then fused with a noise-free laryngeal/vibrotactile sense (sd 25 cents, assumed).
import math
BANDS = (250, 500, 1000, 2000, 4000)
VOICE_AC = (78, 82, 80, 74, 66) # own voice by air, open ear
# bone path relative to air (BC dominant at 1-2 kHz)
BC_RE_AC = (-6, -3, 2, 3, -10)
OCCL = (15, 10, 3, 0, 0) # occlusion boost of the bone path, ear shut
ORCH = (92, 94, 90, 82, 74) # loud band at the singer's ear
SD_SOMA = 25.0
db_sum = lambda *ls: 10 * math.log10(sum(10 ** (v / 10) for v in ls))
def condition(kind, mix=0.0):
rows = []
for i in range(len(BANDS)):
ac, bc, noise = VOICE_AC[i], VOICE_AC[i] + BC_RE_AC[i], ORCH[i]
if kind == "quiet":
noise = 30.0
elif kind in ("plugs", "iem"):
cut = 20 if kind == "plugs" else 25
ac, noise, bc = ac - cut, noise - cut, bc + OCCL[i]
if kind == "iem":
ac = db_sum(ac, VOICE_AC[i] + mix) # monitor feed of the own voice
rows.append((db_sum(ac, bc) - noise, 1 / (1 + 10 ** ((bc - ac) / 10))))
sds = [6.0 * (1 + 10 ** (-snr / 10)) for snr, _ in rows]
sd_aud = 1 / math.sqrt(sum(1 / s ** 2 for s in sds))
prec = 1 / sd_aud ** 2 + 1 / SD_SOMA ** 2
return rows, sd_aud, (1 / sd_aud ** 2) / prec, 1 / math.sqrt(prec)
print("SNR = own voice minus accompaniment at the cochlea (dB, 250 / 1k / 4k Hz);")
print("air = share of own voice arriving by air; sd in cents; w = weight on hearing")
print("condition | 250 1k 4k | air | hear | w | fused")
CASES = (("quiet room", "quiet", 0), ("open ears, loud band", "open", 0),
("foam ear plugs", "plugs", 0), ("in-ear monitor -10 dB", "iem", -10),
("in-ear monitor +0 dB", "iem", 0), ("in-ear monitor +6 dB", "iem", 6))
for name, kind, mix in CASES:
rows, sd_aud, w, sd_f = condition(kind, mix)
snrs = " ".join(f"{rows[i][0]:+5.1f}" for i in (0, 2, 4))
air = sum(a for _, a in rows) / len(rows)
print(f"{name:22s}| {snrs} | {air:4.0%} | {sd_aud:5.1f} | {w:.2f} | {sd_f:5.1f}")
# SNR = own voice minus accompaniment at the cochlea (dB, 250 / 1k / 4k Hz);
# air = share of own voice arriving by air; sd in cents; w = weight on hearing
# condition | 250 1k 4k | air | hear | w | fused
# quiet room | +49.0 +54.1 +36.4 | 62% | 2.7 | 0.99 | 2.7
# open ears, loud band | -13.0 -5.9 -7.6 | 62% | 14.2 | 0.76 | 12.4
# foam ear plugs | +15.0 +15.0 +2.4 | 2% | 2.9 | 0.99 | 2.9
# in-ear monitor -10 dB | +20.1 +20.1 +10.1 | 12% | 2.8 | 0.99 | 2.7
# in-ear monitor +0 dB | +20.5 +21.2 +17.4 | 35% | 2.7 | 0.99 | 2.7
# in-ear monitor +6 dB | +21.8 +23.5 +23.1 | 60% | 2.7 | 0.99 | 2.7结果可以分成四种处境来读。
安静的房间:自身声音高出环境噪声 36–54 dB,听觉估计的标准差约 2.7 音分,自身声音中约 62% 来自气导。
张开耳朵、响亮的乐队:自身声音在各频带都低于伴奏 6–13 dB,听觉估计的标准差升到 14.2 音分;融合后体感通道获得约四分之一的权重(听觉权重 0.76),合并的标准差为 12.4 音分。这就是第五章假说所说的「掩蔽下体感权重上升」在模型中的样子。
泡沫耳塞:伴奏与气导的自身声音都衰减 20 dB,骨导的自身声音却在低频被堵耳效应放大,于是自身声音与伴奏之比在中低频回到约 +15 dB(4 kHz 约 +2 dB),听觉精度恢复到 2.9 音分。代价是,到达耳蜗的自身声音只有约 2% 来自气导:歌者听到的几乎完全是一个低频被放大、高频较弱的骨导声音,与听众听到的声音相去甚远。
返听耳机:隔声更好,再把麦克风拾取的自身声音混入耳机。混音增益从 −10 dB 提高到 +6 dB,气导所占比例从 12% 回到 60%,接近张开耳朵时的 62%,同时在中低频保持约 +20 dB 的信噪比。也就是说,返听混音的意义不只是「更响」,而是恢复自身声音中气导与骨导的自然比例。
听到的变了,唱法也会变
如果歌者用耳朵调节音量,那么改变他听到的东西,就会改变他唱出来的东西。下面的程序用两条假设的斜率(隆巴德与侧音各为每分贝 0.5 分贝)估计四种监听条件下的嗓音级,以及传到听众席的歌声与乐队之比。
推导
# Lombard and sidetone effects with open ears, plugs and in-ear monitors (illustrative
# regulation model, not fitted). Vocal level V (dB re open ears in quiet):
# V = sL * max(0, N_heard - N0) - sS * (self_heard - self_open), sL = sS = 0.5 ASSUMED
# The audience hears the singer by air only: plugs change what the singer hears, not the
# hall.
import math
# band at the ear (dB), Lombard onset, slopes
N_BAND, N0, SL, SS = 94.0, 45.0, 0.5, 0.5
# own voice at the cochlea by path, open ear (dB)
AIR, BONE = 85.0, 83.0
db_sum = lambda *ls: 10 * math.log10(sum(10 ** (v / 10) for v in ls))
SELF_OPEN = db_sum(AIR, BONE)
# 20 / 25 dB isolation; occlusion +8 dB on bone
def voice_level(kind, mix=0.0):
n, s = {"open": (N_BAND, SELF_OPEN),
"plugs": (N_BAND - 20, db_sum(AIR - 20, BONE + 8)),
"iem": (N_BAND - 25, db_sum(AIR - 25, BONE + 8, AIR + mix))}[kind]
return SL * max(0.0, n - N0) - SS * (s - SELF_OPEN), n, s
print(f"accompaniment {N_BAND:.0f} dB at the ear; slopes sL = sS = {SL} dB/dB (assumed)")
print("condition | band heard | own voice heard | vocal level | to the hall*")
v_open = voice_level("open")[0]
CASES = (("open ears", "open", 0), ("foam ear plugs", "plugs", 0),
("in-ear, own mix -6 dB", "iem", -6), ("in-ear, own mix +6 dB", "iem", 6))
for name, kind, mix in CASES:
v, n, s = voice_level(kind, mix)
print(f"{name:21s}| {n:5.1f} dB | {s - SELF_OPEN:+5.1f} dB | {v:+5.1f} dB "
f" | {v - v_open:+5.1f} dB")
print("* change in the singer-to-band ratio in the hall, relative to open ears")
print(f"in a quiet room (30 dB) the model predicts no Lombard rise "
f"({SL * max(0.0, 30 - N0):+.1f} dB)")
# accompaniment 94 dB at the ear; slopes sL = sS = 0.5 dB/dB (assumed)
# condition | band heard | own voice heard | vocal level | to the hall*
# open ears | 94.0 dB | +0.0 dB | +24.5 dB | +0.0 dB
# foam ear plugs | 74.0 dB | +3.9 dB | +12.6 dB | -11.9 dB
# in-ear, own mix -6 dB| 69.0 dB | +4.1 dB | +9.9 dB | -14.6 dB
# in-ear, own mix +6 dB| 69.0 dB | +6.9 dB | +8.6 dB | -15.9 dB
# * change in the singer-to-band ratio in the hall, relative to open ears
# in a quiet room (30 dB) the model predicts no Lombard rise (+0.0 dB)在 94 dB 的伴奏中张开耳朵演唱,模型预测歌者的嗓音级比安静时提高约 24.5 dB——这是一个需要警惕的嗓音负荷。戴上泡沫耳塞后,歌者听到的乐队降到 74 dB,又因堵耳效应听到自己更响(+3.9 dB),于是嗓音级只提高 12.6 dB;但听众席并没有戴耳塞,传到听众的歌声与乐队之比因此下降约 12 dB。返听耳机在两种混音下下降约 15–16 dB。这个结果的方向——隔声与堵耳使歌者唱得更轻——与侧音效应和加尼耶等人的观察一致;它的大小完全取决于假设的斜率,不能当作预测。
取舍很实际:隔声保护听力、减轻嗓音负荷、让音高更易听清,但歌者需要另外的线索(音响师、录音回放、有意识的校准)才能知道自己在听众席的效果。
注
这不是听力或耳科建议。 耳塞与返听耳机首先是保护听力的工具,长期在响亮环境中演出的人应当使用合适的听力保护,并咨询听力师。本章的计算只讨论它们对自我监听的声学影响;入耳式设备的佩戴、音量设置与听力检查请遵从专业人员的意见。
假说 · 尚未验证
单耳半堵假说(尚未确立)。在合唱中,用手掌轻轻盖住一只耳朵(另一只耳朵张开)的歌者,与两耳都张开时相比,音高误差更小,而嗓音级的提高也更少;与两耳都堵住时相比,听众感知的音色变化更小。可以检验的预测:在一项合唱团员自身对照的随机交叉研究中,单耳半堵条件下的平均绝对音高误差低于两耳张开,嗓音级低于两耳张开、高于两耳堵住。如果单耳半堵在音高误差上与两耳张开没有差别,这一假说就被推翻。(第八章核查表第四步用的是这一思路的个人版本。)
本章小结
隆巴德效应是稳健、近乎自动的反射:噪声越大说话越响,听到自己越响说话越轻;单靠指令难以抑制,需要反馈训练。歌者的自身声音经气导与骨导在同一个耳蜗相加(骨导在 1–2 kHz 占优),外界噪声同时掩蔽两者。示意计算显示:在响亮的乐队中张开耳朵,自身声音低于伴奏 6–13 dB,音高估计变差,体感权重上升;耳塞恢复了信噪比,却使听到的自身声音几乎全部来自骨导;返听混音可以恢复气导与骨导的自然比例。隔声还会使歌者唱得更轻,传到听众的歌声与乐队之比下降——方向可靠,大小取决于假设。下一章离开测量,读几段古人关于歌唱与聆听的文字。
参考文献
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).