当前位置: 首页 > news >正文

Fish Speech - 新的 TTS 解决方案

文章目录

    • 一、关于 Fish Speech
      • 架构
      • Fish Speech V1.1 技术介绍[视频]
    • 二、配置
      • 1、Linux 配置
      • 2、Docker 配置
    • 三、快速开始
      • 1、设置
        • For Windows User / win用户
        • For Linux User / Linux 用户
      • 2、准备模型
      • 3、WebUI Inference
    • 四、Break-down CLI Inference
      • 1、从语音生成 prompt:
      • 2、从文本生成语义 token:
      • 3、从语义 token 生成人声:

一、关于 Fish Speech

Fish Speech : Brand new TTS solution

  • github : https://github.com/fishaudio/fish-speech (240916 10.7k)
  • Fish Audio demo : https://fish.audio/
  • 快速开始 : https://github.com/fishaudio/fish-speech/blob/main/inference.ipynb
  • 官方文档:https://speech.fish.audio/zh/
  • 示例:https://speech.fish.audio/zh/samples/
  • 视频介绍(bilibili):
    https://www.bilibili.com/video/BV1pu46eVEk7
    https://www.bilibili.com/video/BV1wz421B71D
    https://www.bilibili.com/video/BV1zJ4m1K7cj

架构


Fish Speech V1.1 技术介绍[视频]

Fish Speech V1.1 技术介绍


二、配置


1、Linux 配置

# 创建一个 python 3.10 虚拟环境, 你也可以用 virtualenv
conda create -n fish-speech python=3.10
conda activate fish-speech# 安装 pytorch
pip3 install torch torchvision torchaudio# 安装 fish-speech
pip3 install -e .[stable]# (Ubuntu / Debian 用户) 安装 sox + ffmpeg
apt install libsox-dev ffmpeg

2、Docker 配置

1)安装 NVIDIA Container Toolkit:

Docker 如果想使用 GPU 进行模型训练和推理,需要安装 NVIDIA Container Toolkit :

对于 Ubuntu 用户:

# 添加远程仓库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 安装 nvidia-container-toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 重启 Docker 服务
sudo systemctl restart docker

对于使用其他 Linux 发行版的用户,安装指南请参考:NVIDIA Container Toolkit Install-guide。

注:对于中国大陆的用户,您可能需要使用代理来完成相关工具的安装。


2)拉取并运行 fish-speech 镜像

# 拉取镜像
docker pull fishaudio/fish-speech:latest-dev
# 运行镜像
docker run -it \--name fish-speech \--gpus all \-p 7860:7860 \fishaudio/fish-speech:latest-dev \zsh
# 如果需要使用其他端口,请修改 -p 参数为 YourPort:7860

3)下载模型依赖

确保您在 docker 容器内的终端,然后再从我们的 huggingface 仓库下载所需的 vqganllama 模型。

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

对于中国大陆用户,可以通过镜像站下载。

HF_ENDPOINT=https://hf-mirror.com huggingface-cli download fishaudio/fish-speech-1.4 --local-dir checkpoints/fish-speech-1.4

4)配置环境变量,访问 WebUI

在 docker 容器内的终端,输入 export GRADIO_SERVER_NAME="0.0.0.0" ,从而让外部可以访问 docker 内的 gradio 服务。 接着在 docker 容器内的终端,输入 python tools/webui.py 即可开启 WebUI 服务。

如果是 WSL 或者是 MacOS ,访问 http://localhost:7860 即可打开 WebUI 界面。

如果是部署在服务器上,更换 localhost 为您的服务器 ip 即可。


三、快速开始

1、设置


For Windows User / win用户
!chcp 65001

For Linux User / Linux 用户
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

2、准备模型

# For Chinese users, you probably want to use mirror to accelerate downloading
# !set HF_ENDPOINT=https://hf-mirror.com
# !export HF_ENDPOINT=https://hf-mirror.com !huggingface-cli download fishaudio/fish-speech-1.4 --local-dir checkpoints/fish-speech-1.4/

3、WebUI Inference

You can use --compile to fuse CUDA kernels for faster inference (10x).

!python tools/webui.py \--llama-checkpoint-path checkpoints/fish-speech-1.4 \--decoder-checkpoint-path checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth \# --compile

四、Break-down CLI Inference


1、从语音生成 prompt:

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

## Enter the path to the audio file here
src_audio = r"D:\PythonProject\vo_hutao_draw_appear.wav"!python tools/vqgan/inference.py \-i {src_audio} \--checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"from IPython.display import Audio, display
audio = Audio(filename="fake.wav")
display(audio)

2、从文本生成语义 token:

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

您可以使用 --compile 来融合 cuda 内核以实现更快的推理 (~30 tokens/秒 -> ~300 tokens/秒)

!python tools/llama/generate.py \--text "hello world" \--prompt-text "The text corresponding to reference audio" \--prompt-tokens "fake.npy" \--checkpoint-path "checkpoints/fish-speech-1.4" \--num-samples 2# --compile

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"from IPython.display import Audio, display
audio = Audio(filename="fake.wav")
display(audio)

2024-09-16(一)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Golang | Leetcode Golang题解之第412题Fizz Buzz
  • Holynix: v1
  • 【C++】入门基础(上)
  • c++234继承
  • 【Git】Clone
  • Autosar BswM配置-手动建立Swc Port实现自定义模式切换
  • 【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??
  • NullPointerException 是什么, 如何修复?
  • [产品管理-23]:NPDP新产品开发 - 21 - 产品创新中的市场调研 - 市场调研对创新产品开发的意义
  • C sharp 学习 笔记
  • Datawhale------Tiny-universe学习笔记——Qwen
  • 前端项目使用js将dom生成图片、PDF
  • 每日一题——第九十四题
  • Python:抓取 Bilibili(B站)评论、弹幕、字幕等
  • go 以太坊代币查余额
  • @jsonView过滤属性
  • 345-反转字符串中的元音字母
  • cookie和session
  • gf框架之分页模块(五) - 自定义分页
  • hadoop集群管理系统搭建规划说明
  • Java反射-动态类加载和重新加载
  • jQuery(一)
  • 仿天猫超市收藏抛物线动画工具库
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 搞机器学习要哪些技能
  • 设计模式(12)迭代器模式(讲解+应用)
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 源码安装memcached和php memcache扩展
  • 白色的风信子
  • 2017年360最后一道编程题
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​第20课 在Android Native开发中加入新的C++类
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (0)Nginx 功能特性
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (7) cmake 编译C++程序(二)
  • (floyd+补集) poj 3275
  • (Git) gitignore基础使用
  • (JS基础)String 类型
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (ZT)出版业改革:该死的死,该生的生
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)php新闻发布平台 毕业设计 141646
  • (理论篇)httpmoudle和httphandler一览
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (十)T检验-第一部分
  • (转)3D模板阴影原理
  • (转)一些感悟
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net core 的缓存方案