NVAlign: Direct-Gradient Optimization for Non-Verbal Control in Continuous Autoregressive Flow Matching Text-to-Speech

Qiaolin Wang1, Pedro Sandoval-Segura1, Anunaya Joshi1, Edvardas Jurkonis1, Jake Downie1,†

1Bland AI, USA

One example per tag from NVV-SuperBench (Mandarin and English) and the Mandarin human listening set. Each text is synthesized by SFT, Flow-GRPO and NVAlign, with VoxCPM2 and dots.tts in Mandarin and a production TTS model in English. Brackets mark where the vocalization is requested.

SFTFlow-GRPONVAlign (ours)
Language

Reference voices

TranscriptReference audioSamples cloned from it
Mandarin等他终于与自己结拜兄弟,并且信誓旦旦的帮助自己报仇时,自己已经是对他忠心耿耿,再无丝毫怀疑。All VoxCPM2 and dots.tts samples
EnglishHi! Look, I know I'm jumping into your day out of the blue, but I promise this is going to be the most valuable 60 seconds that you'll spend all week.All Production TTS samples

ahem轻咳示意

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2他说的那家店我怎么找不着, [ahem] 是不是已经关门了, [question-yi] ? [yawn] 我在那条街上来回走了三趟。
Human listening setdots.tts

Back to top ↑

applaud鼓掌

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[surprise-yo] ,外面那棵树居然开花了, [applaud] 前几天还光秃秃的, [hiss] 春天来得真快。
Human listening setdots.tts

Back to top ↑

breath呼吸声

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2我终于到了, [breath] 累死我了。你等很久了吗?
NVV-SuperBenchdots.tts
Human listening setVoxCPM2他们第二趟收运的时候来收你的可回收垃圾,就在收生活垃圾之前。 [breath] 很好认。
Human listening setdots.tts
NVV-SuperBenchProduction TTSYou promised me. [breath] After everything we talked about, you... you still went and did it.

Back to top ↑

burps

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchProduction TTSWow, this seltzer is really hitting the spot. [burps] Whoa, excuse me. The bubbles are fighting back.

Back to top ↑

chuckle轻笑

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2他说他能一个月减肥二十斤, [chuckle] 我还说我能上天呢。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2他说的那家店我怎么找不着, [chuckle] 是不是已经关门了, [question-oh] ? [cough] 我在那条街上来回走了三趟。
Human listening setdots.tts
NVV-SuperBenchProduction TTSNo, no, your presentation was great. It was just... when you leaned on the podium for emphasis, and the whole front panel just... [chuckles] fell off. I had to bite my cheek so hard.

Back to top ↑

clap拍手

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[question-ei] ?我放在桌上的那杯茶是谁喝了, [clap] 我才离开一小会儿, [pause] 回来就只剩个空杯子。
Human listening setdots.tts

Back to top ↑

confirmation-en肯定“嗯”(降调)

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[confirmation-en] ,就按你说的,明天早上我先过去把门打开, [cry] 你晚一点到也没关系。
Human listening setdots.tts

Back to top ↑

cough咳嗽

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2我今天感觉不太舒服 [cough] 可能有点感冒了,明天我请个假。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2[surprise-oh] ,外面的雪居然下得这么厚了, [cough] 我们早上出门的时候路上还是干的。
Human listening setdots.tts
NVV-SuperBenchProduction TTSAnd I suppose they also [coughs] 'finished' your part of the project? The part you swore was almost done yesterday?

Back to top ↑

cry哭声

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2我不要! [cry] 你把他还给我!你把他还给我啊!
NVV-SuperBenchdots.tts
Human listening setVoxCPM2我把你的预约改到后面那个时段了,嗯,就是午饭之后那个。 [cry] 这样你星期四的事就安排好了。
Human listening setdots.tts

Back to top ↑

dissatisfaction-hnn不满“哼”

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[dissatisfaction-hnn] !我提醒过他好几回了, [sigh] 他每次都说记住了,结果还是老样子。
Human listening setdots.tts

Back to top ↑

exhale呼气

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2[exhale] 总算跑完了,累死我了。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2[question-oh] ?这箱子怎么这么沉, [exhale] 你往里头装了什么, [lipsmack] 我一个人根本搬不动。
Human listening setdots.tts
NVV-SuperBenchProduction TTS[exhales] Okay. Okay, just... give me a second to think. I know we can figure this out.

Back to top ↑

gasp倒吸气(吃惊)

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2快… [gasp] 快跑!他们…他们追上来了!
NVV-SuperBenchdots.tts
Human listening setVoxCPM2[question-ah] ?门口那双鞋是谁的, [gasp] 我记得早上出门的时候还没有。
Human listening setdots.tts
NVV-SuperBenchProduction TTSYou got me... a puppy? [gasps] Oh my gosh, I can't believe it. He's perfect.

