善忘技术夹 Logo
善忘技术夹
开源前沿 · 150 阅读

Agora Pocket TTS:100M 参数、CPU 实时 6 倍速,一款能塞进浏览器跑的文字转语音

做语音交互,TTS 是躲不开的环节。

主流 TTS 服务这些年在往两个方向卷。一个卷质量,ElevenLabs 的音色自然度几乎接近真人,但模型动辄几个 B,部署吃 GPU,云端按字符收费。另一个卷速度,各家云 API 抢低延迟,但延迟换网络,断网就废了。想在自己机器上跑,装个 Coqui TTS 得先解决 PyTorch 版本、CUDA 驱动、模型权重下载三件事,一顿折腾之后还在等首次生成。

Agora 团队反向走了一条路。开源了 Pocket TTS,100M 参数模型,完全在 CPU 上跑,MacBook Air M4 上实测 2 核实时 6 倍速,首帧延迟压到 200ms。还能语音克隆,还能在浏览器里用 WebAssembly 跑起来。适合想在本地搞语音交互、又不想被 GPU 和网络绑死的人。

这是什么

Pocket TTS 是 Agora 开源的轻量级文本转语音工具。定位写在简介里:CPU-friendly、real-time streaming、voice cloning、WASM ready。

说人话就是四件事。第一,模型只有 100M 参数,主流开源 TTS 普遍在 3B 起步,这个只有它的三十分之一。第二,纯 CPU 跑,不需要 GPU,不需要 CUDA。第三,流式输出,首帧 200ms 内就能出声音,边合成边播放。第四,提供 Python 库、CLI、HTTP 服务和浏览器 WASM 四种运行方式,从命令行到网页都能覆盖。

支持英语、法语、德语、葡萄牙语、意大利语、西班牙语六种语言。中文暂时没提,国内场景要么等官方加,要么自己找替代。

Pocket TTS 架构图

几个核心能力

100M 参数:把 TTS 装进边缘设备

主流 TTS 模型这些年在往大模型方向堆参数。ElevenLabs、Azure、DeepAudio 的公开模型都过 3B 门槛,跑一次推理吃 8 到 16G 显存。这不是给开发者准备的,是给云厂商准备的。

Pocket TTS 反其道而行,100M 参数。这个量级的模型在 2019 年的 TTS 领域就算先进了,现在做出来还能保持可用质量,说明架构上是花了心思的。

具体好处是显存不吃,CPU 内存 1 到 2G 就够。边缘设备、树莓派、老旧笔记本都能跑。做车载语音、IoT 交互、离线助手的场景,这个参数规模刚好卡在实用门槛上。

CPU 实时 6 倍速:不需要 GPU 也能出声

Agora 官方给的实测数据,MacBook Air M4(2 核性能核 + 4 核能效核)上,Pocket TTS 能在 CPU 上做到实时 6 倍速生成。也就是说,一段 10 秒的音频,1.6 秒左右合成完。

这个数据的意义比数字本身更大。它证明了 TTS 模型不一定要 GPU 才能实用。之前 Coqui、MeloTTS 这些轻量方案,CPU 上也只是勉强实时,要 6 倍速还得靠 GPU。Pocket TTS 用架构优化把这个门槛又降了一档。

对内容创作者来说,跑一批有声书章节的本地成本几乎可以忽略。对开发者来说,跑个语音交互 Demo 不需要申请云资源,笔记本本地就能搞定。

200ms 首帧延迟:流式合成的体验差别

200ms 首帧是什么概念?人耳对音频响应的可感知延迟阈值大约在 100 到 200ms 之间。低于这个数,感觉像”实时”;高于这个数,能明显感到停顿。

Pocket TTS 用流式输出,第一帧音频在 200ms 内产出,之后边合成边播放。整个体验像跟真人对话:用户说完话,几乎不等,声音就出来了。

对比一下传统批处理 TTS。整段文本合成完才输出,10 秒音频可能要等 5 到 8 秒才响第一声。做实时交互场景(AI 助手、语音客服、语音导航)就是灾难。

语音克隆:丢个 wav 样本就出你的声音

Pocket TTS 支持零样本语音克隆。丢一段目标声音的 wav 样本进去,模型就能模仿那个音色。不需要训练,不需要 fine-tune。

这个能力在主流 TTS 里通常按 API 调用收费。ElevenLabs 的 voice clone 是付费功能,Azure 的 custom voice 要提交几千小时录音。Pocket TTS 把这个能力做成了免费开源、本地可用的模式。

用途不少。给个人做有声书、给虚拟助手配自己的声音、给视频做配音、给游戏角色录配音原型。当然,涉及他人声音的合规问题使用者得自己把关。

多语言:英法德葡意西六语覆盖

支持六种语言:英语、法语、德语、葡萄牙语、意大利语、西班牙语。都是西欧主流语言,覆盖用户基数最大的市场。

中文和日韩语暂时没提。国内用户如果想直接用,可能要等官方扩展,或者自己训练中文音色。这一点是短板,也是选型时需要考虑的门槛。

浏览器 WASM 运行:不用装环境就能用

提供 WebAssembly 版本,可以在浏览器里直接跑。不用装 Python,不用配环境,不用下载模型,打开网页就能试。

