fish-speech 推理适配昇腾
【摘要】 Fish-Speech是由Fish Audio团队开发的一款开源文本转语音(TTS)模型,旨在提供高质量、易用的语音合成解决方案。Fish-Speech基于深度学习技术,融合了VQGAN和LLAMA模型,能够生成接近真人发音的语音,并支持多种语音风格和效果,本文介绍了如何使用昇腾推理该模型。
/**************************如有任何问题和疑问,请评论区留言*********************************/
0.前提条件
0.1 登录机器
机器已开通,密码已获取,能通过ssh登录
0.2 检查NPU设备
NPU设备检查:运行npu-smi info命令,返回npu设备信息。
0.3 docker安装
#检查docker是否安装:docker -v,如如尚未安装,运行以下命令进行docker安装
yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64
#配置IP转发,用于容器内的网络访问:
sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf
sysctl -p | grep net.ipv4.ip_forward
0.4 获取镜像
docker pull swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_3_ascend:pytorch_2.3.1-cann_8.0.rc3-py_3.10-hce_2.0.2409-aarch64-snt9b-20241114095658-d7e26d8
0.5 启动镜像
启动容器镜像。启动前请先按照参数说明修改${}中的参数。
docker run -it --net=host \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
--shm-size=32g \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /var/log/npu/:/usr/slog \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v ${work_dir}:${container_work_dir} \
--name ${container_name} \
${image_id} \
/bin/bash
参数说明:
device=/dev/davinci0,..., --device=/dev/davinci7:挂载NPU设备,示例中挂载了8张卡davinci0~davinci7,可根据需要选择挂载卡数。
${work_dir}:${container_work_dir} 代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统,work_dir为宿主机中工作目录,目录下存放着训练所需代码、数据等文件。container_dir为要挂载到的容器中的目录。为方便两个地址可以相同。
shm-size:共享内存大小。
${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。
${image_id}:镜像ID,通过docker images查看刚拉取的镜像ID。
注意
容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。
driver及npu-smi需同时挂载至容器。
不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。
1. 推理验证
在容器工作目录container_work_dir下执行以下操作
1.1 fish-speech代码下载
git clone https://github.com/fishaudio/fish-speech.git
cd fish-speech
1.2 三方依赖安装
1)修改pyproject.toml文件
a.删除dependencies中pyaudio,该库依赖过多,安装可能会失败,而推理不需要,所以可不安装。
b.删除
[project.optional-dependencies]
stable = [
"torch<=2.4.1",
"torchaudio",
]
2)安装三方库
pip install torchaudio==2.3.1
python -m pip install --upgrade pip
pip install -e .[stable]
pip install --upgrade 'urllib3==1.26.7'
1.3 模型下载
模型下载链接: https://huggingface.co/fishaudio/fish-speech-1.4/tree/main
1.4 修改代码
1) fish_speech/models/text2semantic/llama.py 372行
Path(path) / "model.pth" 修改为 str(Path(path) / "model.pth")
2)fish-speech/tools/vqgan/inference.py
a) 第7行import torch后增加 import torch_npu
b) 67行 default="cuda", 修改为default="npu",
3) fish-speech/tools/llama/generate.py
a) 第13行import torch后增加 import torch_npu
b) 第632行default="cuda" 修改为default="npu"
1.5 推理
1)从语音生成 prompt:
python tools/vqgan/inference.py -i "paimon.wav" --checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"
得到一个 fake.npy 文件
2)从文本生成语义 token:
python tools/llama/generate.py --text "要转换的文本" --prompt-text "你的参考文本" --prompt-tokens "fake.npy" --checkpoint-path "checkpoints/fish-speech-1.4" --num-samples 1 --half
该命令会在工作目录下创建 codes_0 文件
3)从语义 token 生成人声:
python tools/vqgan/inference.py -i "codes_0.npy" --checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)