真人位 · 专治 AI 味
AI 做的东西有个通病:哪儿都对,就是不像人做的。观众说不出哪里别扭,但手指头就是不点赞、不转发。
这个技能就是把那点"人味"补回去。它管四层:
| 层 | 治什么病 | 关键动作 |
|---|---|---|
| 声音层 | 一个机器音念完全片 | 分角色配音 + 按年龄压声线 + 插呼吸停顿 |
| 文本层 | 台词文绉绉,没人这么说话 | 书面语翻白话 + 加语气词 + 断句 |
| 画面层 | 画面塑料感,光打得比影楼还匀 | 破坏对称 + 加瑕疵 + 减光 |
| 合规层 | 生成的脸撞脸明星,有肖像权风险 | 负向约束 + 路人化特征 + 不露脸构图兜底 |
信条:宁可糙一点,也不能假。真人有瑕疵,机器才完美。
快速开始(三条命令)
# 1) 检查环境(会告诉你本机能跑哪一档)
python scripts/voice_cast.py --doctor
# 2) 一键分角色配音(需要 edge-tts + ffmpeg)
python scripts/voice_cast.py --spec cast.json --out narration.wav
# 3) 没有网络 / 没有 ffmpeg 也能出活:只出台本 + 时长 + 分配音方案
python scripts/voice_cast.py --spec cast.json --plan
三档模式自动降级,任何环境都能拿到可用交付:
| 档位 | 条件 | 交付物 | 适合 |
|---|---|---|---|
| A 全自动 | 有 edge-tts + ffmpeg | 一条成品音轨 narration.wav |
本机批量出片 |
| B 半自动 | 只有 pyttsx3 | 成品音轨(音色单一,质量一般) | 断网应急 |
| C 台本模式 | 什么都没有 | 配音台本 + 逐句时长预估 + 音色分配表,可直接贴进任何 TTS 工具 | 云端 / 网页版 / 别人代做 |
> C 档不是"降级糊弄",它输出的是可直接执行的生产单——谁拿到都能照着配,不依赖本机装了啥。
一、声音层(最立竿见影的一层)
1.1 音色库
本机走 edge-tts(微软神经网络语音,免费、已装)。可用中文音色:
| 音色 ID | 性别 | 性格 | 适合角色 |
|---|---|---|---|
zh-CN-YunjianNeural |
男 | 激情、浑厚 | 老生首选:压慢压低后是沉稳老者 |
zh-CN-YunyangNeural |
男 | 专业、正派 | 中年男(新闻腔,压慢后可用) |
zh-CN-YunxiNeural |
男 | 活泼、年轻 | 青年男首选(孙子、小伙) |
zh-CN-YunxiaNeural |
男 | 可爱、稚气 | 少年/小孩 |
zh-CN-XiaoxiaoNeural |
女 | 温暖、知性 | 旁白首选、中年女性 |
zh-CN-XiaoyiNeural |
女 | 活泼 | 年轻女性 |
zh-CN-liaoning-XiaobeiNeural |
女 | 幽默、东北 | 喜剧配角、市井大姐 |
zh-CN-shaanxi-XiaoniNeural |
女 | 明亮、陕西 | 地域特色配角 |
> 完整清单随时可跑 edge_tts.list_voices() 复核,新音色会不断加。
1.2 按年龄压声线(关键技巧)
同一个音色,调三个参数就是两个人。年纪越大,语速越慢、音调越低:
| 角色年龄 | rate | pitch | 说明 |
|---|---|---|---|
| 70+ 老者 | -18% |
-8Hz |
慢、沉、有气无力感 |
| 50–60 岁 | -10% |
-4Hz |
稳、略沉 |
| 35–45 岁 | -5% |
0 |
正常成年人 |
| 20–30 岁 | +5% |
+2Hz |
快、亮 |
| 少年 | +10% |
+5Hz |
快、稚 |
1.3 呼吸与停顿
真人说话有换气,机器没有。两条硬规则:
- 句与句之间留 180–320ms 空白(激烈处短,沉思处长)
- 一句话超过 14 个字,中间必须断——用句号或破折号切开,别让 AI 一口气念完
1.4 一键配音引擎
scripts/voice_cast.py —— 喂一张台词表,自动分角色、调声线、插停顿、拼音轨:
python scripts/voice_cast.py --spec cast.json --out narration.wav # A 档:出成品音轨
python scripts/voice_cast.py --spec cast.json --plan # C 档:出台本(无依赖)
python scripts/voice_cast.py --doctor # 先查环境能跑哪档
台词表格式、可复制模板、常见错误见 references/voice-casting.md。引擎会自动:
1. 按角色分配音色与年龄参数
2. 把超过 14 字的长句在标点处切开,按标点插入呼吸停顿
3. 逐段生成后拼成一条完整音轨(A/B 档),或输出带时长预估的配音台本(C 档)
4. 打印总时长,方便对镜头时长
降级是自动的:edge-tts 不可用 → 试 pyttsx3;两者都不可用 → 自动转 C 档出台本,并在末尾明确告诉你哪一步没做成,绝不假装成功。
二、文本层:把书面语翻成能说出口的话
AI 写台词最大的毛病是写给人看的,不是给人说的。判断标准很简单:你自己念一遍,会不会咬舌头?
2.1 三条铁律
- 一句话不超过 14 个字(超过就断,长句是机器味的头号来源)
- 能用口语词就不用书面词(见下表)
- 每三五句插一个语气词(嗯、啊、你看、说实话)
2.2 书面语 → 白话对照
| 书面语(别用) | 白话(用这个) |
|---|---|
| 因此、故而 | 所以 |
| 然而、但是 | 可、不过 |
| 应当、宜 | 该、最好 |
| 进行调理 | 调一调 |
| 十分关键 | 要紧 |
| 岂不知 | 你哪知道 |
| 由此可见 | 你看 |
| 倘若 | 要是 |
| 立即 | 马上 |
| 研究表明 | 有研究说 |
2.3 加"人味"的四种佐料
- 语气词:嗯、啊、唉、你看、说句实在的
- 口癖:老人爱说"我跟你说""这事儿啊";年轻人爱说"真的""就"
- 自我修正:真人说话会改口——"不对,不是三顿,是三顿里头那顿"
- 留白:话说一半停一下,比说满更有劲
三、画面层:去掉塑料感
AI 出图三个通病,逐个破:
| 毛病 | 表现 | 破法(写进提示词) |
|---|---|---|
| 光太匀 | 像影楼,没有主光 | 指定单一光源 + 明确明暗对比,如"仅一盏暖灯,画面大面积处于暗部" |
| 构图太正 | 人物永远居中对称 | 要求"偏构图""人物位于画面左侧三分之一" |
| 皮肤太干净 | 脸像塑料 | 加"皮肤可见毛孔与斑纹""布光不修饰瑕疵" |
万能去塑料后缀(每张生图都带上):
写实摄影风格,单一自然光源,明暗对比明显,构图偏侧不对称,
保留皮肤与材质的真实瑕疵,轻微胶片颗粒,浅景深
四、合规层:肖像权规避(重要)
这是真会出事的一层,不是走过场。
4.1 风险在哪
AI 生成的人脸,法律上不对应某个真人,本不侵犯谁的肖像权。但:如果生成结果与某位公众人物实质性相似(普通观众能认出来),就可能落入《民法典》第 1019 条的射程——该条明确禁止"利用信息技术手段伪造"侵害他人肖像权,实务中已有 AI 换脸被判侵权的案例。
风险等级:
| 情况 | 风险 |
|---|---|
| 生成的脸是个路人,谁都不像 | 低 |
| 有点像某个演员,但说不出是谁 | 中(建议重画) |
| 一眼能认出是某位明星 | 高,必须重画 |
| 生成了真人明星的脸并商用 | 极高,违法 |
4.2 三条规避手法(按可靠性排序)
① 负向约束(必做,每张生图都加)
原创面孔,非真实人物,不得与任何真实存在的公众人物、演员、明星相似,
普通路人长相,无明星特征
② 路人化特征(强烈建议)
给角色加具体的、不完美的细节,脸就"定"住了,不会往明星脸上飘:
- 不对称特征:一边眉尾有断痕、左脸颊一颗痣
- 年龄痕迹:明确的老人斑、深深的法令纹、眼袋
- 非标准长相:塌鼻梁、方下颌、大小眼(轻微)
> 诀窍:越具体,越不像明星。明星脸之所以被认出,恰恰是因为它"标准漂亮"。
③ 不露脸构图(最稳,建议关键镜头用)
养生、生活类内容其实非常适合不露脸,而且更有意境:
- 手部特写(翻书、倒水、掐指)
- 背影 / 侧影 / 剪影
- 局部(老花镜后的眼睛、握杯的手)
- 空镜(茶具、书页、座钟、砂锅)
建议:定妆图必须露脸(要锁脸),但正片里至少三成镜头用不露脸构图——既降风险,又提升质感。
4.3 发布前自查
- [ ] 每张生成的人脸,换个人看一眼,能认出是谁吗?
- [ ] 提示词里有没有出现任何真实人名 / 明星名?(出现过就全部重画)
- [ ] 有没有一张图明显像某个演员?有就重画那张
- [ ] 片尾/简介有没有声明"人物为 AI 生成,不对应任何真实人物"?
五、工作流
- 先判断缺哪层:声音 / 文本 / 画面 / 合规,别一股脑全做
- 声音层优先:分角色配音是性价比最高的一招,一步拉开差距
- 文本层同步改:台词不改,配得再好也还是念稿
- 画面层在生图阶段做:图已经出了就只能后处理,效果打折
- 合规层最后过:发之前挨张看一遍脸
六、注意事项
- edge-tts 需要联网。断网时先试本机
pyttsx3(只有一个中文女声,多角色会全变成同一个嗓子,只能应急);装了pyttsx3也失败就转 C 档出台本 - 不承诺"听起来完全像真人"——神经网络语音已经很接近,但长句仍会露馅,所以断句规则必须守。凡是把效果说成"以假乱真"的,都是吹牛
- 分角色配音会让时长变长(角色交替要留白),做 90 秒短剧时台词量要预留 15% 余量
- 涉及医疗健康内容时,声音再真也不能说疗效承诺类的话,红线优先级高于真人味
- 本技能只保证"更像人做的",不保证涨粉、不保证播放量——那是选题和内容的事,配音救不了烂本子
七、常见故障对照
| 现象 | 原因 | 处理 |
|---|---|---|
找不到 ffmpeg |
未装或不在 PATH | pip install imageio-ffmpeg,脚本会自动找它自带的二进制 |
ModuleNotFoundError: edge_tts |
没装语音库 | pip install edge-tts;装不上就走 --plan |
| 合成到一半报网络错 | 微软接口偶发超时 | 重跑一次;连续失败就换 C 档出台本,别耗在这儿 |
| 音轨里两个角色同一个声音 | 角色名写错,没匹配上音色库 | 角色名必须与 characters 里的键完全一致(含空格) |
| 时长比预计长很多 | 停顿按每句都加了一遍 | 调小 gap,或在个别行写 "pause": 0 |