基于 Lightricks 的 LTX-2 构建。 Dramabox 是 Resemble AI 的情感化文本转语音系统,在 LTX-2 社区许可下,基于 LTX-2.3 音频分支训练而成。特别感谢 Lightricks 团队开源基础模型。
Dramabox 是一款提示驱动型文本转语音系统,提示词本身掌控一切——包括说话人身份、情感、表达方式、笑声、叹息、呼吸、停顿和语气转换。只需提供 10 秒的语音参考,即可克隆目标音色。它是 LTX-2.3 3.3B 纯音频模型(扩散Transformer + 流匹配)的 IC-LoRA 微调版本,以 Gemma 3 12B 文本嵌入为条件。
| 🤗 模型 | ResembleAI/Dramabox |
| 🎭 演示空间 | ResembleAI/Dramabox(ZeroGPU) |
| 💻 代码 | resemble-ai/DramaBox |
| 🏗️ 基础模型 | Lightricks/LTX-2.3 |
| 📜 许可 | LTX-2 社区许可 — 详见 LICENSE |
from src.inference_server import TTSServer
server = TTSServer(device="cuda") # downloads weights on first run
server.generate_to_file(
prompt='A woman speaks warmly, "Hello, how are you today?" '
'She laughs, "Hahaha, it is so good to see you!"',
output="output.wav",
voice_ref="reference.wav", # optional, 10+ seconds of target voice
cfg_scale=2.5,
stg_scale=1.5,
duration_multiplier=1.1,
seed=42,
)python src/inference.py \
--prompt 'A woman speaks warmly, "Hello, how are you today?"' \
--voice-sample reference.wav \
--output output.wav \
--cfg-scale 2.5 --stg-scale 1.5| 参数 | 默认值 | 功能说明 |
|---|---|---|
prompt | — | 场景描述。对话内容置于 "双引号" 内,舞台指示置于引号外。详见下文“提示词格式”。 |
voice_ref(--voice-sample) | None | 可选的 10 秒以上音频片段,模型将克隆其音色。若未提供,模型会选择与描述相符的声音。 |
cfg_scale | 2.5 | 无分类器引导 —— 控制输出对提示词的遵循程度。值越低,输出越自然;值越高,文本忠实度越高,但戏剧化效果也越强。内部会自动重新缩放,以防止高 cfg 值时的信号削波(详见下文“自动缩放”)。 |
stg_scale | 1.5 | 跳 token 引导 —— 通过扰动的 transformer 模块路径(模块 29)应用。可增强表达的强调感,且不会像 cfg 那样导致信号饱和。 |
duration_multiplier(--duration-multiplier) | 1.1 | 自动估算语音长度的乘数(10% 的呼吸空间余量)。仅在 gen_duration(或 --gen-duration)为 0 时使用。 |
gen_duration(--gen-duration,“目标时长”滑块) | 0(自动) | 输出的明确时长(秒)。对于音乐或长场景,建议设置为 20–60 秒。当值 > 0 时,将覆盖基于提示词的估算时长。 |
ref_duration(--ref-duration,“参考时长”滑块) | 10.0 | 模型用于音色条件学习的语音参考片段时长(3–30 秒)。参考片段越长,音色捕捉越丰富;参考片段越短,编码速度越快。 |
seed | 42 | 用于结果复现。 |
rescale_scale(--rescale-scale) | "auto" | 潜在空间 CFG 标准差缩放。默认是一个 cfg 感知的调度(cfg=2 以下为 0,cfg=10 时渐增至 1.0),确保在任何 cfg 值下输出峰值均低于 0 dBFS。可传入 [0, 1] 范围内的任意浮点数进行覆盖,或设为 0 以禁用。 |
watermark(--no-watermark 用于禁用) | True | 对输出应用 Resemble Perth 不可感知的神经水印。该水印可在 MP3/AAC 格式转换、常见编辑操作后依然存在;检测准确率约为 100%。 |
<speaker description>, "<dialogue>" <action direction> "<more dialogue>"双引号内 — 模型会逐字朗读以下内容:
"Hello, how are you?""Hahaha"、"Hehehe"、"Mmmmm"、"Ugh"、"Argh"、"Hmm"引号外 — 舞台指示被解读为表演提示,不会被朗读:
She sighs deeply. · He clears his throat. · A long pause. · Her voice cracks. · He gulps nervously.避免放在引号内(模型会逐字朗读该词):Sigh、Gasp、Cough、Ahem、Pfft。
一位高贵的女性用一种克制而低沉的声音说着,语气中带着冷酷的怒火。她深深叹了口气,"I have told you a thousand times, and yet here we are again." 她的声音因怒火渐升而变得尖锐,"Do you honestly think I enjoy repeating myself?! Do you?!" 她发出一声冰冷而嘲讽的笑,"Hahaha, how utterly pathetic you are." 她压低声音,凑近对方,用恶毒的耳语说道,"Now get out of my sight before I do something we will both regret."
参考音频
生成音频
一个活泼的女孩用明亮、像唱歌一样的声音说着,已经笑到一半了,"Hehehe, oh my gosh you should see your face right now, it is priceless!" 她笑着笑着喘不过气来,"Oh my, hehe, oh my, I cannot stop laughing!" 她长叹了一口气,试图让自己平静下来,"Ahhhhh okay okay okay, I will stop, I promise I will stop." 她凑近,神秘兮兮地小声说,"But seriously though, between you and me," 然后又立刻忍不住了,"Haha, no I, hehehe, I just cannot! You are way too funny, haha!" 她笑着笑着还打了个鼻息,"Pfft, oh no no no, that was so embarrassing, pretend you did not hear that!"
参考音频
生成音频
一个嗓音低沉的反派带着戏剧性的威胁口吻说话,起初轻笑几声:“嘿嘿嘿,哈哈哈哈哈!哦,原谅我,原谅我。”他带着邪恶的笑容喘了口气,清了清嗓子。“他们挣扎的样子实在是太有趣了,不是吗?”他的声音里充满了轻蔑,“说真的,我对你期望更高。太令人失望了。”他凑近,用恶毒而强烈的语气低语:“但别担心,亲爱的。真正的好戏才刚刚开始。”他最后又轻笑一声:“嘿嘿嘿。”
参考音频
生成音频
一位脱口秀主持人带着活泼的热情说道。他夸张地倒吸一口气,表现出震惊的样子:“不!你不会真这么说了吧,告诉我你没这么说!”他爆发出无法控制的笑声:“哈哈哈哈!我的天,我的天!”他喘着气,几乎说不出话来:“我不行了,我现在真的喘不过气了!”他擦了擦眼睛,抽了抽鼻子:“哦,这太好笑了,真的太好笑了。”他愉快地叹了口气:“啊,好了好了,让我镇定一下,我是专业的。”他吸了一口气,然后立刻又笑了起来:“噗,嘿嘿嘿,不行,我实在忍不住了,非常抱歉各位!”他鼓了鼓掌:“各位,这,这就是我热爱这份工作的原因!”
参考音频
生成音频
马丁·泰勒是一位沉稳且颇具权威的英国足球解说员,他的解说流畅从容、节奏得当,能以精准的时机把握和克制的戏剧张力逐步营造紧张氛围。“他来了……走进厨房……打开冰箱……”他语气平稳地说道,与此同时,想象中人群的低语声开始隐约响起。“你能感觉到这一刻……选择就在眼前……”他的声音沉稳而富有观察力。“牛奶……鸡蛋……剩菜……他在考虑……”短暂停顿,人群的期待感渐浓。“不……他从它们旁边走过了……”语气中略带一丝好奇。“这下有意思了……”人群的声音越来越大,低沉的嗡嗡声在这一刻不断增强。“他不慌不忙……权衡着每一个选择……”他继续平静地解说。现场突然安静下来。“等一下……他伸手了……”停顿被拉长——然后——“他拿到果汁了!”他的声音微微上扬,虽有控制但难掩激动。一瞬间的寂静之后,人群爆发出震耳欲聋的欢呼。“听听这声音!全场彻底沸腾了!”他的声音在鼎沸的欢呼声、呐喊声和雷鸣般的掌声中响起。“他们全都站起来了——对这纯粹的决断时刻,反应太热烈了!”他的声音在一片混乱中略微提高。欢呼声持续不断,回荡不止。“太不可思议的场面了……简直是不可思议……”他补充道,让这欢呼声承载着此刻的情绪。“最终……是果汁赢得了胜利……”他总结道,此时人群的声音虽仍在嗡嗡作响,但已渐渐平息。
参考音频
生成音频
后街男孩是一支90年代末的成熟男子组合,拥有五名嗓音流畅、配合默契的男声,他们在纯净的流行音乐制作中融入了丰富而富有情感的和声层次。“一步一步……走出门外……新的一天……准备好迎接更多精彩……”他们以柔和且同步的和声唱道。其中一个声音挺身而出,以温暖而真挚的主唱引领。“钥匙在我手……计划已筹谋……准时出发……”其他人则以饱满的和声在他身后衬托。“别迟到……得行动……”接着是“城市在呼唤我的名字……”他们的声音一同升起,流畅而令人振奋。“告诉我为什么……每个早晨都感觉一成不变……”他们带着怀旧的温暖唱道。和声以精湛的技巧愈发紧密。“但我知道……我又要再次踏上征程……”然后是“咖啡在我手……”短暂停顿,声音此刻更为轻柔。“我准备好出发了……”整个组合以明亮而统一的合唱回归。“我们会闯出自己的路……”他们以充满自信的活力唱道。“穿过人潮,越过喧嚣,我们坚定前行,耶!”他们以流畅的多层次和声和积极向上的势头结束了演唱。
参考音频
生成音频
| 文件 | 大小 | 内容 |
|---|---|---|
dramabox-dit-v1.safetensors | 6.6 GB | 纯音频 DiT(LoRA 已合并至基础模型) |
dramabox-audio-components.safetensors | 1.9 GB | 音频嵌入连接器 + 音频文本投影 + 音频 VAE + 声码器 |
unsloth/gemma-3-12b-it-bnb-4bit | ~8 GB | 文本编码器(首次运行时自动下载) |
显存:服务器预热后峰值约 24 GB。速度:H100 上预热后生成速度约为 2.5 秒/次。
inference.py 和 TTSServer.generate_to_file 的所有输出均会使用 Resemble Perth 自动添加水印——这是一种不可感知的神经水印,能够经受 MP3 压缩、音频编辑和常见操作的考验,同时保持近 100% 的检测准确率。
import perth, librosa
wav, sr = librosa.load("output.wav", sr=None, mono=True)
detector = perth.PerthImplicitWatermarker()
print(detector.get_watermark(wav, sample_rate=sr)) # ≈ 1.0 for our outputs通过传递 --no-watermark(命令行界面)或 watermark=False(Python)可禁用水印以进行调试。
Dramabox 是基于 LTX-2 的 Resemble AI 微调模型。本项目根据 LTX-2 社区许可协议进行分发,请参见 LICENSE。再次感谢 Lightricks 发布基础模型。