From Script to Drama: An Agentic Framework for Controllable Multi-Speaker Dialogue TTS — multi-character audiobook demo

Multi-character novel narration · 5 Chinese + 5 English excerpts · each compared against other engines · script auto-highlights & scrolls while playing · plays fully offline
ControlEdit-TTS (proposed) is shown side by side with other engines (VoxCPM2 / SoulX / Higgs / Fish-S2 / VibeVoice-7B / VibeVoice-1.5B / any2speech). To keep this attachment within the size limit, audio is kept lossless (WAV) but only a random subset of the other engines is bundled per excerpt — ControlEdit-TTS is always included. Each excerpt is only a short middle segment of a longer story, so a short synopsis and a "before this excerpt" note are given for context. The script panel shows each line's character / text / emotion·pace·volume / 🎬 instruct / scene; click any player and the script auto-highlights & scrolls to the current line (only one plays at a time).
中文 demos · English demos

中文 demos

《回音室》悬疑推理 seed_059 · 窗口 1 · 6 句 · 4 个引擎

著名建筑设计师沈皓死在他亲手设计的顶级隔音书房“回音室”里,现场门窗反锁、完美得像一起意外。刑警张振国与许晴逐一审问当天出入过公寓的人,要从一间不可能的密室里找出真相。

本段之前: 保安顾伯、生意伙伴林慧芳相继接受询问后,轮到了死者年轻的助理周毅。这一段里,神情紧张的周毅坚称自己当天只在门口放下文件、从未进屋,并反复表白对老师沈皓的崇敬。

ControlEdit-TTS
Fish S2-Pro
VibeVoice-1.5B
any2speech
🎬 场景: 询问周毅
  1. zhou_yi我……我真的什么都不知道。昨天下午,沈老师让我去送一份紧急的设计图纸。我到了他家门口,按了门铃,但他没开门。我给他打电话,他说正在忙,灵感来了,不想被打扰,让我把文件放在门口就行。
    情感:紧张语速:fast音量:normal🎬 声音颤抖,急于辩解
  2. xu_qing所以你没进去?
    情感:平静语速:medium音量:normal🎬 确认性提问
  3. zhou_yi没有,绝对没有!沈老师的规矩,他在‘回音室’工作时,天塌下来都不能打扰。我把文件袋放在脚垫下,就立刻回公司了。
    情感:紧张语速:fast音量:loud🎬 激烈否认,急切解释
  4. zhang_zhengguo你很尊敬你的老师?
    情感:平静语速:medium音量:normal🎬 眼神如鹰隼,试探提问
  5. zhou_yi当然!沈老师是我的偶像,是我的恩人!没有他,我根本进不了这个行业。我怎么可能害他?
    情感:紧张语速:fast音量:loud🎬 激动地辩解,反问
  6. xu_qing但有人说,你觉得他限制了你的发展。
    情感:平静语速:medium音量:normal🎬 话语如刀,直击要害
晚潮历史古装 seed_044 · 窗口 0 · 6 句 · 4 个引擎

告老还乡的前朝首辅沈从安,眼看独子沈徽——如今的吏部侍郎——被卷入圣上新政的清查田亩之案,担心儿子锋芒太露、成为他人棋子。一家人在表面的平静下,各怀心事。

本段之前: 暮色中的相府书房,沈从安与老妻陆氏谈起近日归家总带倦意的儿子沈徽。老人借“潮水有涨有落”道出忧虑、暗示该寻一处避风的港湾;话音刚落,管事秦嬷嬷便在帘外回报大爷归家,沈徽迈步进了书房。

ControlEdit-TTS
Fish S2-Pro
VibeVoice-1.5B
any2speech
🎬 场景: 相府书房
  1. shen_congan圣上新政,吏部首当其冲,事多是自然的。
    情感:平静语速:medium音量:normal🎬 语气平淡,不露声色
  2. shen_congan只是……过犹不及。这风头浪尖上,立得越高,风便越烈。
    情感:沉重语速:slow音量:normal🎬 语重心长,意有所指
  3. lu_shi您的意思是……
    情感:紧张语速:slow音量:quiet🎬 迟疑试探,略带不安
  4. shen_congan潮水有涨有落,善泳者,当知何时顺势而为,何时……该寻一处避风的港湾。
    情感:沉重语速:slow音量:normal🎬 意蕴深长,告诫点拨
  5. qin_momo老太爷,老夫人,大爷回来了。
    情感:平静语速:medium音量:normal🎬 恭敬平稳,通报事宜
  6. shen_hui父亲,母亲。
    情感:平静语速:medium音量:normal🎬 恭敬沉稳,略带疲惫
