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目录。

### FISH-SPEECH 语音识别项目的源码下载与使用教程 #### 获取源码 FISH-SPEECH 是一个专注于语音处理和合成的技术项目。对于希望深入研究或应用该技术的开发者而言,可以从 GitHub 平台上获取 VoiceCraft 的代码和模型权重,这有助于推进语音合成以及人工智能安全性方面的工作[^1]。 然而针对具体的 FISH-SPEECH 项目,通常开源项目会在官方文档或者README.md文件中提供详细的安装指南。如果该项目遵循常见的开源实践,则可以在其GitHub仓库主页找到类似的说明: ```bash git clone https://github.com/FishSpeechProject/fish-r requirements.txt ``` #### 使用教程概览 一般情况下,开源项目都会配备`config.json`这样的配置文件用于调整不同环境下的参数设置;并通过像 `main.py` 这样的入口脚本来启动应用程序,在此过程中会依据配置自动加载必要的模块和服务[^2]。 具体到 FISH-SPEECH 可能涉及以下几个核心组件: - **配置管理**:通过修改位于根目录下的 `config.json` 来适应不同的部署场景。 - **主要执行逻辑**:由 `main.py` 实现,负责协调各个子系统的运作并响应外部请求。 - **工具函数库**:放置于 `utils/` 文件夹内,包含了诸如网络通信、数据预处理等功能的支持代码。 - **资源存储区**:包括但不限于训练好的模型(`models/`)、样本音频(`data/`)等重要资料。 为了更好地理解和操作这些特性,建议仔细阅读项目中的 `docs/` 文档夹里的指导材料,并尝试运行一些简单的例子来熟悉整个流程。此外,利用 `tests/` 中提供的单元测试案例可以帮助验证本地环境中各项功能是否正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值