Gemini 3.1 Flash TTS 踩坑复盘:
你已经不能再用 2.5 TTS 的老方式调用了
最近在升级的一个音视频配音项目的 TTS 链路时,遇到一个很典型的问题:
原以为不就是把 TTS 模型从 2.5 换成 gemini-3.1-flash-tts-preview。但真正落地后发现,它并不是一次简单的模型名替换,而是一次 TTS 使用方式的变化。
如果还按照以前 2.5 TTS 的方式去调用,可能会遇到调用失败、音频不稳定、等等问题、甚至线上环境偶发 404 等问题。
所以写几个字记录下这次升级中最重要的经验:Gemini 3.1 Flash TTS 更像是一个“带导演的生成系统”,而不只是一个“发音接口”,而我在模型之上还加了个小模型进去,譬如用 GPT-5-CHAT 或者 Gemini-3.5-flash。 一切还是为了成本啊…
一、第一个变化是 TTS 不再只是输入文字
过去使用 TTS,很简单:给模型一段文字,指定一个声音,然后拿回一段音频。
这种方式在 2.5 时算是够用了,无外乎就是稳定朗读。只要不读错、不漏读、音质过关,尤其企业内部就算完成了。
现在的 Gemini 3.1 Flash TTS 的重点已经变了。它不只是把文字念出来,而是希望你告诉它:
你打算让谁来说?这段内容是在什么场景里说?所以发音时应该用什么语气? 哪些内容要慢一点?哪些地方要更有兴趣、更有强调? 哪些内容是参考信息,不能真的读出来?
回答了这一大堆问题后,TTS 完全就变成了配音员,感觉也会好很多。
这就带来一个关键变化:如果我们还用旧方式,只传一段简单文本和音色,那么虽然可能也能出声音,但很难发挥 3.1 的真正能力。
二、升级时,提示词也需要重构
升级 Gemini 3.1 Flash TTS,提示词必须一起升级。老的 TTS 提示词比较简单,大概是告诉模型“请用普通话自然朗读下面内容”。现在这种提示词必须要升级了。
3.1 更适合用“导演”的方式来写提示词。也就是把提示词拆成几个清楚的部分:
首先是声音身份。比如这是一个中文科技解说频道的讲述者。
其次,什么场景下?比如安静、专业的录音棚。
音色要求。比如温暖、自信、有参与感,像一个懂行的朋友在讲解,而不是戏剧化表演。
朗读节奏。遇到什么要读的稍微慢一点,要有自然停顿等等。
最后,不能做的事情。比如把提示词、标签、说明文字、XML 标记也读出来。
这些提示词工程,本质上交互方式发生了极大的改变。以前定义的是“读出来”。现在定义的是“以什么身份、什么场景、什么情绪、什么节奏读出来”。
这会直接影响成品视频的观感。一个平铺直叙的声音,和一个有轻微节奏、有重点、有自然停顿的声音,显然,最终的听感差别很大。
三、要防止模型读不该读的
模型有一个很现实的问题:如果提示词边界写得不清楚,它可能会把不该读的东西也读出来。
比如你在提示词里写:
请用温暖、自信、专业的语气朗读。
如果边界不清晰,模型可能真的把“请用温暖、自信、专业的语气朗读”这句话读进音频里。
所以这次保留了一个非常重要的护栏:正文必须放在
同时还要告诉模型:
不要读标题。 不要读 XML 标签。 不要加入笑声、叹气、呼吸声、音乐、音效、开场白、免责声明或额外文字。
这是小细节,也是生产系统必须有的边界意识。对于视频配音来说,一旦模型把提示词读进音频,后面的字幕、时间轴和成片都会被污染。
四、3.1 的价值
Gemini 3.1 Flash TTS 一个很重要的新能力,是可以使用音频标签。
比如在文本中加入类似这样的标签:
[好奇] [缓慢] [emphatic]
标签不是让模型读出来的文字,而是告诉模型这一段应该用什么状态来表达。如果从产品角度来看,非常有价值。因为科技解说、播客、知识视频最怕的问题就是声音太平。
内容本身可能很精彩,但如果声音像说明书一样一路念完,用户很容易听累。当然,加一大堆标签进去显然也不科学。
如果每句话都加标签,音频会变得很乱。一会儿兴奋,一会儿严肃,显然只适合话剧。
声音原则很简单:表现力要有,但不能失控。先要像同一个人在连续讲述,然后才谈情绪变化。
标签只在合成音频时临时注入,不写进字幕,不写进原始中文朗读文本。
五、环境配置可能存在 location 坑
遇到一个繁琐的问题,是调用位置。
仓库里之前已经遇到过 Gemini 3.x 图像模型在 Vertex 区域端点 404 的情况,最后必须强制走 global。TTS 也是同代 3.x 模型,所以不能默认它在所有区域配置下都稳定可用。
感觉这个环境配置的错误是因为 preview 模型,这里记录下后续再确认。
六、长音频仍然要切块,不能一口气合成到底
Gemini 也提醒过,长输出容易出现漂移。比如几分钟以上的长音频,模型可能在节奏、稳定性、内容一致性上变差。
video_trans 现在按 group 合成,每组大约 200 字,这个方向是对的。
从产品角度看,切块有好处:失败成本低。缓存更有效时间轴更稳定。但切块也带来一个问题:组与组之间的声音风格可能不一致。
所以各种导演、音色、标签尽量要固定和克制。否则每一段内容都像不同状态的人在说话,听感会炸裂。
总结下关键的变化
第一,模型升级后提示词必须升级,最好是加前置模型对全篇文章分析,生成对应的内容。
第二,标签临时注入,不要污染内容。
第三,长音频仍然要切块,要复用同一套风格。
第四,支持双人播客。
第五,Batch API 可以优化成本
一句话概括:Gemini 3.1 Flash TTS 的升级,不是换一个更会读的模型,而是把 TTS 从朗读工具升级更具可定义和编辑的配音系统了。
讨论
登录后可评论、点赞、引用回复。