雾中人悬疑推理 seed_003 · 窗口 0 · 6 句 · 4 个引擎

大雾笼罩的江城,画家顾远山失踪两天。刑警队长陆振宇顺着妻子、学生、邻居的证词层层推进,慢慢接近一个关于“雾”与告别的真相。

本段之前: 接到报案后,陆振宇与年轻警员周子昂赶到画家公寓。这一段是他们刚进门的开场:周子昂简报案情,刚出差归来、神情反常镇定的画家妻子林蕙迎入二人,陆振宇开始询问顾远山最后的行踪。

ControlEdit-TTS
VoxCPM2
Higgs Audio v3
Fish S2-Pro
🎬 场景: 楼下汇报
  1. zhou_ziang陆队,报案人说失踪的画家顾远山已经两天没露面了,电话也不接。
    情感:紧张语速:fast音量:quiet🎬 焦急低声,语速快
  2. zhou_ziang他妻子林蕙今天从外地出差回来,才发现人不见了。
    情感:紧张语速:fast音量:quiet🎬 焦急低声,语速快
  3. lin_hui是陆警官吗?
    情感:平静语速:slow音量:quiet🎬 声音轻但清晰
  4. lin_hui里面请吧。家里很乱,我刚回来,还没来得及收拾。
    情感:平静语速:slow音量:quiet🎬 平静克制,略带疲惫
  5. lu_zhenyu林女士,请您再说一遍最后一次联系顾先生是什么时候?
    情感:平静语速:medium音量:normal🎬 沉稳有力,专业询问
  6. lin_hui是三天前,周二晚上。我当时在邻市开会,我们通了电话,他说他灵感来了,要画一幅关于‘雾’的画。这是我们最后一次通话。
    情感:平静语速:slow音量:normal🎬 平静叙述,克制情感
一碗阳春面家庭伦理 seed_047 · 窗口 1 · 6 句 · 4 个引擎

老人赵桂兰摔了一跤,引爆了女儿一家积压已久的养老矛盾。卖掉老房、送进养老院的“最优方案”,与一份无法用金钱衡量的亲情,在餐桌上正面相撞。

本段之前: 女儿林慧萍把刚出院的母亲接到自己家。压抑的晚饭桌上,这一段是谈判的开场:外孙张远航只顾玩手机惹老人不快,而林慧萍小心翼翼地把“以后养老”的话题引了出来。

ControlEdit-TTS
VoxCPM2
SoulX-Podcast
VibeVoice-7B
🎬 场景: 家中晚饭
  1. zhao_guilan远航,把手机放下。吃饭的时候没个规矩。
    情感:愤怒语速:medium音量:normal🎬 突然开口,语气严厉不容置喙
  2. zhang_yuanhang姥姥,我跟朋友聊工作呢。
    情感:冷漠语速:medium音量:normal🎬 辩解,带着不耐烦
  3. zhao_guilan什么工作比陪长辈吃饭还重要?
    情感:愤怒语速:medium音量:normal🎬 质问,语气严厉不容置喙
  4. lin_huiping妈,您别怪他,年轻人工作压力大。
    情感:温柔语速:medium音量:normal🎬 赶紧打圆场,语气和缓
  5. lin_huiping妈,关于您以后养老的事,我和建国有了一些想法,想跟您商量一下。
    情感:紧张语速:medium音量:normal🎬 语气小心,引入正题
  6. zhao_guilan说吧,我听着。
    情感:冷漠语速:medium音量:normal🎬 语气冰冷,准备对峙
平安扣旅途相遇 seed_049 · 窗口 0 · 6 句 · 4 个引擎

辞了职、独自西行的苏晚,在开往乌鲁木齐的列车上与摄影师林默、一对老夫妻、一个商人萍水相逢。一枚突然失窃的祖传玉佩,把这个封闭包厢变成了人心的试金石。

本段之前: 旅途第二日清晨,软卧包厢里一声惊叫打破宁静——老太太张姨发现自己那枚母亲传下的羊脂玉平安扣不见了。这一段正是失窃的惊慌与猜忌,在五个陌生人之间悄然埋下种子的时刻。