Back to top ↑

groan呻吟(难受)

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2[groan] 我的腿……好像扭到了,动不了了。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2他把东西往我这儿一放就走了, [groan] 连句话都不留, [dissatisfaction-hnn] ,以后这种事我可不管了。
Human listening setdots.tts
NVV-SuperBenchProduction TTS[groans] I've been studying for six hours straight. My brain is turning to mush.

Back to top ↑

grunt哼声(用力)

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2再使点劲儿…… [grunt] 这罐头怎么拧不开啊?
NVV-SuperBenchdots.tts
Human listening setVoxCPM2你想知道我敲门的时候你邻居说了什么吗? [gasp] 他把我当成来修你家水槽的人了。 [grunt] 我说不是,我是来看你的车的,真的。结果他当着我的面就把门关上了。
Human listening setdots.tts
NVV-SuperBenchProduction TTSJust a little... [grunts] higher... Come on!

Back to top ↑

hiccups

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchProduction TTSOkay, everyone quiet down, the recording light is on. We are live in three, two, [hiccups] one... oh, for goodness sake.

Back to top ↑

hiss嘶气声

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2[hiss] 你别碰,这伤口碰到水疼死了。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2你要问我他住在几楼, [uhm] ,我得想一想, [hiss] 好像是靠里边那栋的最顶上。
Human listening setdots.tts
NVV-SuperBenchProduction TTS[hisses] Get your filthy hands off of me. Now.

Back to top ↑

hmm

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchProduction TTSWell, the battery's got a full charge, and the spark plugs are new. [hmm] I don't think this is standard wiring, though. Looks like a custom job.

Back to top ↑

hum哼唱

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2[hum] 今年的花开得真好。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2你昨天晚上不是说要早点睡的吗, [question-yi] ? [hum] 怎么现在看着比我还困, [snore] 又熬夜了吧。
Human listening setdots.tts
NVV-SuperBenchProduction TTSOkay, that's the last of them. [humming] All nice and tidy. Now, where did I put that bookmark...

Back to top ↑

inhale吸气

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2[inhale] 好吧,我明白了。让我冷静一下,我们再谈。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2稍等我一下,不好意思让你在电话里等着。 [inhale] 你的账户我终于打开了,就在我面前。 [sniff] 你的付款其实是成功的,只是入账晚了。
Human listening setdots.tts
NVV-SuperBenchProduction TTSOh, wow. [inhales] That smell... Is that your grandmother's apple pie recipe? It smells just like I remember.

Back to top ↑

laugh笑声

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2哎呀,你别说了, [laugh] 我一想起来就想笑。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2那天的事情我记得不太清了, [laugh] 大概是先去了他家, [uhm] ,然后才一起去的车站。
Human listening setdots.tts
NVV-SuperBenchProduction TTSI was trying so hard to be sophisticated, right? So I ordered the escargots. The first one I tried to grab with the tongs [laughs] shot across the table and landed right in the other guy's water glass.

Back to top ↑

lipsmack咂嘴(唇声)

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2[lipsmack] 嗯,这肉炖的,真烂糊。太香了。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2不好意思,我这感冒拖了一整个星期了,你都听得出来。 [lipsmack]
Human listening setdots.tts
NVV-SuperBenchProduction TTSRight. [smacks lips] Well, I'm sure it will all come together in the end. Eventually.

Back to top ↑

moan呻吟(低吟)

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2[moan] 就是这里…按得太舒服了。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2[question-ei] ?这箱子怎么这么沉, [breath] 你往里头装了什么, [moan] 我一个人根本搬不动。
Human listening setdots.tts

Back to top ↑

mumbling

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchProduction TTSFine, I'll get it. [mumbling] Always me, never anyone else.

Back to top ↑

pant喘气

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2快走! [pant] 他们…他们马上就要追上来了!
NVV-SuperBenchdots.tts
Human listening setVoxCPM2[question-ah] ?我放在桌上的那杯茶是谁喝了, [gasp] 我才离开一小会儿, [pant] 回来就只剩个空杯子。
Human listening setdots.tts

Back to top ↑

pause停顿

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2今天下午我终于打开了你放在我阁楼里的那个盒子。 [laugh] 最上面就放着你爷爷发誓说弄丢了的那块手表。 [pause] 我先帮你收在安全的地方,等你下次来再拿。
Human listening setdots.tts

Back to top ↑

question-ah疑问“啊?”

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[question-ah] ?门口那双鞋是谁的, [gasp] 我记得早上出门的时候还没有。
Human listening setdots.tts

Back to top ↑

question-ei疑问“诶?”

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2我把窗户关上以后屋里就安静多了, [breath] 你刚才有没有听见外面那阵响动, [question-ei] ?
Human listening setdots.tts

Back to top ↑

