Fish Speech的部署和推理

 |  分类:软件工具  |  阅读量:281
标签:文本生成语音


原文地址https://github.com/fishaudio/fish-speech

Fish Speech 是一个开源的语音合成代码库,使用 LLM 模型和 VQGAN 模型实现多种语言和风格的语音合成。

一、模型部署

(一)设备及系统要求

显存:2GB (用于推理), 16GB (用于微调)

系统:Linux (全部功能), Windows (仅推理, 不支持 flash-attn​, 不支持 torch.compile​)

因此, 我们强烈建议 Windows 用户使用 WSL2 或 docker 来运行代码库.

(二)环境设置及安装

创建一个 python 3.10 虚拟环境, 你也可以用 virtualenv

conda create -n fish-speech python=3.10
conda activate fish-speech

安装 pytorch nightly 版本

pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu121

安装 flash-attn (适用于linux)

pip3 install ninja && MAX_JOBS=4 pip3 install flash-attn --no-build-isolation

安装 fish-speech

pip3 install -e .

二、模型推理

(一)命令行推理

从我们的 huggingface 仓库下载所需的 vqgan​ 和 text2semantic​ 模型。

huggingface-cli download fishaudio/speech-lm-v1 vqgan-v1.pth --local-dir checkpoints
huggingface-cli download fishaudio/speech-lm-v1 text2semantic-400m-v0.2-4k.pth --local-dir checkpoints

对于中国大陆用户,可使用mirror下载。

HF_ENDPOINT=https://hf-mirror.com huggingface-cli download fishaudio/speech-lm-v1 vqgan-v1.pth --local-dir checkpoints
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download fishaudio/speech-lm-v1 text2semantic-400m-v0.2-4k.pth --local-dir checkpoints

1. 从语音生成 prompt:

如果你打算让模型随机选择音色, 你可以跳过这一步.

python tools/vqgan/inference.py -i "paimon.wav" --checkpoint-path "checkpoints/vqgan-v1.pth"

你应该能得到一个 fake.npy​ 文件.

2. 从文本生成语义 token:

python tools/llama/generate.py --text "在这里输入文本" --prompt-text "在这里输入提示词" --prompt-tokens "fake.npy" --checkpoint-path "checkpoints/text2semantic-400m-v0.2-4k.pth" --num-samples 2

该命令会在工作目录下创建 codes_N​​ 文件, 其中 N 是从 0 开始的整数.

您可能希望使用 --compile​ 来融合 cuda 内核以实现更快的推理 (\~30 个 token/秒 -> \~500 个 token/秒).

对应的, 如果你不打算使用加速, 你可以注释掉 --compile​ 参数.

对于不支持 bf16 的 GPU, 你可能需要使用 --half​​ 参数.

如果你在使用自己微调的模型, 请务必携带 --speaker​ 参数来保证发音的稳定性.

如果你使用了 lora, 请使用 --config-name text2semantic_finetune_lora​ 来加载模型.

3. 从语义 token 生成人声:

python tools/vqgan/inference.py -i "codes_0.npy" --checkpoint-path "checkpoints/vqgan-v1.pth"

(二)HTTP API 推理

运行以下命令来启动 HTTP 服务:

python -m zibai tools.api_server:app --listen 127.0.0.1:8000
# 推荐中国大陆用户运行以下命令来启动 HTTP 服务:
HF_ENDPOINT=https://hf-mirror.com python -m zibai tools.api_server:app --listen 127.0.0.1:8000

随后, 你可以在 http://127.0.0.1:8000/docs​ 中查看并测试 API.

一般来说, 你需要先调用 PUT /v1/models/default​ 来加载模型, 然后调用 POST /v1/models/default/invoke​ 来进行推理. 具体的参数请参考 API 文档.

(三)WebUI 推理

在运行 WebUI 之前, 你需要先启动 HTTP 服务, 如上所述.

随后你可以使用以下命令来启动 WebUI:

python fish_speech/webui/app.py

或附带参数来启动 WebUI:

# 以临时环境变量的方式启动:
GRADIO_SERVER_NAME=127.0.0.1 GRADIO_SERVER_PORT=7860 python fish_speech/webui/app.py

祝大家玩得开心!