恒源云 + Fish S2 部署指南
适合场景
- 灵通问道 TTS 生产(一周5期,每期10-15分钟)
- 成本:约 ¥15-30/月
1. 开实例
推荐配置
| 项目 | 选择 |
|---|---|
| 平台 | 恒源云 gpushare.com |
| 显卡 | RTX 3090 24GB(¥1.32/时) |
| 镜像 | PyTorch 2.1 + Python 3.12 |
| 数据盘 | 勾选(模型持久化,避免每次重下) |
省钱技巧
- 选按量计费,用完即关
- 勾选数据盘,模型 checkpoints 保存在
/root/autodl-tmp/不丢失 - 脚本写好再开机,最小化 GPU 空闲时间
2. 一键部署(首次约 15 分钟)
SSH 连接实例后执行:
#!/bin/bash
# fish_s2_setup.sh — 恒源云 Fish S2 一键部署
set -e
# 工作目录(恒源云数据盘)
WORKDIR=/root/autodl-tmp/fish-speech
mkdir -p $WORKDIR && cd $WORKDIR
# 安装系统依赖
apt update && apt install -y portaudio19-dev libsox-dev ffmpeg
# 克隆仓库(如已存在则跳过)
if [ ! -d "fish-speech" ]; then
git clone https://github.com/fishaudio/fish-speech.git
fi
cd fish-speech
# 创建环境
conda create -n fish-speech python=3.12 -y 2>/dev/null || true
conda activate fish-speech
# 安装 GPU 版本(CUDA 12.x)
pip install -e ".[cu129]"
# 下载模型权重(约 8GB)
python -c "
from huggingface_hub import snapshot_download
snapshot_download(
repo_id='fishaudio/fish-speech-s2-pro',
local_dir='checkpoints/fish-speech-s2-pro'
)
"
echo "✅ 部署完成!运行以下命令启动 API 服务:"
echo "conda activate fish-speech && cd $WORKDIR/fish-speech"
echo "python -m tools.api --listen 0.0.0.0:8080 --llama-checkpoint-path checkpoints/fish-speech-s2-pro"
3. 启动 API 服务
conda activate fish-speech
cd /root/autodl-tmp/fish-speech/fish-speech
# 启动 API Server(占用显存约 10GB,推理速度 RTF ≈ 0.1)
python -m tools.api \
--listen 0.0.0.0:8080 \
--llama-checkpoint-path checkpoints/fish-speech-s2-pro \
--compile # 可选,首次编译慢但后续快 10x
4. 声音克隆
灵通已有参考音频 voice_clip_15s.wav,上传到实例后:
# 通过 API 创建声音模型
curl -X POST http://localhost:8080/v1/tts/create_voice \
-F "audio=@/root/autodl-tmp/voices/lingtong/voice_clip_15s.wav" \
-F "name=lingtong"
或者直接在合成时传参考音频(零样本克隆,无需预训练)。
5. 批量合成
# 本地机器执行,远程调用 API
python scripts/fish_s2_batch.py \
--api-url http://<实例IP>:8080 \
--script scripts/ep042.md \
--voice /path/to/voice_clip_15s.wav \
--output output/ep042/
6. 工作流(省钱版)
┌─────────────────────────────────────┐
│ 本地写脚本(免费,不用开GPU) │
│ scripts/ep042.md │
└──────────────┬──────────────────────┘
│ 准备好脚本
▼
┌─────────────────────────────────────┐
│ 开恒源云实例(计时开始) │
│ ¥1.32/时 │
├─────────────────────────────────────┤
│ ① 启动 API(~30秒,如有compile) │
│ ② 批量合成(~3分钟/期) │
│ ③ 下载音频到本地 │
│ ④ 关闭实例(计时结束) │
└──────────────┬──────────────────────┘
│ 实际占用 GPU ~5分钟
▼ 费用: ¥0.11/期
┌─────────────────────────────────────┐
│ 本地听、改、重写脚本(免费) │
│ 需要重录 → 重复上面的步骤 │
└─────────────────────────────────────┘
7. 成本估算
| 操作 | GPU时间 | 费用 |
|---|---|---|
| 部署(首次) | ~15分钟 | ¥0.33 |
| 合成1期 | ~3-5分钟 | ¥0.07-0.11 |
| 修改重录1次 | ~3分钟 | ¥0.07 |
| 1期含2次修改 | ~10分钟 | ¥0.22 |
| 月20期 | ~200分钟 | ¥4.4 |
| 含调试余量 | ~10小时 | ¥13.2 |
对比 CosyVoice ¥300-500/月,省 95%。
8. 恒源云端口映射
恒源云需要通过其平台做端口映射才能从本地访问 API:
- 恒源云控制台 → 自定义服务 → 开启
- 映射端口 8080 → 获取公网访问地址
- 用该地址替换脚本中的
<实例IP>:8080
9. Docker 方式(备选)
cd /root/autodl-tmp/fish-speech/fish-speech
# 启动 API Server
docker compose --profile server up
# 或指定端口
API_PORT=8080 docker compose --profile server up
常见问题
Q: 实例关机后模型还在吗?
A: 在的。保存在 /root/autodl-tmp/ 的数据不会丢失。但 /root/ 下的会丢失,所以务必用 autodl-tmp。
Q: 需要每次重新下载模型吗?
A: 不需要。首次下载到 /root/autodl-tmp/fish-speech/checkpoints/,后续开机直接用。
Q: RTX 3090 够吗? A: 够。S2-Pro 4B FP16 占用约 10GB 显存,3090 有 24GB,还剩 14GB 余量。
Q: compile 优化值得开吗? A: 首次启动慢(~5分钟编译),但后续推理快 10 倍。如果一次要合成多期,值得开。