一切从一个词开始:ขำ(好笑)。
我们做了个叫 StudyThai 的泰语学习 App,要给这个词配个发音。听起来是五分钟的活——调个 TTS(文字转语音)接口就行。
结果这五分钟的活,让我们一个多月里试遍了十几个语音合成服务:阿里云、字节豆包、MiniMax、微软、谷歌、开源大模型、泰国本土厂商……几乎全军覆没。
这是一篇踩坑实录。如果你也在做小语种、多语言产品,或者只是好奇"AI 语音合成到底能不能用",这篇也许能帮你少走点弯路。
为什么这么一件小事,会这么难
泰语是声调语言。同一个音,五个声调是五个意思。"มา"是"来","ม้า"是"马",差的只是一个声调。对学习 App 来说,发音读错声调,等于教错。这对 TTS 是地狱难度:它不光要会读泰语,还得把声调读准。
再加一个约束:我们要做国内版,服务器和用户都在国内,TTS 必须国内能访问、延迟低。
于是需求变成一句话:找一个「国内可达 + 泰语声调正确 + 音质能听」的语音合成。 不过分吧?但这三个条件凑齐,难到超乎想象。
第一组:国内的,泰语都不行
阿里云。 先接了 Sambert,能读泰语、声调也对,但音质闷得像隔了堵墙——它的码率被锁死在很低的水平,救不回来。换更新的 CosyVoice,更离谱:它根本没有泰语音色,我们等于用中文的嗓子在硬读泰文,一耳朵就被听出来。
字节豆包、MiniMax。 这俩是当下最火的国产大模型 TTS,泰语却是边角能力,声调一塌糊涂,用户原话是"声音很奇怪"。
国内能打的几家全过不了关。这其实有个规律:国产大模型 TTS 系统性地缺东南亚声调语(泰语、越南语),它们主攻中英日韩,泰语是顺带的。
第二组:开源的,声调发不上去
不死心,想自己部署开源模型:VoxCPM、OmniVoice,都号称支持泰语。
这里踩到全程最反直觉的坑:论文里泰语识别准确率很漂亮,我们一度以为捡到宝。但实测发现——那个"准确率"指标对声调是瞎的。识别模型会自动把读错的声调"脑补"成对的,所以分数好看、声调实际全错。我们是拿声学频率(F0)一条条画出声调曲线,才戳穿这层假象:泰语的"升调",这些开源模型系统性地发不上去,怎么调参都救不回来。
第三组:国外专业的,好,但在国外
微软 Azure、谷歌的 TTS,常用词和句子读得确实不错,一度让我们以为"就差一个国内可达"。
但多测几轮就露馅了:它们连泰语字母表的拼读都读错——就是辅音字母的标准读法(类似我们小时候背的"a 啊、b 玻"那种字母表),这种偏门、却是泰语教学刚需的场景,Azure、谷歌照样读错音。专业大厂的泰语,也不是没有死角。
再加上它们在国外:国内版用不了、跨境延迟高。两个问题叠一块——发音本身有短板,可达性又过不了关——所以这两家也早早出局,不是"只差临门一脚"那么简单。
第四组:泰国本土的,最地道,却用不了
那找泰国本土厂商呢?他们的泰语肯定最正宗。我们测了 Botnoi(泰国 No.1 的 AI 语音)和 iApp(泰国本土另一家 TTS)。
发音是真好——Botnoi 地道到我们干脆把它当成了"标准答案":后面每测一家新服务,都拿 Botnoi 一句一句 A/B 对比,判断谁读得对。
但当裁判可以,当选手不行,问题一个接一个:
贵,而且贵得很具体。Botnoi 按积分计费:6 美元买 12500 积分,一个单词平均要烧掉 32 积分**——折下来约合 1 毛多人民币一个词。单看一个词不起眼可我们要配的,光词条就十万以上,全量配一遍就得上千美元;这还没算实时的 AI 老师对话、阅读模块里那些长句例句——句子比单词更费积分,加进来就是个无底洞。这笔账,小团队扛不住。
稳定性不够。调用时不时抽风,响应慢、偶尔直接失败——放进生产环境给用户用,心里没底。
还在泰国。 服务器在境外,国内用户访问延迟高。
最讽刺的是:发音最标准的 Botnoi,最后只能当我们的"陪练裁判",上不了场。
这事不难,但是真的累
讲到这,你可能好奇:这十几家,我们到底怎么判断谁行谁不行的?
说出来你可能不信——全靠耳朵,一条一条听。
接每一个 TTS,技术上就是调个 API,半天搞定,不难。难的是判断"它到底读对没有"。我们给每家准备了同一套"考卷":
5 个声调的最小对立词(同一个音节,只换声调,逼出它的声调能力) 长元音 vs 短元音的对照 各种特殊韵尾(就是开头那个 ขำ 栽倒的地方) 最生僻的几个辅音、字母表拼读 从我们一千多个课程词里抽的真实样本 再到整句、长句
光泰语辅音范例词就 42 个,每个还有"字母名 + 单词"两种读法,一家就是 84 条;十几家叠加,加上各种专项测试集,前后生成了上千条音频。
然后呢?没有任何工具能自动告诉你"声调对不对"(前面说了,识别准确率是瞎的)。只能戴上耳机,一条一条放,拿泰国 Botnoi 当标准答案,A/B 反复对比,把"这个升调没上去""这个尾音 m 丢了"一条条记下来。
这活不难,但真的累——它考的不是技术,是耐心:你得穷举所有情况(声调、长短、生僻、连读),再用自己的耳朵当尺子,一遍遍量。
一笔绕不开的账:性价比
试到这,还有个一直压在心里的问题:钱。
理论上,开源自托管最省——模型免费。但真要落地,得自己养 GPU:全量预生成几万个词要十几个小时的高端显卡,日常实时合成还得有机器常驻。一张 4090 级的卡或等价云 GPU,固定成本加运维,一个月不是小数。
商业 API 按量付费则相反:用多少付多少,不养机器。哪个划算?关键看真实调用量。我们扒了埋点,结果挺意外:
用户实际听到的发音,绝大部分都命中了缓存(浏览器、CDN、服务端三层),真正需要远程合成的,只占其中很小一部分。
这个发现直接改写了答案:当真实合成量这么低时,养一张 GPU 是巨大的浪费(机器大部分时间空转),按量付费才是最优解。开源"免费",但对小量需求反而更贵这是很多人算反的一笔账
转机,和一个差点被冤枉的音色
转机来自一句"要不试试讯飞?"
说实话本来没抱希望——印象里科大讯飞是做中文的。结果一测:行了。 声调、生僻字、整句,基本都对,接近 Botnoi(我们那位泰国"标准答案")的水平。而且它是国内厂商,国内可达、延迟低,免费额度还足够覆盖每天那两百次真实合成——日常成本几乎为零。
四个条件——国内可达、声调正确、音质够、成本低——它第一次全凑齐了。
但就在要拍板的那一刻,最初那个词ขำ,讯飞读成了"kao"——尾音的 m 又丢了。我们差点又把它划掉。
抱着死马当活马医的心态,做了最后一件事:换音色。同一个讯飞,从默认音色换成一个叫 Suparut 的"超拟人"音色。
ขำ,对了。
那一刻才明白:判断一个 TTS 行不行,不能只听它的默认音色。同一个服务,换个音色,发音对错可以天差地别。讯飞差点就被我们冤枉。
一个多月,换来几条经验
"这家不行"之前,先把它的音色都试一遍。 我们最接近放弃的那次,只差换个音色。 别信 AI 语音的"识别准确率"。 声调语言里那个数字会骗人;要听、要做声学分析、要找个"标准答案"做对比。 算性价比看真实调用量,不是单价。 缓存做好了,按量付费几乎零成本;自己养 GPU 反而亏。 完美的方案通常不存在。技术选型大多是在一堆缺陷里挑最不坏的。
写在最后
对 StudyThai 来说,发音是命根子。App 里每个单词、每个字母、每句例句都要朗读,声调错一个,用户就跟着学错一个。这也是我们愿意为"一个词读得对不对"死磕一个多月的原因。
一个预告:7 月,来当我们的耳朵
说了这么多踩坑,得交个底——这套新发音还没正式上线。
我们正在把讯飞 + Suparut 这套方案接进 StudyThai(目前还没测试过他的国际版),预计7 月推出 beta 版,先开放给一批用户测试。
P.S.要是有讯飞的同学看到这个文章,麻烦看下这个吐槽:你们没有按量付费的套餐啊——要么用免费额度,要么一次性买一大包。我们这种真实合成量不大的小团队,买大包用不完,守着免费额度又怕哪天不够。
所以……要是你刷到这篇:我们义务帮你测评了十几个竞品、最后选了你,这波,送点额度不过分吧?😅
—— StudyThai 团队,记于又一次技术选型之后
夜雨聆风