本文档介绍如何在生产环境中部署 FunSpeech API 服务。
适用场景:
- 单机部署
- 需要快速启动
- 使用 systemd 管理进程
步骤:
- 准备环境
# 创建项目目录
sudo mkdir -p /opt/funspeech
sudo chown $USER:$USER /opt/funspeech
# 复制项目文件
cp -r /path/to/FunSpeech/* /opt/funspeech/
cd /opt/funspeech
# 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate
# 安装依赖
uv sync # 或 pip install -r dependencies/requirements.txt- 配置环境变量
# 复制配置模板
cp env.production.example .env.production
# 编辑配置文件
vim .env.production- 启动服务
# 方式 A: 使用启动脚本
./start_production.sh
# 方式 B: 直接使用 start.py
source .venv/bin/activate
python start.py适用场景:
- 容器化部署
- 需要快速扩展
- 多环境管理
步骤:
- 准备 docker-compose.yml
version: "3.8"
services:
funspeech:
image: docker.cnb.cool/nexa/funspeech:gpu-latest
container_name: funspeech
ports:
- "8000:8000"
volumes:
- ~/.cache/modelscope:/root/.cache/modelscope
- ./temp:/app/temp
- ./data:/app/data
- ./logs:/app/logs
- ./voices:/app/voices
environment:
- DEBUG=false
- LOG_LEVEL=INFO
- WORKERS=2
- INFERENCE_THREAD_POOL_SIZE=4
- TTS_GPUS=0
- ASR_GPUS=0
- APPTOKEN=your_production_token
- APPKEY=your_production_appkey
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped- 启动服务
docker-compose up -d适用场景:
- Linux 服务器
- 需要开机自启
- 需要自动重启
步骤:
- 安装服务文件
# 复制服务文件
sudo cp systemd/funspeech.service /etc/systemd/system/
# 编辑服务文件(修改路径和用户)
sudo vim /etc/systemd/system/funspeech.service- 配置环境变量
# 创建环境变量文件
sudo vim /opt/funspeech/.env.production- 启动服务
# 重载 systemd
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start funspeech
# 设置开机自启
sudo systemctl enable funspeech
# 查看状态
sudo systemctl status funspeech| 配置项 | 说明 | 示例 |
|---|---|---|
DEBUG |
生产环境必须设为 false |
DEBUG=false |
LOG_LEVEL |
日志级别,建议 INFO 或 WARNING |
LOG_LEVEL=INFO |
WORKERS |
Worker 进程数,根据资源调整 | WORKERS=2 |
| 配置项 | 说明 | 推荐值 |
|---|---|---|
APPTOKEN |
API 访问令牌,生产环境建议启用 | 设置强密码 |
APPKEY |
应用密钥,生产环境建议启用 | 设置强密码 |
TTS_GPUS |
TTS GPU 配置 | 0 或 0,1 |
ASR_GPUS |
ASR GPU 配置 | 0 或 0,1 |
INFERENCE_THREAD_POOL_SIZE |
推理线程池大小 | 4 或 8 |
单 GPU (24GB 显存):
WORKERS=2
INFERENCE_THREAD_POOL_SIZE=4
TTS_GPUS=0
ASR_GPUS=0双 GPU (24GB × 2):
WORKERS=2
INFERENCE_THREAD_POOL_SIZE=4
TTS_GPUS=0,1
ASR_GPUS=0,1CPU 模式 (64GB 内存):
WORKERS=4
INFERENCE_THREAD_POOL_SIZE=2
TTS_GPUS=cpu
ASR_GPUS=cpu# 设置环境变量
export WORKERS=2
export INFERENCE_THREAD_POOL_SIZE=4
export TTS_GPUS=0
export ASR_GPUS=0
# 启动服务
./start_production.shsource .venv/bin/activate
python start.py# 启动
sudo systemctl start funspeech
# 停止
sudo systemctl stop funspeech
# 重启
sudo systemctl restart funspeech
# 查看日志
sudo journalctl -u funspeech -f# 查看进程
ps aux | grep funspeech
# 查看端口占用
lsof -i :8000
# 查看 GPU 使用
nvidia-smi# 发送 SIGTERM 信号
pkill -TERM -f "python.*start.py"
# 或使用 systemd
sudo systemctl stop funspeech# ASR 健康检查
curl http://localhost:8000/stream/v1/asr/health
# TTS 健康检查
curl http://localhost:8000/stream/v1/tts/health# 查看应用日志
tail -f logs/funspeech.log
# 查看 systemd 日志
sudo journalctl -u funspeech -f
# 查看 Docker 日志
docker-compose logs -f# 监控资源使用
htop
# 监控 GPU
watch -n 1 nvidia-smi
# 监控网络
iftop# 备份数据
tar -czf backup_$(date +%Y%m%d).tar.gz data/ voices/ logs/
# 备份模型缓存
tar -czf modelscope_backup_$(date +%Y%m%d).tar.gz ~/.cache/modelscope- 启用鉴权: 设置
APPTOKEN和APPKEY - 使用 HTTPS: 通过 Nginx 反向代理配置 SSL
- 防火墙: 限制端口访问
- 日志审计: 定期检查日志文件
- 定期更新: 保持依赖包和系统更新
# 检查健康状态
curl http://localhost:8000/stream/v1/asr/health
# 检查进程
ps aux | grep funspeech修改环境变量 WORKERS,然后重启服务。
设置 LOG_LEVEL=DEBUG,但生产环境建议使用 INFO 或 WARNING。
- 检查日志:
tail -f logs/funspeech.log - 检查端口占用:
lsof -i :8000 - 检查 GPU 可用性:
nvidia-smi - 检查环境变量:
env | grep -E "(WORKERS|GPU|DEBUG)"
更多详细信息请参考 部署文档