English · 简体中文
fish-speech 是 Fish Audio 开源的那一部分:它的 S2 Pro 模型跑在你自己的机器上,你给它一段简短的录音,它就能用那个声音说话。插件的 Fish Speech 那一节是给它的,会把它上面的每个语音都列在播放器第一个下拉框的Fish Speech条目下面,用它们各自的名字。高亮是按句的,不是按词:这个服务器不报词级时间戳。
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)或者代理会顺畅一些。
COMPILE=1 很关键。**不加它,哪怕用的是数据中心级显卡,服务器也只能以实时速度的五分之一说话——一句话要 20–30 秒,播放器的试听按钮 15 秒后就会放弃,朗读也会卡住。加上它,一句话大约 5 秒。代价在第一次启动上:加载模型要几分钟,还要再编译大约 3 分钟,这期间服务器完全不会应答。API_PORT=9000 docker compose …)。checkpoints/ 和 references/ 文件夹会共享给容器,所以模型和语音在重启之后还在。BACKEND=cpu docker compose --profile server up——朗读会在句与句之间卡住;见下文。--api-key)、另一个地址(--listen)——都在 Fish Audio 的安装指南里。服务器把 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——就是播放器里显示的名字;只能用字母、数字、空格、- 和 _。
http://localhost:8080;在局域网里别的机器上,就把 localhost 换成它的名字或 IP 地址。--api-key 启动的:把 Authorization: Bearer <密钥> 填进额外请求头。