sanoTTS是一个极小的神经网络语音合成(TTS)模型家族
sanoTTS是一个极小的神经网络语音合成(TTS)模型家族,参数规模从29万到230万不等,最大的特点是可以运行在3美元的ESP32-S3芯片或浏览器中。
部署方式非常灵活,主要取决于你的目标平台和使用场景:
🐍 Python环境部署(最通用)
这是最快捷的体验方式,适合在电脑上通过命令行或Python脚本使用。
1. 安装Python包
1 | pip install sanotts |
2. 命令行快速使用
安装后,可以通过 sanotts 命令直接合成语音。语音模型会在首次使用时自动从Hugging Face下载到 ~/.cache/sanotts/ 目录。
1 | # 基本用法,使用默认的amy声音 |
3. 在Python代码中调用
1 | import sanotts |
可用语音列表(参数从大到小):heart (2.27M), hfc / amy-1p8m (1.8M), amy / kristin / vi / id (~1.46M), amy-1p1m (1.1M), heart-nano (294k)。
🌐 Web / 浏览器部署(无需后端服务器)
sanoTTS的浏览器版本完全在客户端运行(通过WebAssembly),因此部署就是托管静态文件。
方式A:使用npm包(推荐开发者)
安装npm包:
1
npm install sanotts-web
在代码中使用:
1
2
3
4
5
6
7
8
9
10import { SanoTTS, playAudio } from 'sanotts-web';
const tts = await SanoTTS.load({
assetBase: 'https://你的CDN地址/sanotts/', // 存放dist/目录的位置
});
const result = await tts.synthesize('Hello from my own server.', {
voice: 'amy',
voiceBase: 'https://你的CDN地址/sanotts/', // 存放voices/目录的位置
});
playAudio(result); // 在浏览器中播放托管静态文件:将
node_modules/sanotts-web/dist/目录(WASM运行时)和项目根目录下web/voices/目录(各语音的权重文件)复制到你自己的静态托管服务(如CDN、对象存储)上,并确保上面代码中的assetBase和voiceBase指向正确。
方式B:纯静态HTML部署(无需构建工具)
这种方式更直接,适合不想用npm的开发者。
- 从本项目
web/目录中复制以下文件到你的静态服务器:snt_g2p.js,snt_g2p.wasm,nt_g2p.data(音素转换)snt_voice.js,snt_voice.wasm(语音合成)voices/整个目录 (包含所有声音的权重)
- 在你的HTML中引用并初始化,具体加载逻辑可以参考项目
web/index.html的完整示例。
重要提示:
- 文件大小:WASM运行时约700KB(gzip压缩后),每个语音的权重文件在4-7MB之间(FP32格式),会在首次使用时按需加载。
- CSP策略:如果你的网站有内容安全策略(CSP),需要在
script-src指令中允许'wasm-unsafe-eval'(或旧浏览器的'unsafe-eval'),以允许WASM执行。
📱 移动端与嵌入式设备部署
Arduino / PlatformIO (ESP32-S3等微控制器)
这是sanoTTS最独特的应用场景。
在Arduino IDE中:将
arduino/目录下载为ZIP库,并通过项目 -> 加载库 -> 添加.ZIP库导入。在PlatformIO中:在
platformio.ini文件中添加依赖:1
lib_deps = https://github.com/Ampixa/sanoTTS.git
具体使用:请参考项目
arduino/README.md,其中详细说明了支持的开发板(ESP32-S3)、内存配置以及如何将模型文件(如mcu-kristin-745k-q8.tar.gz)烧录到设备中。
Android / iOS / 桌面
项目在mobile/目录提供了用于移动端的C语言API绑定,支持Swift (iOS)、Kotlin (Android) 和 Dart (Flutter)。这属于更高级的集成,需要从源码编译,具体参考mobile/README.md(若存在)。
⚙️ 高级选项与注意事项
- 语音模型存储位置:Python包默认从Hugging Face下载模型。你可以通过设置环境变量
SANOTTS_VOICE_SOURCE=hf或SANOTTS_VOICE_SOURCE=github来固定从GitHub Releases获取(作为备用源)。 - 训练自己的声音:项目提供了完整的训练工具链(在
docs/目录下)。需要准备数据集,并按照docs/中的配方(先训练时长模型、声学模型,再联合微调)进行操作。这需要较强的机器学习和Python开发能力。 - 许可证注意:
- 核心推理运行时(
mcu/src/snt_*.c等)是 MIT 许可证,非常宽松。 - 整个项目因为包含了espeak-ng(用于G2P转换)的代码,整体是 GPL-3.0 许可证。这意味着如果你修改或分发包含espeak-ng部分的完整项目代码,需要遵守GPL。
- 核心推理运行时(
你是想在Python环境中快速试用,还是计划将其集成到网站或嵌入式设备中?可以告诉我你的具体目标平台,我来提供针对性的指导。