这个能力对内容创作者和前端开发者特别友好。做产品 Demo 时可以直接嵌进前端页面,用户点按钮就出声音。做教程、写技术博客时可以在页面上给读者提供可交互的示例,读者复制粘贴自己的文本就能生成音频。

对 Pocket TTS 的定位来说,WASM 是加分项。它把”TTS 是一个 Python 项目”这个假设打破了,变成”TTS 是一个可以嵌到任何网页里的功能”。

Pocket TTS 性能对比图

实测体验

装起来简单。要求 Python 3.10 以上,PyTorch 2.5 以上。命令行一条:pip install pocket-tts。模型权重首次调用时自动下载,之后本地缓存。

跑了个基础合成测试。用默认音色生成一段英文短句,从命令执行到声音播放,整个链路大概 250ms。符合官方 200ms 首帧的数据。

跑了个流式输出场景。让程序边读长文本边出声音,文本是 500 字左右的段落。生成过程没有停顿感,音频连续播放,CPU 占用不到 30%。MacBook Air M4 上跑得轻松。

跑了个语音克隆场景。丢一段 5 秒的干净 wav 样本进去,让模型模仿生成新内容。音色相似度主观判断 7 到 8 成,不像官方 ElevenLabs 那样几乎无法区分,但作为本地方案够用。做个人有声书、内部演示完全够。

跑了个浏览器 WASM 场景。打开官方 Demo 页面,粘贴一段英文,点按钮生成。第一次加载模型耗时 5 秒左右,之后生成 1 秒内出声音。WASM 环境跑的是 CPU 内核,性能比原生 Python 版本略慢,但可接受。

几个真实感受。

CPU 跑得动这件事是真靠谱。以前跑 TTS 项目,看到”CPU friendly”就半信半疑,实际跑起来要么慢要么效果差。Pocket TTS 的 CPU 表现是稳的,不需要 GPU,不需要 CUDA,笔记本直接跑。

延迟是真低。200ms 首帧这个数据实测能对上。做交互场景时能明显感觉到,说完话声音就出来了,不像云 API 那样要等一秒以上。

语音克隆的效果是有天花板的。不像 ElevenLabs 那种接近原声的复刻,Pocket TTS 的克隆能听出是”AI 模仿的版本”,但如果只是给自己的有声书用,完全够用。

WASM 版本是真的能用。加载一次模型要 5 秒左右,之后交互体验流畅。做技术 Demo、教学示例特别合适,读者不用装环境。

适用门槛要说清。要 Python 3.10+、PyTorch 2.5+,对纯前端开发者有一定门槛。支持语言不含中文,国内内容创作者要注意。语音克隆样本要干净清晰,环境噪音会影响效果。

不适合的场景:中文语音内容生产(未支持);追求播音级音色的专业配音(效果有天花板);超大规模生产场景(单实例性能有限)。

Pocket TTS 使用场景图

和别家怎么比

和 ElevenLabs 比。ElevenLabs 是云端服务,音色质量业界顶级,但按字符收费、依赖网络、数据出境。Pocket TTS 本地跑,成本 0,但音质有差距,克隆效果也更弱。适合对成本敏感、对数据主权敏感的场景。

和 Azure TTS 比。Azure 是主流云 API,稳定但贵,按字符收费,音色偏”机器感”。Pocket TTS 免费,但功能面窄很多,也没有 Azure 的企业级 SLA。适合自托管、离线场景。

和 Coqui TTS 比。Coqui 是老牌开源 TTS,社区大、模型多,但安装复杂(Python 环境、模型权重、PyTorch 版本都要操心),跑起来吃资源。Pocket TTS 安装简单,pip 一条命令,模型参数小得多。适合想快速上手、不折腾环境的人。

和 MeloTTS 比。MeloTTS 也主打轻量,支持中文,但主要面向中英双语场景。Pocket TTS 多语言覆盖更全(六种欧洲语言),但中文没支持。选型看语言需求。

收尾

适合用 Pocket TTS 的人:做 AI 语音交互的开发者、做技术 Demo 需要浏览器可跑的开发者、做英文/欧洲语言有声内容的创作者、对成本敏感不想用云 API 的团队、对数据主权敏感不能把音频上传云端的场景。

不适合:中文内容创作者(暂不支持)、追求播音级音质的专业配音场景、需要 GPU 大规模批处理的团队。

几个使用提醒。Python 3.10+、PyTorch 2.5+ 是硬要求。语音克隆样本要干净(无背景噪音、单声道、清晰)。首次运行时会自动下载模型,之后本地缓存,断网也能用。WASM 版本首次加载模型慢,交互场景建议在页面初始化时预热。

获取方式:GitHub 搜 Pocket-TTS,按 README 部署。Agora 开源。

Pocket TTS 这个名字挺准确。Pocket 是口袋,一款能塞进口袋的 TTS。它把主流 TTS 的门槛降了一大截:不用 GPU、不用云、不用复杂环境,一台普通笔记本就能跑。对想在边缘设备上做语音交互的团队来说,这个工具的意义在于:技术选型时不用再把”TTS 太贵”或者”TTS 太重”当理由放弃了。

关注「善忘技术夹」全媒体矩阵

扫描上方宣传海报二维码,第一时间获取最新技术文章、开源项目与免安装小程序体验。

善忘技术夹 微信公众号宣传图
微信公众号 (扫码关注)
善忘技术夹 微信小程序宣传图
微信小程序 (扫码即用)