自建 Fish Speech 服务器

English · 简体中文

fish-speech 是 Fish Audio 开源的那一部分:它的 S2 Pro 模型跑在你自己的机器上,你给它一段简短的录音,它就能用那个声音说话。插件的 Fish Speech 那一节是给它的,会把它上面的每个语音都列在播放器第一个下拉框的Fish Speech条目下面,用它们各自的名字。高亮是按句的,不是按词:这个服务器不报词级时间戳。

它需要什么

用 Docker 跑起来

git clone https://github.com/fishaudio/fish-speech.git
cd fish-speech
pip install -U huggingface_hub
hf download fishaudio/s2-pro --local-dir checkpoints/s2-pro
COMPILE=1 docker compose --profile server up

国内网络——模型是从 Hugging Face 下的,直连往往很慢甚至超时。给 hf download 那条命令加一个环境变量就能走镜像站:HF_ENDPOINT=https://hf-mirror.com hf download fishaudio/s2-pro --local-dir checkpoints/s2-pro(huggingface_hub 认这个变量)。docker compose --profile server up 拉的镜像在 Docker Hub 上,给 Docker 守护进程配镜像加速器(registry-mirrors)或者代理会顺畅一些。

给它一个语音

服务器把 references/ 文件夹里的语音提供出来:一个语音一个文件夹,文件夹名就是语音将来的名字,里面放一段 10–30 秒的干净录音,旁边再放一个同名、.lab 后缀的文本文件,写着录音里说的原话。服务器也能替你从一个 WAV 文件建一个,直接放进那个文件夹:

curl -X POST http://localhost:8080/v1/references/add \
  -F id=myvoice -F audio=@sample.wav -F text="the words spoken in sample.wav"

这个名字——这里是 myvoice——就是播放器里显示的名字;只能用字母、数字、空格、- 和 _。

在 Zotero 里

  1. 编辑 → 设置 → OpenReader → Fish Speech:服务器在本机时,地址填 http://localhost:8080;在局域网里别的机器上,就把 localhost 换成它的名字或 IP 地址。
  2. 服务器是用 --api-key 启动的:把 Authorization: Bearer <密钥> 填进额外请求头。
  3. 测试连接 → 已连接。N 个语音可用。 → 启用。
  4. 在播放器里,这些语音是Fish Speech下面的文件夹名,归在多语种下面:服务器不说某个语音讲哪种语言,而这个模型会说 80 种语言。

值得知道