question-en疑问“嗯?”(升调)

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[question-en] ?你手里拿的是什么,我怎么看着这么眼熟, [sniff] 是不是上回落在我这儿的那个。
Human listening setdots.tts

Back to top ↑

question-oh疑问“哦?”(升调)

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2你昨天晚上不是说要早点睡的吗, [question-oh] ? [groan] 怎么现在看着比我还困, [throat clearing] 又熬夜了吧。
Human listening setdots.tts

Back to top ↑

question-yi疑问“咦?”

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[question-yi] ?我放在桌上的那杯茶是谁喝了, [chuckle] 我才离开一小会儿, [laugh] 回来就只剩个空杯子。
Human listening setdots.tts

Back to top ↑

shh嘘(安静)

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2我在楼下等了好一会儿, [cry] 你是不是从后门出去了, [question-en] ? [shh] 我还以为你把我忘在这儿了。
Human listening setdots.tts

Back to top ↑

sigh叹气

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2[sigh] 总算是弄完了。我真是累得一根手指头都不想动了。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2然后她打开你的盒子,你奶奶的戒指就在里面。 [sigh] 过了这么多年。
Human listening setdots.tts
NVV-SuperBenchProduction TTS[sighs] I've been staring at this screen all day. I think I'm just going to call it.

Back to top ↑

sneeze打喷嚏

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2你的猫好可爱啊,就是…… [sneeze] 我好像对猫毛有点过敏……不好意思。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2好,你的投诉我现在全都摆在面前了。 [sigh] 不好意思,你得担待一下,今天上午太长了。 [sneeze] 好,我给你讲讲他们到底跟我们说了什么。
Human listening setdots.tts

Back to top ↑

sniff吸鼻子

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2就凭他那两下子还想赢我, [sniff] 真是可笑。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2哦,别告诉我他们又把你的表格退回来了。 [sniff]
Human listening setdots.tts
NVV-SuperBenchProduction TTSOkay, okay, I'm sorry. I shouldn't have said that. It's just... [sniffles] this whole situation is a mess, and I'm trying to hold it together.

Back to top ↑

snore打呼

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2跟你说个正事儿呢...喂? [snore] ...真是的。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2他叫什么名字来着, [sneeze] 我刚才还想起来了, [uhm] ,怎么一转眼又忘了, [snore] 年纪大了记性真不行。
Human listening setdots.tts

Back to top ↑

surprise-ah惊讶“啊!”

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[surprise-ah] !你怎么把头发剪得这么短, [lipsmack] 我差点没认出来是你。
Human listening setdots.tts

Back to top ↑

surprise-oh惊讶“哦!”

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[surprise-oh] ,外面的雪居然下得这么厚了, [cough] 我们早上出门的时候路上还是干的。
Human listening setdots.tts

Back to top ↑

surprise-wa惊叹“哇!”

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2我数了数桌上的碗, [throat clearing] 居然一个都没少, [surprise-wa] ,他还真把每一个都带回来了。
Human listening setdots.tts

Back to top ↑

surprise-yo惊讶“哟/唷!”

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2[surprise-yo] !你什么时候到的, [cough] 我一点动静都没听见, [hum] 快进来坐。
Human listening setdots.tts

Back to top ↑

throat clearing清嗓子

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2[throat clearing] 那个,我有件事想跟大家坦白。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2不好意思,你正赶上我今天早上不太好过。 [groan] 我在抽屉里找到了你奶奶的信。 [throat clearing] 她在信的最上面写了你的名字。好了,给我一点时间,我把你的档案调出来。
Human listening setdots.tts
NVV-SuperBenchProduction TTS[clears throat] Excuse me, sir? I think you might have dropped this. It's a... well, it appears to be a photograph.

Back to top ↑

uhm犹豫“呃/嗯……”(拖长平调)

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2你要问我他住在几楼, [uhm] ,我得想一想, [hiss] 好像是靠里边那栋的最顶上。
Human listening setdots.tts

Back to top ↑

whistle吹口哨

TextSFTFlow-GRPONVAlign (ours)
Human listening setVoxCPM2他把那锅汤端上来的时候, [sigh] 我闻着就觉得不一样, [surprise-oh] ,比饭馆里做的还香, [whistle] 你什么时候学的。
Human listening setdots.tts

Back to top ↑

yawn打哈欠

TextSFTFlow-GRPONVAlign (ours)
NVV-SuperBenchVoxCPM2不行了不行了, [yawn] 我得去睡了,这都几点了,明天还要早起呢。
NVV-SuperBenchdots.tts
Human listening setVoxCPM2你绝对想不到他们最后在哪儿找到你的包。 [lipsmack] 它一直都在失物招领处。 [yawn] 你为了丢包闹了那么大动静,说真的。
Human listening setdots.tts

Back to top ↑