基于Rust的本地TTS服务器搭建终极指南:免费文字转语音解决方案
【免费下载链接】tts-servertts-server-api项目地址: https://gitcode.com/gh_mirrors/tt/tts-server
想要搭建一个完全免费、高性能的本地文字转语音服务器吗?tts-server是一个基于Rust开发的开源TTS服务器项目,它整合了微软Edge浏览器"大声朗读"API和Azure TTS服务接口,让你能够轻松实现文本到语音的实时转换。无论你是开发者需要为应用添加语音功能,还是普通用户想要一个私密的语音合成服务,这个项目都能满足你的需求。
🎯 为什么选择tts-server?
三大核心优势
- ⚡高性能并发处理:采用WebSocket长连接协议,大幅减少HTTP到WebSocket的升级握手时间,支持高并发请求
- 🛠️灵活的配置选项:支持自定义语音参数、输出格式和服务端口,满足不同场景需求
- 🆓完全免费开源:基于开源许可证,无需支付任何服务费用,代码完全透明可定制
适用场景
- 为电子书阅读器添加语音朗读功能
- 构建智能语音助手后端服务
- 开发无障碍应用,为视障用户提供语音支持
- 创建语音播报系统或语音提醒服务
📥 快速开始:三步获取项目
1. 克隆项目仓库
打开终端,执行以下命令获取项目源码:
git clone https://gitcode.com/gh_mirrors/tt/tts-server2. 进入项目目录
cd tts-server3. 查看项目结构
项目采用模块化设计,核心文件包括:
src/main.rs- 程序入口点src/ms_tts.rs- Microsoft Edge TTS引擎实现src/utils/azure_api.rs- Azure TTS服务接口封装src/web/- Web服务相关代码,包含HTTP API和WebSocket处理
🛠️ 环境准备与编译
Rust环境安装
tts-server基于Rust开发,你需要先安装Rust环境:
macOS/Linux用户:
curl --proto '=https' --tlsv1.3 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/envWindows用户:
- 访问Rust官网下载rustup-init.exe
- 双击运行安装程序,选择默认选项
- 安装完成后重启终端
验证安装
rustc --version cargo --version编译项目
在项目根目录执行编译命令:
cargo build --release编译完成后,可执行文件位于:
- Linux/macOS:
target/release/tts-server - Windows:
target/release/tts-server.exe
🚀 服务器启动与配置
基础启动
最简单的启动方式,使用默认配置:
./target/release/tts-server这将启动一个监听在0.0.0.0:8080的TTS服务器。
常用配置参数
tts-server支持丰富的命令行参数:
# 指定监听地址和端口 ./target/release/tts-server --listen-address 192.168.0.101 --listen-port 20222 # 查看所有支持的语音列表 ./target/release/tts-server --show-informant-list # 查看所有支持的音频格式 ./target/release/tts-server --show-quality-list # 查看完整帮助信息 ./target/release/tts-server --help创建启动脚本
为了简化启动过程,可以创建启动脚本:
Linux/macOS-start.sh:
#!/bin/bash cd "$(dirname "$0")" ./target/release/tts-server --listen-port 8080Windows-start.bat:
@echo off cd /d %~dp0 target\release\tts-server.exe --listen-port 8080📊 核心功能详解
支持的API接口
tts-server提供三种不同的TTS接口:
- Edge浏览器接口-
/api/tts-ms-edge - 官网预览接口-
/api/tts-ms-official-preview - 官方订阅接口-
/api/tts-ms-subscribe-api
请求参数说明
所有接口都支持GET和POST请求:
GET请求示例:
http://localhost:8080/api/tts-ms-edge?text=你好世界&informant=zh-CN-XiaoxiaoNeuralPOST请求示例:
{ "text": "待转换的文本内容", "informant": "zh-CN-XiaoxiaoNeural", "style": "general", "rate": 1.0, "pitch": 1.0, "quality": "audio-24khz-48kbitrate-mono-mp3" }参数详解
- text- 必填参数,待转换的文本内容
- informant- 可选参数,发音人,默认为
zh-CN-XiaoxiaoNeural - style- 可选参数,发音风格,默认为
general - rate- 可选参数,语速,范围0-3,默认为1.0
- pitch- 可选参数,音调,范围0-2,默认为1.0
- quality- 可选参数,音频格式,默认为
audio-24khz-48kbitrate-mono-mp3
🎙️ 语音配置指南
常用中文发音人列表
tts-server支持丰富的中文语音,以下是部分常用发音人:
| 发音人ID | 中文名称 | 特点 |
|---|---|---|
| zh-CN-XiaoxiaoNeural | 晓晓 | 标准女声,清晰自然 |
| zh-CN-YunyangNeural | 云扬 | 沉稳男声,适合播报 |
| zh-CN-XiaochenNeural | 晓辰 | 年轻女声,活泼 |
| zh-CN-XiaohanNeural | 晓涵 | 温柔女声,适合朗读 |
| zh-CN-YunxiNeural | 云希 | 标准男声,稳重 |
发音风格选择
不同的发音风格能为语音添加情感色彩:
affectionate- 温暖亲切的语气calm- 沉着冷静的态度cheerful- 积极愉快的语气sad- 表达悲伤语气angry- 表达生气和厌恶的语气serious- 严肃和命令的语气
音频格式支持
tts-server支持多种音频格式,满足不同需求:
// 高质量MP3格式 "audio-48khz-192kbitrate-mono-mp3" // 平衡质量与大小 "audio-24khz-48kbitrate-mono-mp3" // Opus格式,适合网络传输 "ogg-24khz-16bit-mono-opus" // 原始PCM格式 "raw-24khz-16bit-mono-pcm"🔌 实际应用示例
在阅读App中使用
tts-server与流行的电子书阅读器"阅读"App完美兼容:
http://192.168.0.101:20222/api/tts-ms-edge,{ "method": "POST", "body": { "informant": "zh-CN-XiaoxiaoNeural", "style": "general", "rate": {{ speakSpeed / 15 }}, "quality": "audio-48khz-96kbitrate-mono-mp3", "text": "{{java.encodeURI(speakText).replace('+','%20')}}" } }自定义语音播报系统
通过简单的HTTP请求即可实现语音播报:
import requests import json def text_to_speech(text, server_url="http://localhost:8080"): """将文本转换为语音""" data = { "text": text, "informant": "zh-CN-XiaoxiaoNeural", "rate": 1.2, "quality": "audio-24khz-48kbitrate-mono-mp3" } response = requests.post( f"{server_url}/api/tts-ms-edge", json=data, headers={"Content-Type": "application/json"} ) if response.status_code == 200: with open("output.mp3", "wb") as f: f.write(response.content) print("语音生成成功!") else: print(f"请求失败: {response.status_code}")🐛 故障排除指南
常见问题及解决方案
1. 编译失败
# 更新Rust工具链 rustup update # Linux用户安装系统依赖 sudo apt install libssl-dev # macOS用户安装命令行工具 xcode-select --install2. 服务器无法启动
# 检查端口是否被占用 netstat -tuln | grep 8080 # 使用其他端口启动 ./target/release/tts-server --listen-port 90903. 连接被拒绝
- 检查防火墙设置,确保端口开放
- 确认服务器IP地址正确
- 验证网络连接状态
4. 语音生成失败
- 检查文本编码,确保使用UTF-8
- 验证发音人ID是否正确
- 确认服务器有网络连接(需要访问微软服务)
🔧 高级配置技巧
后台运行服务器
Linux/macOS使用systemd:
[Unit] Description=TTS Server After=network.target [Service] Type=simple User=your_username WorkingDirectory=/path/to/tts-server ExecStart=/path/to/tts-server/target/release/tts-server Restart=on-failure [Install] WantedBy=multi-user.target使用screen保持会话:
screen -S tts-server ./target/release/tts-server # 按Ctrl+A,然后按D退出screen # 重新连接:screen -r tts-server性能优化建议
- 调整并发连接数:根据服务器资源调整WebSocket连接数
- 使用缓存机制:对常用文本进行语音缓存,减少重复生成
- 负载均衡:在多台服务器上部署,使用Nginx进行负载均衡
- 监控日志:定期检查服务器日志,及时发现并解决问题
📈 性能测试与优化
并发性能测试
tts-server采用WebSocket长连接设计,相比传统HTTP短连接,在并发处理上有显著优势:
- 连接建立时间:WebSocket减少80%的握手时间
- 内存占用:每个连接约占用2-3MB内存
- 并发能力:单机可支持数百个并发连接
资源使用建议
- CPU:语音合成过程CPU占用较高,建议分配足够CPU资源
- 内存:至少2GB可用内存
- 网络:确保稳定的网络连接,特别是使用Azure服务时
- 存储:预留足够的磁盘空间用于日志和临时文件
🔄 项目维护与更新
更新项目
# 进入项目目录 cd tts-server # 拉取最新代码 git pull origin main # 重新编译 cargo build --release # 重启服务查看日志
tts-server会输出运行日志,帮助诊断问题:
# 查看实时日志 tail -f nohup.out # 如果使用nohup运行 # 查看错误日志 grep -i error logs/tts-server.log贡献代码
tts-server是一个开源项目,欢迎社区贡献:
- Fork项目到自己的仓库
- 创建功能分支
- 实现新功能或修复bug
- 提交Pull Request
- 等待代码审查和合并
🎉 实用技巧与最佳实践
技巧1:批量语音生成
创建脚本批量处理文本文件:
#!/bin/bash # batch_tts.sh SERVER="http://localhost:8080" VOICE="zh-CN-XiaoxiaoNeural" for file in *.txt; do text=$(cat "$file") filename="${file%.txt}.mp3" curl -X POST "$SERVER/api/tts-ms-edge" \ -H "Content-Type: application/json" \ -d "{\"text\":\"$text\",\"informant\":\"$VOICE\"}" \ -o "$filename" echo "已生成: $filename" done技巧2:集成到现有系统
通过API网关将tts-server集成到现有系统中:
# Nginx配置示例 location /api/tts/ { proxy_pass http://localhost:8080/api/tts-ms-edge; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }技巧3:监控与告警
设置简单的健康检查:
#!/bin/bash # health_check.sh SERVER="http://localhost:8080" STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$SERVER/api/tts-ms-edge?text=test") if [ "$STATUS" != "200" ]; then echo "TTS服务器异常,正在重启..." # 重启逻辑 pkill tts-server cd /path/to/tts-server && nohup ./target/release/tts-server & fi📚 学习资源与社区
相关项目推荐
- TTS(Android版):可替代系统自带的TTS引擎
- ms-ra-forwarder:Node.js版本,自带Web页面
- tts-server-go:Go语言实现版本
- tts-server-android:Android平台的Go版本实现
官方文档参考
- 微软Azure TTS服务文档
- WebSocket协议规范
- Rust编程语言官方文档
⚠️ 注意事项与免责声明
使用限制
- 非商业用途:本项目仅供学习和交流使用,严禁用于商业用途
- 服务稳定性:除官方订阅接口外,其他接口不保证长期可用性
- 版权声明:请于下载后24小时内删除,尊重开源协议
法律合规
- 遵守当地法律法规
- 尊重知识产权
- 不用于非法用途
技术支持
- 项目问题请提交到GitHub Issues
- 功能建议欢迎提交Pull Request
- 技术交流可以参与社区讨论
🏁 总结
tts-server是一个功能强大、易于部署的本地TTS服务器解决方案。通过本指南,你已经掌握了从环境搭建、服务部署到高级配置的全流程。无论是个人使用还是集成到现有系统中,tts-server都能提供稳定可靠的文字转语音服务。
记住,开源项目的生命力在于社区的贡献。如果你在使用过程中发现bug或有改进建议,欢迎参与到项目的开发中来。让我们一起让tts-server变得更加强大和易用!
最后提醒:微软官方的Azure TTS服务目前拥有一定的免费额度,如果免费额度对你来说够用,请优先考虑支持官方服务。对于固定的文本内容,也可以考虑使用微软的有声内容创作服务,它提供了更丰富的功能和更自然的声音效果。
【免费下载链接】tts-servertts-server-api项目地址: https://gitcode.com/gh_mirrors/tt/tts-server
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考