tts语音合成-Fish-Speech微调教程(踩坑记录)

tts语音合成-Fish-Speech微调教程(踩坑记录)

想以星铁的三月七为原型,制作一个电脑智能助手,需要用到语言合成,这里选择了Fish-Speech。

项目地址:GitHub - fishaudio/fish-speech: SOTA Open Source TTSSOTA Open Source TTS. Contribute to fishaudio/fish-speech development by creating an account on GitHub.https://github.com/fishaudio/fish-speech/tree/main

官方文档:https://speech.fish.audio/zh/

虽然官方文档比较详细,但是可能没更新,还是会遇到很多问题。

一、环境安装

首先不要运行官方的install_env脚本,我运行完后conda和python环境全乱了,而且最后还报错,跑不起来。只能把conda和python全部重装。

还是老老实实手动安装,这里需要使用到conda。先安装miniconda。

从github下载项目,在目录中运行conda。执行以下命令。

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

conda create -n fish-speech python=3.10

conda activate fish-speech

# 安装 pytorch

pip3 install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu121

# 安装 fish-speech

pip3 install -e .

# (开启编译加速) 安装 triton-windows

pip install https://github.com/AnyaCoder/fish-speech/releases/download/v0.1.0/triton_windows-0.1.0-py3-none-any.whl

注意:

pip install -e后面有个点。最后的编译加速我没安装,感觉加速类的东西容易报错。后面测试了一下,果然报错,显示找不到cuda的path,不知道为什么,pytorch又能正常使用cuda。torch的下载速度非常慢,但是可以把链接复制出去用浏览器或其他下载工具,有科学上网会更快。把下好的whl文件复制到项目目录,执行pip install xxxxxxxx.whl。安装完成后再执行上面安装 pytorch的命令。

二、准备数据

安装好环境后,处理数据,数据需要wav文件和lab文件,lab文件中是语音对应的文本,wav和lab名字相同。格式类似下面的。mp3,wav等常见格式都支持。

fish-speech

├── data

│ ├── 21.15-26.44.lab

│ ├── 21.15-26.44.mp3

│ ├── 27.51-29.98.lab

│ ├── 27.51-29.98.mp3

│ ├── 30.1-32.71.lab

│ └── 30.1-32.71.mp3

在项目下新建一个data文件夹,将wav和lab一起放在这个文件夹。

下载预训练模型:

huggingface-cli download fishaudio/fish-speech-1.5 --local-dir checkpoints/fish-speech-1.5

也可以手动去huggingface下载,也可使用git(需要支持大文件),需要科学上网。没有的话,国内下载自行搜索教程。最后新建一个checkpoints文件夹,把模型等文件放进去。后面执行脚本应该也会自动下载模型。目录结构大概这样。

fish-speech

├── data

│ ├── 21.15-26.44.lab

│ ├── 21.15-26.44.mp3

│ ├── 27.51-29.98.lab

│ ├── 27.51-29.98.mp3

│ ├── 30.1-32.71.lab

│ └── 30.1-32.71.mp3

+---checkpoints

|

+-- fish-speech-1.5

|

下载的模型文件

提取语义token

python tools/vqgan/extract_vq.py data

如果内存不够,就调整一些参数,减少batch-size。

python tools/vqgan/extract_vq.py data --num-workers 1 --batch-size 16

打包数据,根据实际情况调整batch-size。

python tools/llama/build_dataset.py --input "data" --output "data/protos" --text-extension .lab --num-workers 16

三、微调模型

运行训练前,需要修改fish_speech/configs/text2semantic_finetune.yaml文件,根据显存修改

num_workers和batch_size,都为1,需要7.8GB左右的显存训练,我的数据集比较大,所以显存消耗多,根据实际情况自己慢慢测试,找到最合适的参数。

data:

_target_: fish_speech.datasets.semantic.SemanticDataModule

train_dataset: ${train_dataset}

val_dataset: ${val_dataset}

num_workers: 1

batch_size: 1

tokenizer: ${tokenizer}

max_length: ${max_length}

windows下运行训练

python fish_speech/train.py --config-name text2semantic_finetune project=$project +lora@model.model.lora_config=r_8_alpha_16 trainer.strategy.process_group_backend=gloo

四、合并模型

python tools/llama/merge_lora.py --lora-config r_8_alpha_16 --base-weight checkpoints/fish-speech-1.5 --lora-weight results/$project/checkpoints/step_000006400.ckpt --output checkpoints/fish-speech-1.5-mar7th-lora/

step_000006400.ckpt 替换为自己的ckpt文件

五、推理

启动http api

python -m tools.api_server --listen 0.0.0.0:8080 --llama-checkpoint-path "checkpoints/fish-speech-1.5-mar7th-lora" --decoder-checkpoint-path "checkpoints/fish-speech-1.5/firefly-gan-vq-fsq-8x1024-21hz-generator.pth" --decoder-config-name firefly_gan_vq

或者

web推理界面

python -m tools.run_webui --llama-checkpoint-path "checkpoints/fish-speech-1.5-mar7th-lora" --decoder-checkpoint-path "checkpoints/fish-speech-1.5/firefly-gan-vq-fsq-8x1024-21hz-generator.pth" --decoder-config-name firefly_gan_vq

修改模型目录为自己的模型目录

--decoder-checkpoint-path "checkpoints/fish-speech-1.5/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"这个是解码器目录,不是融合后模型的pth目录。

相关推荐

不花钱,也能激励员工的 9 种好方法。
完美365体育ios下载

不花钱,也能激励员工的 9 种好方法。

🌍 07-13 👁️ 4658
肩宽怎么量
完美365体育ios下载

肩宽怎么量

🌍 08-31 👁️ 2408
Excel如何批量删除合并相同单元格并填充
完美365体育ios下载

Excel如何批量删除合并相同单元格并填充

🌍 07-10 👁️ 6317