ControlEdit-TTS
SoulX-Podcast
VibeVoice-7B
VibeVoice-1.5B
🎬 场景: 玉佩失窃
  1. zhang_yi我的玉佩!我的玉佩不见了!
    情感:恐惧语速:fast音量:loud🎬 尖锐惊叫,充满恐慌
  2. chen_bo老婆子,怎么了?什么玉佩?
    情感:紧张语速:fast音量:normal🎬 急切地追问
  3. zhang_yi就是我妈传给我的那个!那个羊脂玉的平安扣!我昨晚睡觉前明明放在枕头底下的!
    情感:悲伤语速:fast音量:loud🎬 带着哭腔,焦急万分
  4. gao_jianjun阿姨,您再仔细找找?会不会是掉到床底下了?
    情感:平静语速:medium音量:normal🎬 皱着眉头,提出建议
  5. zhang_yi没有……真的没有……
    情感:悲伤语速:slow音量:quiet🎬 喃喃自语,绝望
  6. chen_bo这玉佩对我们家意义重大,是我岳母的遗物,少说也值个十几万。昨晚我们都在这个房间里,车门也锁了,东西不可能自己长腿跑了!
    情感:愤怒语速:fast音量:loud🎬 语气强硬,暗示指责

English demos

The Archimedes BridgeComing-of-Age / Campus seed_022 · excerpt 0 · 7 lines · 4 engines

A week before finals, engineering student Leo is paralyzed by anxiety over a fragile balsa-wood bridge he can't get to hold. A workshop technician, a professor, and an old librarian each nudge him toward the same quiet lesson: build one sturdy thing at a time.

Before this excerpt: In the engineering workshop, Leo stares at his half-finished “Archimedes Bridge.” As he prods the flimsy joints, the technician Mr. Henderson and Professor Vance stop by his bench, offering advice on the truss and on Archimedes' famous “place to stand.”

ControlEdit-TTS
Higgs Audio v3
VibeVoice-1.5B
any2speech
🎬 Scene: workshop floor
  1. mr_hendersonYou're overthinking the truss.
    emotion:coldnesspace:mediumvolume:normal🎬 gruff, direct, no-nonsense
  2. mr_hendersonKeep it simple.
    emotion:coldnesspace:fastvolume:normal🎬 grunted, clipped, matter-of-fact
  3. professor_vanceThe compressive and tensile forces are fighting each other, Leo.
    emotion:calmpace:slowvolume:quiet🎬 soft, gentle, knowledgeable
  4. professor_vanceRemember what Archimedes said?
    emotion:calmpace:mediumvolume:quiet🎬 encouraging, posing a question
  5. professor_vanceGive me a place to stand, and I shall move the Earth.
    emotion:gravitypace:mediumvolume:normal🎬 quoting with significance
  6. professor_vanceYour bridge just needs a solid place to stand.
    emotion:easepace:slowvolume:quiet🎬 gentle, encouraging advice
  7. mrs_gableIt's a busy time of year.
    emotion:calmpace:slowvolume:quiet🎬 low, pleasant, and serene
A Fine Layer of DustMystery / Detective seed_019 · excerpt 1 · 6 lines · 4 engines

A wealthy man is found dead beneath a toppled library ladder, a dusty copy of Moby Dick beside him. The weary detective Arthur Vance must decide who is lying: the composed widow, or the terrified young caregiver.

Before this excerpt: In the dead man's study, Arthur questions the two women who were in the house. The widow Eleanor coldly insists the caregiver Clara was “late” bringing her tea, while Clara stammers her account — and Arthur, kneeling by a suspiciously clean shelf, presses her on exactly what she heard.

ControlEdit-TTS
VoxCPM2
SoulX-Podcast
Fish S2-Pro
🎬 Scene: interjecting, accusing
  1. eleanor_croftShe was in the kitchen, weren't you, dear?
    emotion:coldnesspace:mediumvolume:normal🎬 sharp, icy interjection
  2. eleanor_croftMaking my afternoon tea. A little late, I might add.
    emotion:coldnesspace:mediumvolume:normal🎬 dripping with condescension and venom
  3. clara_jenningsI was... the kettle took a moment to boil.
    emotion:fearpace:slowvolume:quiet🎬 weak, frightened defense
  4. eleanor_croftA moment too long, perhaps.
    emotion:coldnesspace:slowvolume:quiet🎬 a murmured, venomous suggestion
  5. arthur_vanceYou say you heard a crash.
    emotion:gravitypace:slowvolume:quiet🎬 quiet, deliberate confirmation
  6. arthur_vanceJust one?
    emotion:tensionpace:slowvolume:quiet🎬 a quiet, piercing question
The Last Light of the PerseidsRomance seed_058 · excerpt 1 · 6 lines · 3 engines

