Silero TTS:真正只需一行代码的文本转语音
Silero 团队为这个项目写下的宣传语是“简单得令人难为情的预训练文本转语音模型”,这并不夸张——只需调用一次 torch.hub.load 就能得到可用的声音,不需要训练流水线,不需要多文件配置,也不需要另外接入声码器。Silero TTS 自 2020 年以来一直低调地保持活跃开发;它把极简配置与真正强大的俄语、其他独联体国家语言及多种印度语言覆盖结合起来,因此在轻量级预训练 TTS 模型中独具特色。
Silero TTS 是什么?
Silero TTS 是一组采用 MIT 许可证的开源预训练文本转语音模型。自 2020 年 9 月前后首次发布以来,该项目一直以 snakers4/silero-models 的名称在 GitHub 上维护,并持续更新至 V3、V4,以及 2025 年 10 月发布的当前 V5 代际。这些模型采用端到端架构,可在 CPU 或 GPU 上运行,除 PyTorch 本身外几乎不依赖其他组件——这一有意为之的设计让模型文件和部署占用都保持小巧。
Silero TTS 的功能优势
- 真正只需一行代码即可使用,可直接通过 PyTorch Hub 或
sileropip 软件包加载,无需单独的配置步骤。 - 依赖极少,独立使用只需要 PyTorch 1.12+ 和 Python 标准库;只有特定可选功能才需要
torchaudio和omegaconf。 - 可在 CPU 与 GPU 之间互换运行,只需更改目标设备,同一条代码路径即可在两者上工作。
- 便携的独立模型打包,通过 PyTorch 的
torch.package.PackageImporter,模型可以作为单个.pt文件交付,部署时无需管理外部依赖树。 - 内置 SSML 支持,V3、V4 和 V5 各代均可通过标记直接控制停顿、强调和韵律。
- 真正强大的俄语、独联体国家语言和印度语言覆盖——这是大多数轻量级开源 TTS 项目不会优先投入的语言领域。
- 连续更新五年的记录,其维护历史明显比许多较新的开源 TTS 版本更长,也更稳定。
语言覆盖:Silero 真正出彩的地方
Silero 没有追求尽可能多的语言数量,而是在一个特定区域建立了格外深入的覆盖:俄语是其旗舰语言,同时还支持乌克兰语、哈萨克语、乌兹别克语、鞑靼语、亚美尼亚语、阿塞拜疆语、白俄罗斯语、格鲁吉亚语、吉尔吉斯语和塔吉克语——对独立国家联合体语言的覆盖确实相当全面,很少有竞争性的开源项目能以同等用心做到这一点。另外,Silero 还支持多种印度语言,包括印地语、泰米尔语和孟加拉语,不过这些语言通常需要输入拉丁字母转写的文本,而不是直接接受本土文字。如果你的项目需要其中任何一种特定语言,Silero 在这些语言上的深度就是一项实质性的差异优势,尤其是相较于那些主要围绕西欧和东亚语言构建、覆盖更广但更浅的多语言模型。
专为提升俄语发音准确度打造的工具
除了核心 TTS 模型,项目还包含一个名为 silero-stress 的配套扩展,专门处理俄语文本中两个出了名的棘手问题:自动标注重音和同形异音词消歧(根据含义,正确读出拼写相同但发音不同的单词)。它覆盖约 400 万个单词,据报告在同形异音词消歧这一具体任务上的 F1 分数为 0.85,并且在单个 CPU 线程上以每词约 0.5 毫秒的速度处理文本——速度足以让它在合成前立即作为轻量级预处理步骤运行,而不必成为单独的离线环节。这类狭窄且针对特定语言的工程工作,是广泛型多语言模型很少愿意投入的,却能直接提升俄语文本输出的自然度。
Silero TTS 入门
- 通过 pip 安装,这是最简单的路径。 运行
pip install silero即可获得软件包;模型本身会在你第一次请求时通过 pip 或 PyTorch Hub 按需下载,并可缓存在本地以避免重复下载。 - 通过一次
torch.hub.load调用加载模型。 文档给出的模式是torch.hub.load(repo_or_dir='snakers4/silero-models', model='silero_tts', language='ru', speaker='v5_ru')——将language和speaker换成你的目标语言及所需模型版本即可。 - 使用
apply_tts生成音频。 加载完成后,model.apply_tts(text=your_text, speaker=speaker_name, sample_rate=sample_rate)会直接返回合成音频;根据你的质量需求,支持的采样率为 8000、24000 和 48000 Hz。 - 在仓库的
models.yml中查看当前的声音和语言列表。 由于新版本和新说话人会不断加入,这个文件才是权威且最新的来源,不应依赖可能引用了已弃用模型 ID 的旧教程。 - 使用 SSML 标记控制节奏和强调。 V3、V4 和 V5 都能直接在输入文本中支持它——在自己编写标记前,项目的 Colab 示例是查看具体标签语法实际效果的最快方式。
- 为受限部署环境将模型打包为独立的
.pt文件。 使用torch.package.PackageImporter,你可以打包模型,使其运行时只需要 PyTorch 和标准库,而不必把整个仓库的依赖树带入生产环境。
获得更好结果的技巧
- 专门为俄语内容使用 silero-stress 扩展。 重音位置和同形异音歧义会显著影响俄语发音的自然度,因此在合成前运行这个轻量级预处理步骤,值得付出其极小的额外延迟。
- 检查目标语言是否需要拉丁字母转写输入。 尤其是对于受支持的印度语言,在认定本土文字文本可以直接工作之前,先确认所需的输入格式。
- 根据实际输出目的选择采样率。 8000 Hz 足以应对带宽受限或嵌入式场景;如果输出要进入会严格审视质量的生产音频流水线,48000 Hz 是更好的选择。
- 不要期待声音克隆。 Silero 使用的是每种语言对应的固定预训练音色列表,而不是根据参考片段进行零样本克隆——如果你的目标是复刻某个特定真人声音,专门的克隆模型才是合适的工具。
- 如果你使用的是较旧的集成,请定期重新查看
models.yml。 鉴于项目持续更新至 V5,较新加入的语言或声音可能不会出现在针对早期版本编写的文档或教程中。
Silero TTS 与其他轻量级预训练模型的比较
| Silero TTS | Piper | Kokoro-82M | |
|---|---|---|---|
| 配置复杂度 | 通过 PyTorch Hub 或 pip 一行代码完成 | pip 安装 + 单独下载模型/配置 | pip 安装 + 下载模型 |
| 核心语言优势 | 俄语、独联体国家语言及部分印度语言 | 35+ 种语言,广泛的通用覆盖 | 8 种语言,以英语为主 |
| 仅用 CPU 运行 | 可以,也可与 GPU 互换 | 可以,专为此设计 | 可以,原生支持 |
| 声音克隆 | 不支持,固定音色列表 | 不支持,固定音色列表 | 不支持,固定音色列表 |
| SSML 支持 | 支持(V3/V4/V5) | 并非核心功能 | 并非核心功能 |
| 维护历史 | 自 2020 年起活跃维护 | 原项目于 2025 年归档,分支仍活跃 | 自 2025 年发布以来活跃维护 |
| 许可证 | MIT | MIT(原项目)/ GPL-3.0(当前分支) | Apache 2.0 |
Silero 的特定定位在于,它真正深入覆盖了俄语及更广泛的独联体地区,而大多数其他轻量级开源 TTS 项目至多只把这一语言区域当作次要补充;同时,它的配置流程也很难比单次函数调用更简单。
常见问题
Silero TTS 真的只需一行代码就能使用吗?
是的——一次 torch.hub.load 调用(或通过 pip 使用等效的 from silero import silero_tts)即可加载可用模型,无需单独的训练流水线或多步骤配置。
Silero TTS 最擅长支持哪些语言?
俄语是其主要重点,同时还深入覆盖其他独联体国家语言——乌克兰语、哈萨克语、乌兹别克语、鞑靼语、亚美尼亚语、阿塞拜疆语、白俄罗斯语、格鲁吉亚语、吉尔吉斯语和塔吉克语——并支持印地语、泰米尔语和孟加拉语等多种印度语言;这些印度语言通常需要拉丁字母转写输入。
Silero TTS 支持声音克隆吗?
不支持。它使用每种语言和版本对应的一组固定预训练音色,而不是根据参考音频片段进行零样本克隆。
Silero TTS 可以免费用于商业用途吗?
可以。它采用 MIT 许可证,允许商业使用,无需支付版税或签订单独的许可协议。
silero-stress 是什么?我需要它吗?
它是一个专为俄语文本打造的配套工具,在合成前处理自动重音标注和同形异音词消歧。它并非必需,但如果你的项目重视俄语内容的发音准确度,建议使用,因为俄语重音位置会显著影响输出听起来有多自然。
在浏览器中把文字转换为语音
如果你希望完成相近的“文字 → 单人语音”流程,可以使用 Echora 的文字转语音。输入最多 5,000 个字符,选择内置音色或已保存的自定义音色,按需添加支持的表达标签并调整语音稳定度,然后试听结果并下载生成的 MP3。