正文
获取原文件references/voice-direction.md
目录
- 参考音频是载体
- 参考可以是合成出来的
- 身份与表演的界线
- 一段参考音频可以决定什么
- 绑定不等于听过
- 选型判据
- 写出区分度
- 专名发音
- 变体:伪装、年龄与跨段变化
- voice-casting.md 的渲染规则
voice_direction 是 Character 记录的一部分(AST-07),跨集稳定。本场怎么说属于表演,
由 $short-drama-write 的配音本逐句决定。
参考音频是载体
短剧的音色由一段参考音频承担:配音演员的试音、声音库里的一条、或创作者授权的克隆源。 文字不承担音色——它承担两件参考音频承担不了的事:
- 选型与验收:用什么判据挑一条参考、判一次克隆结果算不算这个角色;
- 专名发音:参考音频里没有的那些名字该怎么念。
所以 voice_direction 以 reference 为主字段。没有参考音频时,记录保持
reference: null 并写明「待选型」——不要用一段文字描述冒充音色身份。
下游拿着一段形容词去找声音,找回来的每次都不一样,而记录看起来是完整的。
参考可以是合成出来的
使用声音库时,确认所选音色及其使用范围符合供应商提供的许可。
项目没有配音演员、也不打算克隆谁的时候,这条路是让 reference 从 待选型 变成实际路径的
办法——挑一个预置音色,合成一条,绑上去。合成由 $short-drama-produce 的 tts 模态执行。
合成出来的参考和录音来的参考在本文档里受同样的约束:它一样要写用途边界,一样要有
admission_status,一样不能用形容词代替。差别只有一处——它的选型判据是拿来挑预置音色的,
不是拿来判克隆像不像的,所以「与谁最易混」这条要在同一批预置音色里回答,而不是在角色之间
凭空回答。预置库里两个音色听起来就是同一个人时,换一个,不要靠判据文字假装区分。
音色 ID 本身写进 reference 那一行,和路径、用途边界一起。它是创作决定:同一个角色在两集之间
换 ID 就是换人说话,这件事必须在文档里看得见、diff 里查得出。
身份与表演的界线
一句话判定:这个特征在角色安静地坐着说一句无关紧要的话时还在吗?
在,就是身份。不在,就是表演,留给场次与台词。
| 属于身份 | 属于表演 |
|---|---|
| 音区、音色质感、年龄印象 | 本场因奔跑造成的气息不稳 |
| 语速与停顿习惯、句尾处理 | 某一句的重音位置 |
| 口音与方言范围 | 这一场压低声音说话 |
| 已接受的专名发音 | 情绪激动时的音量 |
界线画错的代价不对称:把表演写进身份,角色每一集都会被要求带着上一集的伤势说话; 把身份漏进表演,配音者每一场都要重新猜这个人是谁。
not_voice_identity 与身份字段必须同时写。只写身份,下游无从判断某个特征是被遗漏
还是被有意排除。
一段参考音频可以决定什么
参考绑定必须自带用途边界:写清这次参考它的什么,以及哪些内容不能跟着来
(AST-08)。同一段录音承担多个用途时拆成多条绑定分别审查。
role |
可以借用 | 默认不可借用 |
|---|---|---|
timbre |
音色质感、共鸣、年龄与体量印象 | 这条里的情绪、语速、录音空间 |
accent |
口音与语域范围 | 音色、音区、说话人身份 |
pace |
语速基线与停顿习惯 | 音色、口音、这条的情绪 |
age_impression |
听感年龄 | 具体音色与口音 |
三类东西永远写进 must_not_control,因为它们在任何一条参考里都必然存在,
而且必然不属于角色身份:
- 这条参考里的情绪:试音稿在哭,不代表这个角色总是在哭;
- 录音空间:混响、房间声、话筒距离属于那次录音,不属于这个人;
- 背景内容:底噪、伴奏、另一个说话人。
一条参考同时要定音色和口音时,写两条绑定分别审查,不要把 may_control 加长。
绑定不等于听过
文件名或可见引用只说明绑定了哪段素材,不能证明有人真的听过这段音频(AST-09)。
每条绑定写清证据到了哪一步:
admission_status |
什么情况 | 可以下什么结论 |
|---|---|---|
creator_described |
创作者或参考权利人给了可核对的听感说明 | 按说明内容判断 |
audibly_inspected |
运行环境获授权检查该音频并完成检查 | 按检查记录判断 |
unverified |
只有文件名或文字描述,音频不可听或没有授权 | 不得声称音色、口音、底噪或说话人数已经确认 |
没有证据就老实保持 unverified 并列出风险。负面描述擦不掉参考里已有的内容——
参考里有底噪就是有底噪,写「不要底噪」不会让它消失;要么重录、清理、换一条,
要么退回参考权利人决策。
参考音频与授权说明属于创作者输入,放在 输入/ 下;视觉设定.md 只写项目相对路径、用途、
允许控制/不得控制的内容与观察状态。媒体本身不复制进视觉设定,也不进公开交付。
选型判据
selection_criteria 是三到五条可听的判据,用来挑一条参考、或判一次克隆结果
算不算这个角色(AST-12)。它不生成声音,也不替代参考。
从六类里挑,不要写满:音区(相对位置而非 Hz——「比同剧其他成年男性低半档」)、 质感、年龄与体量印象、节奏、口音与语域、可重复的标记性习惯(至多一条)。
每条带一个 counter_example,写清什么算过头。判据没有上界时,试音会一轮比一轮夸张,
克隆结果也没法判到底算不算过。
情绪词不是判据。锚点里出现「愤怒」「悲伤」「紧张」,说明写的是表演不是身份; 换成产生那个印象的可听特征。
写出区分度
同一批角色对比着选(AST-11)。对每个角色回答:同剧里跟他最容易混的是谁,
用哪一条判据区分。
CHAR-A 与 CHAR-B 最易混:两条参考同为中低音区、语速偏慢。
区分判据:A 句尾收住不拖长;B 句尾常带一段下滑的余音。
这条写不出来,说明两条参考实际上是同一个声音——观众会分不清谁在说话, 而这个问题在文本审查里看不出来,只在成片里被听见。回到创作者那里换一条参考, 不要靠堆形容词假装区分。
角色多时按易混组分批选型,而不是按出场顺序。
对比选择预置音色
用同一组有代表性的台词试听候选,比较角色间是否易混,以及同一角色在不同情绪下是否稳定。 音色名称仅供检索,选择依据是实际声音。
需要测量时,F0 和谱特征可辅助定位近似音色;同一候选应有多句样本,才能估计自身变化。 不把音高间距或「组间距离大于组内极差」设为通用门槛。最终按角色需求与回听结果选择, 不为追求数字分离而改变已接受的声音方向。
专名发音
已接受的专名发音只能有一种拼法(AST-10)。
这一栏是纯文字,而且参考音频通常帮不上忙:试音稿里多半没有这些名字。真人配音会按 自己的习惯念,语音合成会按模型的习惯念,两边都不会报错。同一个名字出现两种拼法, 配音就会在两集之间改口。
新增发音走正常的接受流程,不在渲染时就地决定。
变体:伪装、年龄与跨段变化
角色装成另一个人、跨越十年、或中毒后长期失声,都不改写基础身份,而是按 身份与变体 记一条变体:
cause:由哪条已接受的剧本事实引起;validity:从哪里生效到哪里失效;delta:换了哪条参考、或相对基础身份改了哪几条判据,其余继承。
短暂的一场变化不建变体,交给表演。判据和 Look 一样:跨多个场次持续、会重复使用、 需要独立参考、或下游必须精确绑定时才升为变体。
写入 视觉设定.md
需要跨集保持声音身份时,在对应人物条目下增加“声音方向”,只保留:
- 参考:一行
- 声音参考:<项目相对路径>(用途:…;控制:…;不得控制:…;状态:<admission_status>), 路径打头;没有参考时写- 声音参考:待选型; - 选型判据:三到五条可听判据,每条带反例;
- 对比角色:最容易混淆的是谁,以及靠什么可听差异区分;
- 专名发音:唯一确认读法;
- 变体:跨多场持续的伪装、年龄跨度或音色变化,写原因与有效范围。
临时情绪、呼吸、重音、音量和空间混响仍由剧本/镜头/视频提示词拥有。声音方向是生产输入,不是
合成结果保证;实际 TTS 仍由 $short-drama-produce 在精确预览并显式确认后执行。
参考音频落地之后,它在下游有两个去处:作为视频模型的音色参考绑定(《视频提示词.md》该镜的
参考音频 行照抄这条路径,由 $short-drama-video-prompts 写),
以及作为配音本的实际人声。配音使用同一已选音色逐句合成;参考音频用于选型或模型绑定,不能直接充当不同台词的成品音轨。
是否保持角色声音,仍需在生成后回听确认。