小蜗牛语音工坊:从 0 到 1 搭建一个免费 TTS 网站
一、为什么要做这个网站?
我一直在找一个免费、免登录、无广告的语音合成网站,但市面上的工具要么收费,要么需要注册,要么广告满天飞。于是决定自己做一个。
二、技术选型
| 模块 | 选型 | 理由 | |------|------|------| | 后端 | Spring Boot 3.3 | 熟悉的栈 | | TTS | Edge TTS | 微软神经网络语音,免费 | | 声音克隆 | 小米 MiMo | 国内可用,支持自定义音色 | | 前端 | 原生 HTML/CSS/JS | 无框架,秒开 | | 部署 | Nginx + systemd | 简单可靠 |
三、核心功能实现
1. 语音合成
调用 Edge TTS 的 WebSocket 接口:
public byte[] synthesize(String text, String voice) {
// 建立 WebSocket 连接
// 发送 SSML 请求
// 接收音频流并合并
return audioBytes;
}
2. 声音克隆
调用小米 MiMo API,关键点是音频格式必须为 16kHz 单声道 WAV:
// 用户上传的音频需要重采样
AudioSample sample = AudioResampler.resampleTo16kMonoWav(upload);
3. 特色音色
内置了孙悟空、猪八戒、喜羊羊等预设音色,用户下拉选择即可:
- 🐵 孙悟空 - 激昂有力的男声
- 🐷 猪八戒 - 憨厚低沉的男声
- 🐑 喜羊羊 - 活泼可爱的童声
四、流程图
用 mermaid 画的架构图:
graph TD
A[用户访问网站] --> B{选择功能}
B -->|语音合成| C[输入文字]
B -->|声音克隆| D[选音色/上传音频]
C --> E[调用 Edge TTS]
D --> F[调用 MiMo API]
E --> G[返回 MP3]
F --> G
G --> H[用户播放/下载]
五、部署上线
部署到腾讯云轻量服务器:
# 上传 JAR
scp target/small-snail-tts.jar root@1.13.192.102:/opt/small_snail_tts/
# 重启服务
ssh root@1.13.192.102 "systemctl restart small-snail-tts"
六、踩过的坑
- Edge TTS 不支持的音色要从前端删除,不能让用户选了之后报错
- MiMo 声音克隆对音频格式要求严格,MP3 44.1kHz 立体声会 500 错误
- 浏览器缓存导致更新不生效,加版本号
?v=20260802强制刷新
七、最终效果
访问 www.tnysnail.com 即可体验。
完全免费、免登录、无广告。
💡 这篇文章由 AI 分析:价值度 85/100 · AI 生成率 65% · 原创度 78%