广播剧最容易听乱的地方,通常不是台词,而是不同角色的声音、环境声和配乐同时挤在一起。一个简单做法是先把故事拆成短句,给每个角色固定一段获准使用的参考音,再单独处理环境声、音乐和提示音,最后分层混音。
这篇用原创的“早市汤摊”故事做了 7 句、3 个说话人的本地样音。IndexTTS-2.5 在 M1 Max 上加载约 21 秒、生成和拼接用时约 111 秒,对白总长 28.6 秒。混音用的是先前已测试的 Suno 配乐和音效,没有重新生成或扣积分。自动转写把“钥匙”“旧钟”等词识别错了几处,成品还没有人工试听,所以本文不评价音色和最终听感。
开始前分清四类素材的权利
- 剧本:原创,或已取得改编、录音、传播和商业使用所需的许可。
- 角色参考音:每位说话人都要单独确认是否同意将录音用于克隆音色、生成新台词及目标发布渠道。拿到音频文件不等于获得声音本人授权。
- 音乐和音效:分别核对来源、下载方式、使用范围和商用条件。Suno 页面能播放,不代表就有可下载并站外交付的文件;实际权益和额度要看账户计划及当前条款。
- AI 标识:发布合成音频时,按平台的声明流程添加相应标识。《人工智能生成合成内容标识办法》已于 2025 年 9 月 1 日施行,覆盖 AI 生成的音频内容。
IndexTTS 的官方接口通过 spk_audio_prompt 指定参考音频;多角色制作应为旁白和各角色分别准备有授权的声音,并在每句台词里固定角色对应关系。IndexTTS 使用文档 代码、模型权重和第三方参考数据的许可要分别查看,不能把本地运行理解成自动获得商用权。IndexTTS 中文许可
第一步:把短剧拆成角色台词
以下人物、店铺和情节均为虚构。短句分开生成,后续发现读错一个词时,只要重做对应片段。
| 顺序 | 角色 | 台词 |
|---|---|---|
| 1 | 旁白 | 雨停后,早市渐渐热闹起来,巷口的汤摊还亮着灯。 |
| 2 | 阿岚 | 林叔,您落在摊位上的钥匙,我帮您收好了。 |
| 3 | 林叔 | 还好找到了,今天我要去新店交钥匙。 |
| 4 | 阿岚 | 您的修表铺要搬走了吗? |
| 5 | 林叔 | 不搬,只是把门口那只旧钟修好,送给新店主。 |
| 6 | 阿岚 | 那我把汤装好,您路上慢点。 |
| 7 | 旁白 | 收银铃响了一声,早市的叫卖声又盖过了雨声。 |
第二步:按角色生成对白
下载广播剧制作练习包,把 多角色合成脚本.py 放进本机 IndexTTS 项目根目录,也就是能看到 checkpoints/config.yaml 的文件夹。准备旁白、阿岚和林叔三段参考音后运行:
python 多角色合成脚本.py \
--voice-narrator /path/to/authorized-narrator.wav \
--voice-a /path/to/authorized-voice-a.wav \
--voice-b /path/to/authorized-voice-b.wav
脚本逐句生成 WAV,在每句之间加 0.35 秒停顿,再把对白拼接到 outputs/s130/。它会检查输入文件、输出是否为空或包含异常数值,以及各段采样率、声道能否一致拼接。实际制作时,可按人物情绪和停顿调整文本;听见漏字、重音不自然或角色串音,就只重做问题段,不要一上来整篇重跑。
第三步:挑配乐和声音提示
如果需要新配乐,在 Suno 的 Songs 创作页选择纯音乐方向,描述情绪、乐器、速度和场景,例如:
instrumental background music for a warm morning market radio drama, gentle acoustic guitar, soft piano, subtle strings, restrained dynamics, no vocals, leave space for dialogue
Suno 的 Custom 流程支持填写风格和选择 Instrumental;Sounds 可以做短音效或循环环境采样,具体入口和生成选项以当前账户页面为准。Custom 说明 Sounds 说明
本次为了省积分,没有重新生成素材,复用了早前教程中已测试的 45 秒 Lo-fi 配乐、早市环境声和约 2 秒收银提示音。它们只作为本机混音输入,不放进本篇练习包。付费订阅作品权利、下载额度和试用限制应以账户和官方最新说明为准;需要站外交付时使用官方允许的下载方式,不录屏或抓取播放流来绕过限制。Suno 作品权利 下载说明
第四步:让对白、环境声和配乐各占一层
本次对白 28.6 秒。早市环境声铺底但保持很轻,配乐先淡入、最后淡出;收银提示音只在结尾出现一次。下面是本次混音的核心 FFmpeg 参数示意,音量和时间点只是这段样音的起点,换成其他设备和素材要重新听调:
ffmpeg -i dialogue.wav \
-stream_loop -1 -i market-ambience.m4a \
-stream_loop -1 -i instrumental.m4a \
-i register-ding.m4a \
-filter_complex "[0:a]volume=0.92[voice];[1:a]volume=0.13[amb];[2:a]volume=0.10,afade=t=in:d=1.5,afade=t=out:st=24.5:d=3.5[music];[3:a]volume=0.28,adelay=25500|25500[ding];[voice][amb][music][ding]amix=inputs=4:duration=first:normalize=0,alimiter=limit=0.95,aformat=sample_rates=48000:channel_layouts=stereo[out]" \
-map "[out]" -c:a aac -b:a 192k drama-demo.m4a
试听时先确认对白清楚,再逐步提高环境声和配乐。提示音不要盖住角色台词,歌曲尾部也要留出自然收束。练习包中的脚本可以把七句合成为对白文件;音效排布和混音仍需按你的片长手工调整。
本次实测结果与限制
IndexTTS-2.5 在 M1 Max、64GB、macOS 27.0.1 上使用 3 段系统合成语音做本地技术演示:模型加载 21.34 秒,7 句生成、拼接与自检总计 111.45 秒,输出 28.617 秒单声道 22.05 kHz WAV。系统合成参考音不代表声音本人授权;样音和克隆结果都只留在本机,没有进入公开练习包。
把对白、早市环境声、配乐和提示音混合后,成品为 28.617 秒、48 kHz、双声道 AAC。FunASR 1.4.16 自动转写识别出三组说话人,但把“钥匙”识别为“钥声”、“旧钟”识别为“绣中”,把“不搬”识别为“不凡”。这是机器复核提示,不足以判断到底是合成发音问题还是识别错误;发布前还要人工逐句听审。本次没有听感结论,也不提供这段系统语音样音下载。
工具与授权提醒
| 工具 | 在这条流程里的作用 | 注意事项 |
|---|---|---|
| IndexTTS-2.5 | 按旁白和角色参考音生成分段对白 | 参考音需声音本人明确授权;模型代码、权重和素材分别核对许可 |
| Suno | 可生成片头音乐、氛围音乐、One-Shot 音效或 Loop 环境声 | 生成会消耗账户额度;站外下载和商用条件按当前计划与条款核对 |
| FFmpeg | 控制音量、淡入淡出、延迟提示音并混合分轨 | 示例参数不是通用响度标准;最终要用耳机和手机外放复听 |
**不要把技术上能生成,写成权利上能使用。**人物声音、剧本、音乐、音效和发布平台的许可应分别确认;发布 AI 合成音频时按平台要求声明和标识。