能读准电话号码的语音模型如何塞进 40 MB?解读 Underdog Woof
Underdog 的 Woof 把两种英语声音装进 40.6 MB,在单个 CPU 线程上说话。我们介绍它为何能读准数字、如何构建与测评,以及如何试用。
语音助手和电话智能体要读的大多不是普通句子,而是预约时间、订单代码、药物剂量和电话号码,小型语音模型往往在这里出错。Underdog 团队(Conway)发布的 Woof 连同两种声音只有 40.6 MB,只用 numpy 就能在笔记本电脑的单个 CPU 线程上说话。单声音版本于 10 月 26 日发布并可 在浏览器中试用,双声音版本于 11 月 5 日上传到 Hugging Face。模型页面显示,双声音 Woof 在难句测试中的词错误率为 1.42%,41.5 GB 的 Fish Audio Drama 3 为 1.89%。
为什么读得准
模型之前有一个基于规则的文本规范化器,把数字、日期、时间、金额、代码和符号改写成人们的说法,例如把电话号码按组逐位读出、把 "14/03" 读成三月十四日。长文本按句切分,每段生成后检查,过长或中间有一秒以上静音会重新生成,最多三次。
构建方式
Woof 由 2295 万参数的语音模型和 1530 万参数的音频解码器组成,共 3824 万参数,解码器改编自 Kyutai 的开放编解码器 Mimi,输出 24 kHz 单声道音频。训练数据包括 LibriTTS-R 和 Emilia-YODAS(均为 CC BY 4.0),团队未详细公开训练步骤。音频默认经 16 步逐步生成,单声音模型 16 步为实时的 18 倍、8 步 24 倍、4 步 29 倍。
测评方式与试用
主要测试为 Gradium TTS Hard Cases 的 500 个充满数字和代码的句子,由 qwen3.8-omni-flash 转写、gemma-4-31b-it 计数错误,所有模型由团队以同样方式运行评分。Kokoro 82M 为 5.17%,Qwen3-TTS 1.7B 为 11.99%。在 Apple M5 Max 单线程上,单声音模型 0.73 秒生成 13.2 秒语音。目前仅支持英语。许可允许非商业使用(需署名),商业使用需另购许可,且不得用其音频训练其他语音模型。
pip install numpy
hf download ConwayResearch/Underdog-Woof --local-dir underdog-woof
cd underdog-woof
python -m underdog_woof "Your order ships on March 3rd. Call 415-555-0199." -o hello.wav
python -m underdog_woof "Your order ships on March 3rd. Call 415-555-0199." --voice mira -o mira.wav