5D Library › 声音说服力、韵律信息论与人际生理同步 · English
第二章 韵律的信息论:均匀信息密度与停顿的力量
惊奇度
香农的信息论给了我们一个衡量「一个词带来多少新信息」的方法:一个词在上下文中越出乎意料,它携带的信息就越多。这个量叫作惊奇度:
单位是比特。在「我们的获客成本下降了百分之——」之后,「九十」比「十」更出乎意料,因此携带更多的信息。
均匀信息密度
利维与耶格提出均匀信息密度假说:说话者倾向于让信息在时间上分布得比较均匀,避免某一处信息过于密集而超出听者的处理能力,也避免某一处过于稀疏而浪费时间 (Levy and Jaeger 2007; Jaeger 2010)。一种实现方式是在高信息的位置放慢速度、加入停顿,或者用更完整的句法形式;在低信息的位置则加快、省略。
证据
停顿出现在哪里。 戈德曼-艾斯勒早在 1958 年就发现,自然言语中的停顿往往出现在可预测性较低的词之前 (Goldman-Eisler 1958)。不同语言,相近的信息速率。 库佩等人比较了 17 种语言的朗读语料,发现各语言每个音节携带的信息量差别很大,但信息密度高的语言语速较慢,信息密度低的语言语速较快,结果是信息传输速率都集中在每秒约 39 比特附近 (Coupé et al. 2019)。这提示人类言语可能在一个大致恒定的信息速率附近运作。
一句提案的信息流
推导
一句提案「十八个月里,我们每位顾客的获取成本下降了百分之九十」(程序中用英文词)。每个词在上下文中的概率是示意性的听者模型,不是训练出来的语言模型。比较三种说法:平稳的每秒 4.5 个音节;匆忙的每秒 6.5 个音节;以及平稳语速下,在关键词「九十」前停顿 0.6 秒、把关键词拉长 30%。
# Surprisal and information rate along one sentence of a pitch. Surprisal of a word is
# -log2 P(word | preceding words). The probabilities below are an ILLUSTRATIVE listener model (how
# expected each word is at that point), not output of a trained language model.
# Uniform Information Density (Levy & Jaeger 2007; Jaeger 2010): speakers tend to spread information
# evenly; lengthening or pausing before improbable words is one phonetic way to do so (an extension).
import math
WORDS = [("in", 0.20, 1), ("eighteen", 0.02, 2), ("months", 0.60, 1), ("our", 0.30, 1), ("cost", 0.10, 1),
("per", 0.50, 1), ("customer", 0.40, 3), ("fell", 0.15, 1), ("by", 0.60, 1),
("ninety", 0.004, 2), ("percent", 0.80, 2)] # (word, probability in context, syllables)
KEY = "ninety"
def timeline(rate_syl_s, pause_before_key=0.0, key_stretch=1.0):
t, rows = 0.0, []
for w, p, syl in WORDS:
if w == KEY: t += pause_before_key
dur = syl / rate_syl_s * (key_stretch if w == KEY else 1.0)
rows.append((w, -math.log2(p), t, dur)); t += dur
return rows, t
total_bits = sum(-math.log2(p) for _, p, _ in WORDS)
print(f"total surprisal of the sentence: {total_bits:.1f} bits; key word '{KEY}': {-math.log2(0.004):.1f} bits")
for label, args in (("steady, 4.5 syllables/s", (4.5,)), ("rushed, 6.5 syllables/s", (6.5,)),
("paced: 4.5 syl/s, 0.6 s pause before key word, key word 30 % longer", (4.5, 0.6, 1.3))):
rows, T = timeline(*args)
peak = max(bits / dur for _, bits, _, dur in rows)
key = [bits / dur for w, bits, _, dur in rows if w == KEY][0]
print(f"{label}:\n {T:.2f} s, mean {total_bits / T:.1f} bits/s, peak {peak:.1f} bits/s (the key word: {key:.1f} bits/s)")
# total surprisal of the sentence: 27.8 bits; key word 'ninety': 8.0 bits
# steady, 4.5 syllables/s:
# 3.56 s, mean 7.8 bits/s, peak 17.9 bits/s (the key word: 17.9 bits/s)
# rushed, 6.5 syllables/s:
# 2.46 s, mean 11.3 bits/s, peak 25.9 bits/s (the key word: 25.9 bits/s)
# paced: 4.5 syl/s, 0.6 s pause before key word, key word 30 % longer:
# 4.29 s, mean 6.5 bits/s, peak 14.9 bits/s (the key word: 13.8 bits/s)整句话的惊奇度约为 28 比特,其中关键词「九十」一个词就占了 8 比特。平稳说出时,关键词处的瞬时信息速率约为每秒 18 比特;匆忙说出时升到每秒 26 比特;停顿并拉长后降到每秒 14 比特。
有限容量的听者
信息速率高本身不是问题;问题是听者能否跟上。下面这个模型把听者看作一个有处理上限的系统:信息到达得比它能处理的更快时,就在一个「待处理队列」中积压;一个词结束时如果队列积压很多,这个词就只能被部分编码。
推导
听者每秒最多处理 10 比特,积压超过 6 比特时新的信息几乎无法编码(两个数都是示意性的)。比较四种说法下关键词被编码的程度:平稳、匆忙、紧张(匆忙,再加上两个 0.3 秒的「呃」,第二个就在关键词之前),以及停顿加拉长。
# A limited-capacity listener (a model, not a measured law). Information arrives word by word (the
# surprisal of the previous program, spread evenly over each word's duration). The listener
# integrates it at most C bits per second; anything faster waits in a backlog. A word is encoded
# in proportion to how empty the backlog is when it ends: encoded = max(0, 1 - backlog / B).
# C = 10 bits/s and B = 6 bits are illustrative choices.
import math
# The sentence and delivery timings of the previous program, repeated so this one runs on its own.
WORDS = [("in", 0.20, 1), ("eighteen", 0.02, 2), ("months", 0.60, 1), ("our", 0.30, 1), ("cost", 0.10, 1),
("per", 0.50, 1), ("customer", 0.40, 3), ("fell", 0.15, 1), ("by", 0.60, 1),
("ninety", 0.004, 2), ("percent", 0.80, 2)] # (word, probability in context, syllables)
KEY = "ninety"
def timeline(rate_syl_s, pause_before_key=0.0, key_stretch=1.0):
t, rows = 0.0, []
for w, p, syl in WORDS:
if w == KEY: t += pause_before_key
dur = syl / rate_syl_s * (key_stretch if w == KEY else 1.0)
rows.append((w, -math.log2(p), t, dur)); t += dur
return rows, t
C, B, DT = 10.0, 6.0, 0.001
def listen(words_timed, fillers=()):
"""words_timed: (word, bits, start, duration). fillers: list of (start, duration), 0 bits."""
events = sorted([(s, d, b, w) for w, b, s, d in words_timed] + [(s, d, 0.0, "uh") for s, d in fillers])
backlog, t, out = 0.0, 0.0, {}
for start, dur, bits, w in events:
while t < start: # silence: the backlog drains
backlog = max(0.0, backlog - C * DT); t += DT
steps = max(1, int(dur / DT))
for _ in range(steps):
backlog = max(0.0, backlog + bits / steps - C * DT); t += DT
if w != "uh": out[w] = max(0.0, 1 - backlog / B)
return out
def shift(rows, after_word, by):
out, moved = [], False
for w, b, s, d in rows:
out.append((w, b, s + (by if moved else 0.0), d))
if w == after_word: moved = True
return out
steady, _ = timeline(4.5)
rushed, _ = timeline(6.5)
paced, _ = timeline(4.5, 0.6, 1.3)
# a nervous delivery: rushed, plus two 0.3 s fillers ('uh'), the second just before the key word
nervous = shift(shift(rushed, "our", 0.3), "by", 0.3)
fill = [(dict((w, s) for w, _, s, _ in nervous)["our"] - 0.3, 0.3), (dict((w, s) for w, _, s, _ in nervous)["ninety"] - 0.3, 0.3)]
print("delivery | key word encoded | mean over all words")
for label, rows, f in (("steady 4.5 syl/s", steady, ()), ("rushed 6.5 syl/s", rushed, ()),
("nervous: rushed + 2 fillers", nervous, fill), ("paced: pause 0.6 s + key word longer", paced, ())):
enc = listen(rows, f)
print(f"{label:37s} | {enc[KEY]:16.0%} | {sum(enc.values()) / len(enc):18.0%}")
# delivery | key word encoded | mean over all words
# steady 4.5 syl/s | 41% | 90%
# rushed 6.5 syl/s | 0% | 53%
# nervous: rushed + 2 fillers | 18% | 75%
# paced: pause 0.6 s + key word longer | 63% | 92%在这个模型中:
- 平稳说出时,关键词被编码了约四成,全句平均约九成。
- 匆忙说出时,关键词几乎完全没有被编码,全句平均也只有约一半:信息到达得太快,积压越来越多。
- 停顿加拉长使关键词的编码提高到约六成,是四种说法中最高的。停顿让积压在关键词到来之前清空,拉长让关键词的信息分散在更长的时间里。
- 一个值得注意的结果是:紧张的说法(匆忙加两个「呃」)比单纯的匆忙更好,关键词的编码从几乎为零提高到约两成。原因很简单:「呃」本身几乎不携带信息,它占用的 0.3 秒给了听者清空积压的时间,作用类似于一次停顿。
这个模型支持「在关键信息前停顿、放慢」的建议,但它也给「填充词导致信道过载」这种流行说法加上了限制。
证据
填充词并不只是有害。 科利等人记录听者的脑电,发现跟在「er」后面的词引起的 N400 效应(一个与词语预期程度相关的脑电成分)减弱,而且在之后的记忆测验中被记得更好 (Corley et al. 2007)。弗劳恩多夫与沃森发现,故事中带有填充停顿(「uh」)的情节点,比没有停顿或被咳嗽打断的情节点被记得更好 (Fraundorf and Watson 2011)。另一方面,布伦南与威廉斯发现,回答之前的填充词和停顿会让听者认为说话者对答案不那么有把握 (Brennan and Williams 1995)。
所以,填充词的作用是双重的:它像停顿一样给听者时间,提高了随后一个词的编码与记忆;同时它也可能传递「说话者不确定」的信号,降低听者对说话者把握程度的判断。安静的停顿也许能保留前一种好处而避免后一种代价,但这一点还需要直接的实验比较。
注
模型能说明什么。 这两段程序中的概率、处理上限和积压阈值都是示意性的,没有经过测量。它们说明了一种机制在逻辑上可以怎样运作:在信息高峰之前创造时间,可以帮助听者接收高峰处的信息。它们不能证明这就是听众实际的处理方式,也不能给出停顿的最佳长度。库佩等人的每秒 39 比特是语言层面在音节水平上的平均信息速率,与本模型中「词语惊奇度」的数值不能直接比较。
假说 · 尚未验证
安静停顿优于填充词假说(尚未确立)。在关键信息之前插入同样长度的安静停顿与填充词「呃」,两者对听众记住关键信息的帮助相近,但安静停顿使听众对说话者把握程度与可信度的评价更高。如果实验显示填充词对记忆的帮助明显大于安静停顿,或者两者在可信度评价上没有差别,这一假说就被削弱。
本章小结
用惊奇度衡量,一句话的信息往往集中在少数几个出乎意料的词上。均匀信息密度假说认为说话者倾向于把信息在时间上摊开,自然言语中的停顿也往往出现在低可预测性的词之前。一个有限容量的听者模型显示:匆忙会使关键信息几乎无法被编码,在关键词前停顿并拉长能明显改善;填充词也有类似停顿的作用,但它同时可能降低听者对说话者把握程度的判断。下一章讨论另一个韵律特征:句子结尾的音高走向。
参考文献
Fan, Y. (2026). Acoustic Persuasion, Prosodic Information Theory and Interpersonal Physiological Synchrony: Pitch Contours, Pause Entropy and Listener Autonomic Coupling in Public Speaking and Leadership [声音说服力、韵律信息论与人际生理同步] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23753267 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).