Ten years after Liam left town without explanation, Elara returns to Blackwood Ridge for the Perseid meteor shower and comes face to face with him again. Beneath her sister's fierce protectiveness lies a truth about why he really left.

Before this excerpt: On the crowded ridge under the meteor shower, Liam walks up to Elara for the first time in a decade. Her sister Susan plants herself between them — “It's been ten years, I think we're past ‘hello’” — while Liam, undeterred, tells Elara she looks good.

ControlEdit-TTS
Fish S2-Pro
VibeVoice-7B
🎬 Scene: Susan intervenes
  1. liamI was just saying hello to your sister.
    emotion:coldnesspace:mediumvolume:normal🎬 pointedly, with restraint
  2. susanIt's been ten years.
    emotion:coldnesspace:mediumvolume:normal🎬 sharp and dismissive
  3. susanI think we're past 'hello'.
    emotion:coldnesspace:fastvolume:normal🎬 cutting and sharp
  4. elaraSusan, please.
    emotion:tensionpace:mediumvolume:quiet🎬 a quiet, pleading tone
  5. liamYou look good, El.
    emotion:tendernesspace:slowvolume:quiet🎬 softly, tinged with regret
  6. liamThe city suits you.
    emotion:tendernesspace:slowvolume:quiet🎬 almost nostalgic
The Gifting BoxHorror / Supernatural seed_026 · excerpt 1 · 6 lines · 3 engines

While packing up their grandfather's house, a family is warned never to touch a small lacquered box on the mantel — the “Gifting Box,” which gives something back for whatever you put inside, but never what you expect.

Before this excerpt: In Arthur's dusty study on moving day, the old man forbids his skeptical son-in-law Mark from packing the little box. Leo asks what it does, and Arthur — knuckles white — begins to explain the eerie rule of exchange that governs it.

ControlEdit-TTS
Fish S2-Pro
VibeVoice-1.5B
🎬 Scene: Mark reacts
  1. markThe little trinket box? We've got to pack everything, Arthur.
    emotion:tensionpace:mediumvolume:normal🎬 skeptical, trying to be reasonable
  2. arthurNot that.
    emotion:tensionpace:mediumvolume:loud🎬 raspy, firm insistence
  3. arthurThat's the Gifting Box. It stays.
    emotion:gravitypace:mediumvolume:normal🎬 a statement of absolute finality
  4. leoGifting Box? What does it do?
    emotion:calmpace:fastvolume:normal🎬 genuinely curious and eager
  5. arthurIt balances things. You put something inside, and the House gives something back.
    emotion:gravitypace:slowvolume:quiet🎬 a frail, knowing, ominous whisper
  6. arthurBut it's a cheat. It never gives what you expect. It only gives what it has.
    emotion:gravitypace:slowvolume:quiet🎬 a grave, almost bitter whisper
The Soup at Half Past NineFood / Culinary seed_060 · excerpt 2 · 8 lines · 3 engines

A tiny congee restaurant on Alder Street runs on habit and the quiet rhythms of its three workers. When the landlord threatens its survival, cook, owner, and prep-cook must find a way forward measured in ladles.

Before this excerpt: After closing, Maya, Ben, and Lena sit down to eat the congee together. Ben, who has been distracted over the ledger all evening, finally says it plainly: the landlord is raising the rent in January — enough that a bad winter could end them.

ControlEdit-TTS
VibeVoice-7B
any2speech
🎬 Scene: Delivering bad news
  1. benThe landlord is raising the rent in January.
    emotion:gravitypace:slowvolume:quiet🎬 Stating a difficult fact simply.
  2. benNot a little.
    emotion:gravitypace:slowvolume:quiet🎬 Grave and understated.
  3. benEnough that if winter is bad, we won't make it through spring.
    emotion:gravitypace:slowvolume:quiet🎬 Stating the consequences plainly.
  4. mayaHow much enough?
    emotion:tensionpace:slowvolume:quiet🎬 Quietly, bracing for the answer.
  5. mayaThat much is almost rude.
    emotion:surprisepace:mediumvolume:quiet🎬 With dry, shocked understatement.
  6. benIt is rude.
    emotion:gravitypace:mediumvolume:normal🎬 Weary agreement.
  7. benBut legal.
    emotion:gravitypace:mediumvolume:normal🎬 Weary and matter-of-fact.
  8. lenaHow long have you known?
    emotion:calmpace:mediumvolume:quiet🎬 Calm and direct, seeking facts.