在一间AI实验室里,有个叫“小木偶”的语音合成系统。它能把任何文字读出来,可声音像念经一样平——没有快慢、没有高低、没有停顿。直到一位退休的音乐指挥家老肖进驻实验室,他说:“你不是在念字,你是在指挥一支乐队!每个字都有节奏快慢,每个句子都有旋律起伏,每段话都有轻重缓急。”老肖把指挥棒一挥,小木偶的声音第一次有了“呼吸感”。这个故事里,老肖的那套“指挥心得”,正是语音合成中韵律建模技术(prosody modeling)的核心。本文就带你认识:韵律是什么、怎么用数字描述它、怎么从文本预测它、怎么让机器模仿人类的“指挥风格”,以及怎么给声音“加戏”让它更有表现力。
学习韵律建模,是让TTS从“能说话”迈向“说得好”的关键一步。掌握它,你将具备优化自然度、可控性和表现力的核心工程能力,是语音合成工程师进阶的必修课。
可视化演示
展示语音合成中三条韵律特征曲线(F0基频/DUR时长/ENG能量)随时间变化,音素边界标注,以及韵律迁移四阶段流程(源语音→特征提取→嵌入向量→目标语音)。
本节配有交互动效(进入视口后自动加载,约 3KB)。
韵律特征曲线 F0 基频曲线:控制音高起伏,决定语调 DUR 时长模型:预测每个音素的持续时长 ENG 能量包络:控制音量和重音分布 prosody = {F0, duration, energy} 韵律三要素共同决定语音的自然度和表现力。
韵律概述
老肖第一次进实验室,没有急着调代码,而是让小木偶读了一首诗:“春眠不觉晓……”小木偶一个调门读到底,像一条笔直的高速公路,没有弯道、没有坡度。老肖直摇头:“你这是开车,不是说话。人有情绪、有重点、有呼吸,这些全都藏在声音的高低、快慢和轻重里。”他说的这些东西,在语音合成里有一个统称——韵律。
韵律(prosody)是语音中超越音素之上的“超音段特征”。音素决定你说了什么,韵律决定你怎么说。同一个“你好”,平平地读是敷衍,二声上扬是问好,重重砸下是敌意。在TTS系统中,韵律决定了一段合成语音是像机器人念经,还是像一个真人在跟你聊天。
一句话总结韵律建模的意义:给定一段文本,预测它“应该怎么说”——哪里快、哪里慢、哪里高、哪里低、哪里停。在统计模型里,这可以形式化为对韵律声学特征的联合建模:
老肖指挥棒轻轻一抬,小木偶第一次有了“表情”。原本一条直线的高速公路,终于有了弯道和坡道。老肖说,别高兴太早——咱们只是知道“要有韵律”,还不会“制造韵律”。要把这种感觉变成机器能读的数据,得先把韵律拆成一个个可以量化的特征。前方,还有特征表示和文本分析这两道关卡等着小木偶去闯。
- $P$(概率)表示“有多可能”。模型要回答:这段文本配上这样的音高、时长和能量,像不像人类会说的话。
- $F_0$(基频)声带每秒振动的次数,人耳听到的“音高”。F0高则声音尖亮,F0低则声音低沉。
- $D$(时长)每个音素发音持续的时间。时长的伸缩构成语言的节奏感。
- $E$(能量)语音的响度/力度,与重音和强调直接相关。
- $\mid \text{text}$(给定文本)整个概率以文本为条件,文本是韵律的“乐谱”。
特征表示
老肖在乐谱上做记号:音符画得高,代表音高高;符头画得长,代表时值长;标上“f”表示强音,标上“p”表示弱音。他说:“乐谱上的一切记号,落到声音里都能量化。谱号背后是一个数字化的特征集。”
韵律建模要操作的特征主要有四类:F0基频轨迹、音素时长、能量/响度、停顿位置。其中F0是旋律的“主线条”,一条连续曲线记录声带振动频率随时间的变化;时长是节奏的骨架,告诉模型每个音素要“站”多久;能量用短时帧的均方根幅度(RMS)来度量,突出重音和强调;停顿虽然不发声,却是断句和信息结构的信号灯。
一个重要的工程细节是F0需要做对数变换。人耳对音高的感知遵循对数规律,每升高八度,频率翻一倍,听感上却近似等距。早期规则系统直接用线性Hz建模,结果高音区敏感度过高、低音区又不够精细。于是业界普遍把F0映射到对数音高域:
老肖在乐谱上重重画下一个渐强符号,小木偶读取记号,声音里的“情绪刻度”终于清晰了起来——数字乐谱上每条曲线、每个色块都代言着一种情绪:F0是旋律,时长是节奏,能量是力度,停顿是呼吸。有了这套数字化描述,接下来的任务就非常明确了:当小木偶拿到一段从未见过的文本时,该如何自动预测出这些特征值。
- $\frac{F_0}{440}$(频率比值)把当前F0和标准音A4(440Hz)做比值,衡量它们之间的倍频关系。
- $\log_2$(二倍对数)以2为底的对数,让“每翻一倍频率对应固定增量”,贴合人耳听感。
- 乘12(每倍频程12个半音)一个八度被平均分成12份,对应钢琴上相邻琴键。
- 加69(偏移量)把440Hz映射到MIDI的第69号音符,让输出符合国际标准。
- $f_{\text{MIDI}}$(转换结果)转换后的音高值适合作为模型训练目标或输入特征。
文本分析
老肖拿到一部新乐谱,第一件事是通读、标注:这句是主角的台词,要念得重;这里是逗号,换一口气;这个字是题眼,得拖长一点。在TTS里,这一步被称为前端文本分析(text analysis / prosodic boundary prediction),负责在合成之前,就先从文本里预判韵律信息。
文本分析要解决两个核心问题:一是韵律边界,即哪里该断句、哪里该停顿;二是重音位置,即哪些词要读得重。传统做法使用标点、词性、句法结构等特征训练分类器。比如“今天天气真好”这句话,逗号后面的“真好”往往是新信息,会被预测为重音。现代系统则直接让神经网络从大量语料中学习这些规律,甚至用BERT等预训练语言模型的隐藏状态来加强语义感知。
预测重音或边界位置,本质上是一个二分类问题——每个音节要么是重音(1),要么不是(0)。早期最常用的模型是逻辑回归:
老肖在乐谱边缘写下密密麻麻的批注:重音、换气、渐慢。小木偶照章执行,终于知道自己说这句话该在哪里“使力气”,在哪里松一口气。不过,批注只能告诉它“哪里重要”,却没有告诉它“要持续多久”“音调具体多高”。这就像乐谱上标了强弱记号,但每个音符的时值长短和具体音高,还等待时长模型和基频预测器来回答。
- $\mathbf{x}$(特征向量)输入特征,包括词性标签、相对标点的位置、句法角色、长度等。
- $\mathbf{w}^\top \mathbf{x} + b$(线性得分)每个特征乘一个权重后求和,加上偏置b,得到一个实数“得分”。
- $e^{-z}$(指数惩罚)对得分取负再取指数。得分越高,$e^{-z}$越小。
- $\frac{1}{1+e^{-z}}$(Sigmoid压缩)把任意实数映射到(0,1)区间,作为概率。
- $y=1$(正类事件)在这里代表“该位置是韵律边界/重音”。
时长模型
老肖按住小木偶的“节拍器”:你听,我说“春——眠——不觉——晓”,每个字的长短都不一样。“春”要拖一点,“不觉”快而连贯,“晓”再轻轻收尾。这种每个音素或音节“站多久”的决策,就是时长模型(duration model)的本职工作。
时长模型是韵律建模中最关键也最基础的组件。传统HMM合成时代,时长用统计分布(如高斯分布)来拟合;FastSpeech等现代端到端模型则训练一个专门的时长预测器:把音素编码向量输入一个小网络,输出每个音素的对数时长。训练数据的获取有两种主流方式:一种是借助外部TTS引擎的对齐结果(如HMM或Montreal Forced Aligner),另一种是从教师Transformer模型的注意力图中估算“每个编码帧覆盖多少解码帧”。后者就是FastSpeech论文里的做法。
由于时长的分布天然是右偏的(短音很多,个别音特别长),直接回归原始时长容易被极值带偏。业界习惯在训练时对时长取对数,让目标分布更接近对称高斯分布,预测后再用指数还原:
小木偶的节拍器终于“活”了——声音有了长短错落,有了呼吸的间隙,像极了老肖打拍子时的轻重缓急。但只有节奏还不够,旋律线还没谱出来。同样的时长节奏,配上上扬或下降的语调,情绪会完全不同。小木偶搓搓手,看向老肖手中的指挥棒:“接下来,教我怎么甩出那条高低起伏的旋律线吧。”
- $\hat{d}_i$(预测时长)模型输出的是第i个音素/字应该持续多少秒。
- $\log$(对数)对时长目标取对数,拟合对数域数值更稳定,解决右偏分布问题。
- $\mathbf{h}_i$(隐层特征)编码器输出的上下文相关向量,包含了前后文的韵律语境。
- $\mathbf{w}_d$(权重)可学习参数,决定每个特征维度对时长的贡献。
- $b_d$(偏置)全局的平均时长基线,让无信息时也能输出一个合理的基准值。
基频预测
老肖拿起指挥棒在空中画弧线:句子要上扬,像问句一样挑起来;陈述句则要缓缓下落,收得住。“旋律线”怎么走,在语音学里叫作语调,它的物理载体就是F0基频轨迹。
F0预测的目标是:为每一帧语音预测一个合理的基频值,连起来形成一条平滑的语调曲线。输入可以是文本编码特征(两端式模型),也可以是上一帧的F0和音频特征向量(自回归模型,如VALL-E的分层方法)。常用实现是LSTM或Transformer输出每帧F0,配合“帧级对齐”的时长信息展开。F0的提取依赖PRAAT或pyWorld等工具,提取过程中存在无声段F0无定义的问题,业界普遍采用线性插值补全 + 沉默段置0/特殊值处理。
训练F0预测器的损失函数通常采用帧级均方误差(MSE),同时注意在无声段对损失做掩码(mask),避免无定义区域干扰训练:
老肖在空中画下一条漂亮的弧线,小木偶的声调也跟着起伏——问句上扬,陈述句落地,声音终于有了“调调”。到了这一步,小木偶已经能像模像样地说话。可老肖又提出新要求:“能自然说话只是基本功,你还得学会模仿别人怎么说话。”于是,韵律迁移的舞台大幕拉开了,小木偶有些紧张又有些兴奋地开始了新课题。
- $N$(帧数)一句话按帧切分为N个时刻点,每个时刻有一个F0目标值。
- $\hat{f}_i$(预测基频)模型在第i帧输出的F0值(通常在对数域)。
- $f_i$(真实基频)从自然语音用自相关/倒谱法提取的F0标注值。
- $(\hat{f}_i - f_i)^2$(平方误差)取差的平方,惩罚任何方向的偏离,且误差越大惩罚越重。
- $\frac{1}{N} \sum_{i=1}^{N}$(平均)把所有帧的平方误差加总取平均,得到单句话的总体损失。
韵律迁移
有一天,实验室来了一位同事,说话风风火火、句尾总爱拖着一点尾音。老肖听了笑着说:“这是人家的‘指挥风格’。”小木偶很羡慕,它有内容、有节奏,可就是没有自己的“调性”。能不能把同事那种风格“借”过来?这就是韵律迁移(prosody transfer)。
韵律迁移的任务是:在合成时注入“风格控制信息”,让输出的语音带有目标说话人的韵律特征。传统方法是“说话人嵌入”:每个说话人训练一个可学习的向量(speaker embedding),与文本编码特征拼接后一起送入解码器——换向量就等于换风格,这是训练音色和韵律风格的最简单手段。进阶方案是“参考音频编码”:提供一小段目标风格的参考音频,用一个Reference Encoder(如GST中的风格token)提取其中的节奏、语调和音高模式,合成时把这些风格向量拼到每帧特征里。
特征拼接是核心操作。设内容特征为 $\mathbf{h}$,风格向量为 $\mathbf{s}$,把两个向量在特征维度上拼接成一个更长的向量,让解码器同时看到“说什么”和“怎么说”:
小木偶录了一段同事的声音,把“风格”借来试了试——嘿,它说话不再干巴巴,句尾真的带上了同事那股爽朗的尾音!老肖满意地点头:“风格不是模仿音色,而是搬运节奏和语调的‘模式’。”小木偶若有所思:既然风格可以借来,那是不是也可以把旋律画得更饱满一点、把情绪凸显得更强烈一点?这正是下一堂课——韵律增强——要解决的问题。
- $\mathbf{h}_{\text{content}}$(内容特征)包含音素、字词和语义信息的编码向量。
- $\mathbf{s}_{\text{style}}$(风格向量)表示说话人/情绪/韵律风格的编码,来自说话人嵌入或参考音频。
- $[;]$(拼接操作)把两个向量沿通道维度首尾相接,得到更长的新向量。
- $\mathbf{h}'$(融合特征)同时携带内容信息和风格信息的综合表示。
- 解码器使用解码器以融合特征为条件逐帧生成声学参数/波形。
韵律增强
小木偶现在说话很自然,但老肖还不满意:“自然只是及格线。你要在关键处‘加戏’——比如说到‘家的温暖’时温柔一点,说到‘三大喜讯’时精神一点。”这一步就是韵律增强(prosody enhancement):在基础韵律之上,进一步拉伸、突显、放大,使语音更有表现力和感染力。
韵律增强可以从两个层面下手。全局层面,对整个语段的语速、音高范围、能量水平做调节,比如把F0的方差拉大一些,语音听起来更夸张、更饱满,适用于有声书和广告配音;局部层面,对重音词或关键词做标记,在预测F0和时长时对这些位置施加额外偏移,比如将重音词的F0抬高、时长拉长。对抗训练也是一种有效的增强策略:训练一个判别器去区分“真实语音的韵律”和“合成语音的韵律”,生成器被逼迫输出更接近真实人类韵律的曲线。
增强后的总损失函数通常是重建损失与对抗损失的加权和:
老肖最后一挥手:“从今天起,你不仅会说话,还会‘好好说话’。”小木偶的一字一句,终于像被春雨洗过一样,有了明亮的色彩和温度。它深深鞠了一躬,感谢这位教会它“指挥”的人类老师。从那以后,它读诗时温柔如水,播报时精神振奋,讲笑话时活泼俏皮——这些本领,全都源于韵律建模的七个步骤。
- $L_{\text{rec}}$(重建损失)衡量合成语音与真实语音在频谱/F0上的距离,保证内容不失真。
- $L_{\text{adv}}$(对抗损失)判别器判断语音来自真人还是机器,生成器“骗过”判别器的难度就是对抗损失。
- $\lambda$(平衡系数)控制对抗损失的相对权重,λ大则风格更奔放,λ小则内容更保险。
- $L_{\text{total}}$(总损失)梯度下降统一优化总损失,同时推动“说得对”和“说得好”。
AI 应用场景
有声书与情感合成平台
阶段:声学模型训练与推理
解决的问题:传统有声书录制需要专业配音演员在录音棚反复录制,成本高、周期长。依赖均值静态的TTS系统只能“字正腔圆”却无情感起伏,无法打动听众。利用韵律迁移与韵律增强,平台可以为同一本书一键切换多种声线风格:温和的叙述、紧张的悬疑、深情的独白。
具体案例:一家有声书平台上线“AI金牌主播”功能。用户选择“沉稳大叔”风格后,系统通过参考音频编码提取该风格的F0曲率、语速分布和重音习惯,并在合成时对关键词做局部韵律增强,最终生成的音频获听众评分与真人录制版基本持平。
智能语音助手的自然口语化改造
阶段:文本前端分析与声学参数预测
解决的问题:用户对语音助手的最大抱怨之一“一听就是机器”,本质是韵律建模不足——时长全部等长、F0毫无起伏。通过部署文本韵律分析(重音预测+停顿预测)和时长模型、F0预测器,助手可以根据上下文把“今晚八点提醒我开会”读得轻重分明、自然留白。
具体案例:手机厂商在语音助手升级后,把导航播报从一串无停顿的“前方三百米右转”改为“前方三百米——右转——”,并在“右转”上加重音抬高F0,用户满意度提升约12%,不自然感投诉下降。
AI配音剪辑工具的快速风格化
阶段:韵律迁移与后处理增强
解决的问题:短视频创作者需要快速给旁白配上有感染力的声音。手动调节语速、音调繁琐且效果生硬。工具内置“激情解说”“温柔共情”“新闻播报”三种韵律风格,用户选定后,系统在合成时注入风格向量,还允许增强滑块调节全局F0方差。
具体案例:剪辑App提供“韵律增强包”,创作者上传一段30秒参考音频(如某影视解说博主的风格),系统用Reference Encoder提取韵律风格并迁移到任意文本的合成音色中,成片情感浓度接近原博主。
Python 演示
import numpy as np def build_features(phones): feats = [] for ph in phones: is_vowel = ph in ['a', 'o', 'e', 'i', 'u', 'v'] is_stop = ph in ['p', 't', 'k', 'b', 'd', 'g'] feats.append([1.0, float(is_vowel), float(is_stop), float(len(ph))]) return np.array(feats) def train_duration_model(feats, durs): X = np.column_stack([np.ones(len(feats)), feats]) theta = np.linalg.pinv(X.T @ X) @ X.T @ np.array(durs) return theta def predict_duration(theta, feats): X = np.column_stack([np.ones(len(feats)), feats]) return np.maximum(X @ theta, 0.05) def generate_f0_curve(durs, base_f0=120.0): total = sum(durs) t = np.linspace(0, total, 300) f0 = base_f0 + 15 * np.sin(2 * np.pi * 0.3 * t) - 10 * t / total return t, f0 if __name__ == '__main__': phones = ['b', 'a', 'o', 'p', 'i', 'a', 'o', 'p', 'u', 't'] durs = [0.08, 0.22, 0.15, 0.10, 0.18, 0.25, 0.20, 0.12, 0.16, 0.35] feats = build_features(phones) theta = train_duration_model(feats, durs) pred = predict_duration(theta, feats) print('predicted durations:', np.round(pred, 3)) print('ground truth durations:', durs) t, f0 = generate_f0_curve(pred) print('F0 range:', round(f0.min(), 1), '-', round(f0.max(), 1), 'Hz')
for ph in phones:遍历每个音素,相当于老肖逐个音符地在乐谱上做标记。X = np.column_stack([np.ones(len(feats)), feats])在特征矩阵前加一列1,作为线性模型的偏置项。theta = np.linalg.pinv(X.T @ X) @ X.T @ np.array(durs)用最小二乘闭式解训练时长模型,一步就拟合出特征到时长的映射,相当于“统计时长模型”的最小实现。return np.maximum(X @ theta, 0.05)预测时长并截断到最小值0.05秒,防止线性模型输出负数,对应工程上的“时长下限约束”。f0 = base_f0 + 15 * np.sin(2 * np.pi * 0.3 * t) - 10 * t / total生成F0曲线:正弦项模拟语调的周期性起伏,末尾的-10 * t / total模拟自然语流中句末音高逐渐下降的衰退趋势。
常见误区
误区我以为韵律建模主要就是预测F0曲线,把语调画好,语音自然就自然了。时长什么的差不多就行了。
正解韵律是三维的:F0、时长和能量缺一不可。想象老肖指挥乐队:只调节高低(F0)不调节奏(时长),音乐就像坏掉的唱片;没有强弱(能量),情感浓度会大打折扣。只建F0模型、不管时长模型,合成出来的语音会形成“唱歌式机械语调”。真正的自然度来自三者协同。
为何常见:因为F0曲线最容易看见、最容易被可视化成一条漂亮曲线,初学者直观上就把“语调”当成了全部韵律。
误区现在都用端到端大模型了,模型应该自己就能学出韵律规律,没必要再单独做时长模型、F0预测器。
正解端到端模型(如VITS)确实隐式编码了一部分韵律,但这带来两个问题:一是可控性差,无法指定“这句读重一点”或“换一种风格”;二是稳定性差,少见文本上容易出现语速失控或音高爆炸。业界普遍采用FastSpeech这类“显式时长+显式F0”的半端到端设计,既保留端到端的简洁性,又保留可调控的旋钮。好比老肖不会因为乐队磨合久了就丢掉指挥棒,指挥棒本身就是质量保证。
为何常见:误把“无需人工设计中间特征”理解成“完全不需要任何模块”,忽略了工程上对可控性和鲁棒性的真实需求。
误区时长模型不就是预测这句话要说多长吗?一句话预测一个数字就行。
正解时长模型预测的是音素级或字级时长,覆盖到每一帧的展开比例,远不止一个句子级数字。预测完每个音素时长后,再累加得到总时长,把文本编码按比例展开到帧维度。这个过程类似老肖给每个音符安排时值——“这句多长”是靠每个音节的“时值”累加出来的,而不是先定总长再均摊。若只预测整句时长,内部的相对节奏将全部丢失。
为何常见:因为最终的语音时长由整句决定,初学者容易把总时长误当成直接预测目标。
误区F0物理单位是Hz,直接用神经网络回归Hz值不就好了吗?为什么还要转对数、还要弄VQ离散化?
正解Hz与人耳感知并不线性:200Hz到250Hz的听感差异远大于900Hz到950Hz。而且F0在无声段没有定义,直接回归容易在停顿处输出奇怪的抖动。工程上普遍把F0转成对数域(或MIDI域)甚至做VQ量化,让模型目标更贴近听感并规避无定义区域。这就像老肖标力度记号时用的不是瓦特数,而是“p、mf、f”这类感知等级——人耳比物理刻度更诚实。
为何常见:Hz是物理课本里出现的标准单位,直觉上“用最原始的物理量建模最靠谱”,却没有考虑感知模型与数据分布的问题。
误区把A的声音风格迁移到B,就是把A的F0曲线和时长直接拿过来用到B上,B不就有A的韵律了吗?
正解不能直接复制曲线。F0的绝对值受说话人声带物理条件约束——A音域高,B音域低,同样的“上扬调型”数值在两个人身上对应不同的绝对Hz。韵律迁移真正迁移的是“模式”:语调形状、音高相对范围、节奏比例、重音落点,而不是绝对数值。这就像老肖把同一首曲子的“处理方式”教给两个乐队,每个乐队用自己乐器的音区演奏出来,味道一样但音高不同。若直接搬数值,结果会扭曲走形。
为何常见:把“风格”误当成了“数值序列”,忽略了风格是一种关系模式,而非某个具体的采样点集合。
面试题
Q1. 下列哪一项不属于韵律特征?
- A.音高的高低起伏
- B.音素的持续长短
- C.声音的响度强弱
- D.音色的明亮质感← 正确答案
答案:D。音色(timbre)取决于声带与声道共鸣的频谱包络,描述“这是一个什么声音”;而韵律关注的是超音段层面的高低(F0)、长短(时长)、强弱(能量)与停顿。老肖指挥乐队把握的是节奏、旋律与力度,而乐器的材质决定音色——那是另一层问题。
Q2. F0基频的物理含义是什么?
- A.声带振动的频率值← 正确答案
- B.声波振幅的大小值
- C.声道共振的频率值
- D.声音传播的速度值
答案:A。F0(fundamental frequency)是声带周期性开合的频率,单位Hz,决定了人耳听到的音高。振幅大小对应的是能量/响度,声道共振对应的是共振峰/音色,声速则是环境物理常数。就像小提琴的弦每秒振动440次才是A4这个音,振动频率即弦的F0。
Q3. 时长模型的预测单位通常是?
- A.整段语音的时间
- B.单个音素的时间← 正确答案
- C.整个句子的时间
- D.单个音节的时间
答案:B。业界最细粒度常用音素级时长预测,再累加成音节和词,最终按帧展开得到整句时长。FastSpeech的时长预测器就是为每个音素输出一个时长值,然后按时长把编码特征展开到帧数。若只预测句子总时长,内部节奏细节会全部丢失——就像老肖只规定整首曲子多少秒,却不标明每个音符的时值。
Q4. 下列哪些属于韵律特征(超音段特征)?
- A.F0基频曲线← 正确答案
- B.音素持续时长← 正确答案
- C.梅尔频谱倒谱
- D.静音停顿位置← 正确答案
答案:ABD。F0曲线决定语调高低,音素时长决定节奏快慢,停顿位置决定断句和信息结构,三者都是超音段特征。梅尔频谱倒谱(MFCC)描述的是声道滤波特性的音色特征,它回答“这个声音长什么样”而非“怎么被表达了”,就像琴弦的材质,而不是琴弓的速度与力度。
Q5. 关于F0预测,下列说法正确的是?
- A.直接回归原始F0效果好
- B.无声段F0没有明确值← 正确答案
- C.F0只受文本信息影响
- D.F0与字词语速都无关
答案:B。清音和呼吸段声带不振动,F0在物理上没有定义,业界通常用插值补全后训练或对损失做掩码。直接回归原始Hz不贴合听感,F0还受说话人、情绪、重音等多重因素影响,也与语速有耦合(句末常伴随音高下降与拉长)。B的说法正确,其他均有误。
Q6. 文本韵律分析的核心任务不包括?
- A.预测停顿的位置
- B.预测重音的字词
- C.预测韵律的边界
- D.预测音色的种类← 正确答案
答案:D。文本分析从纯文本预判“怎么说”:哪里有停顿、哪里是重音、哪里是韵律边界,这些都是从文字到韵律的桥梁。而音色属于说话人属性,不从文本决定,也不属于发音方式层面的韵律分析。老肖读乐谱时标注的是强弱、快慢、呼吸,不会标注“用铜管还是木管”。
Q7. 韵律迁移的常用实现方式有哪些?
- A.说话人嵌入向量← 正确答案
- B.参考音频特征编码← 正确答案
- C.全局风格标记向量← 正确答案
- D.直接复制源说话人F0
答案:ABC。说话人嵌入为每个说话人学习专用向量,参考音频编码从音频中提取风格token,全局风格标记为每种风格分配一个可学习id,三者都是行业广泛使用的韵律/风格注入方式。D“直接复制F0”是典型误区,绝对F0受声带条件约束,不能跨说话人直接搬用,迁移的是模式而非数值。
Q8. FastSpeech中时长模型的训练数据从哪里来?
- A.标注人员手工标记
- B.外部TTS工具提取
- C.注意力对齐图中获得← 正确答案
- D.模型运行时随机生成
答案:C。FastSpeech 1用训练好的Transformer TTS作teacher,从它的注意力图中估计“每个编码token覆盖几个解码帧”来合成时长标签,免去昂贵的音素对齐标注。人工逐音素标时长工作量巨大且主观,外部工具通常只能做粗对齐,随机生成更是无意义。这相当于老肖先让老朋友帮忙打拍子示范,再让小木偶学会自己打拍子。
Q9. 韵律增强的主要目标是什么?
- A.提高整体的语速
- B.增强表达的效果← 正确答案
- C.降低计算的开销
- D.减小模型的体积
答案:B。韵律增强通过拉大F0方差、加重音偏移、延长重音时长等手段,让语音更有感染力、情感更饱满,适用于有声书和广告配音,目标是“表现力”而非性能指标。语速提高、开销降低或模型压缩都与“增强”的核心意图无关。
Q10. 关于韵律建模的标准做法,下列说法正确的有哪些?
- A.显式韵律建模可控性好← 正确答案
- B.端到端模型无需韵律信息
- C.F0常用对数域来处理← 正确答案
- D.时长与F0完全相互独立
答案:AC。显式建模(时长预测器+F0预测器)提供清晰的中间控制旋钮,是工业生产的主流,A对。端到端模型虽不设显式模块,仍要在隐层中编码韵律,且工程上反而更难控制,B错。F0取对数域贴合人耳感知,是行业标准做法,C对。时长与F0随语境耦合(句末往往同时拉长和降调),并非独立,D错。老肖指挥时,节奏一变,旋律的收束方式也随之改变。