跳转至

恒源云 + 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:

  1. 恒源云控制台 → 自定义服务 → 开启
  2. 映射端口 8080 → 获取公网访问地址
  3. 用该地址替换脚本中的 <实例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 倍。如果一次要合成多期,值得开。