Fish Speech - 新的 TTS 解决方案

news2024/12/26 11:44:45

文章目录

    • 一、关于 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(一)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2140798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙开发之ArkTS 基础四 函数

函数 function 是可以重复使用的代码块 提高开发效率 ,例如下面代码: 我需要执行无变,最方便的就是封装到一个方法里面 然后调用五次 fn()方法即可 如图: 函数的步骤是先定义函数 然后使用函数 定义的语法格式是: function 函数名字(){ 函…

Linux命令:文本处理工具sed详解

目录 一、概述 二、用法 1、基本语法 2、常用选项 3、命令格式 4、编辑命令 5、获取帮助 三、 示例 1、替换字符串 2、删除行 (1)删除包含"string"的所有行 ​编辑 (2)删除从第1行到第10行的所有行 3、插…

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 死亡对象判断方法

文章目录 垃圾回收机制死亡对象判断方法引用计数法可达性分析算法可以作为 GC Roots 的对象判断对象被回收需要经历的过程 引用类型引用汇总引用队列 废弃常量判定废弃常量废弃原因遵循原则 无用的类所需条件造成的问题解决步骤 垃圾回收机制 垃圾回收(Garbage Col…

Anaconda安装并配置Python环境

背景概述 Anaconda,中文大蟒蛇,是一个开源的Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。 Anaconda就是可以便捷获取包且对包能够进行管理,包括了python和很多常见的软件库和一个…

[OpenCV] 数字图像处理 C++ 学习——15像素重映射(cv::remap) 附完整代码

文章目录 前言1.像素重映射理论基础2.代码实现(1) remap()细节(2)水平翻转(2)垂直翻转(3)旋转 180 度(4)径向扭曲 3.完整代码 前言 像素重映射将图像中的每个像素映射到新位置,实现图像的扭曲、校正等操作。在 OpenCV 中,cv::remap() 函数就是用于实现这…

java实现系统文件管理

java实现系统文件管理 环境:jdk17springbootVueElementUI 背景:公司所做的项目需要别的系统向我们服务器上传文件,当我们需要查看这些文件什么时候上传的、文件数据是怎样的,只能去机房,排查问题效率较低,…

Redis复习笔记整理

目录 1、Redis简介 1.1 补充数据类型Stream 1.2 Redis底层数据结构 1.3 Redis为什么快 1.4 持久化机制* 1.4.1 RDB持久化 bgsave执行流程 如何保证数据一致性 快照操作期间服务崩溃 RDB优缺点 1.4.2 AOF持久化 为什么采用写后日志 如何实现AOF 什么是AOF重写 AO…

期末满分之模拟实现字符串函数

(一)strcpy 首先我们来了解该函数的使用方式 最简单的理解就是“复制粘贴”,比如现在有一个数组arr1,存放着 hello ;还有一个数组arr2,存放着 boy ;那么使用该函数之后,形如 strcpy&…

小米,B站网络安全岗位笔试题目+答案

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

mongoDB-1

文章目录 一、疑似坑1.11.2 mongo ops manager 一、疑似坑 1.1 https://www.bilibili.com/video/BV1H1421R7WD 2.x开始用,现在应该6.x了吧,早期四处鼓吹,为公司打造全mongo服务,为并发几千做了优化,原本打算替代MySQ…

【C++】——list

文章目录 list介绍和使用list注意事项 list模拟实现list和vector的不同 list介绍和使用 在C中,list是一个带头双向链表 list注意事项 迭代器失效 删除元素:当使用迭代器删除一个元素时,指向该元素的迭代器会失效,但是不会影响其他…

订单防重复提交:token 发放以及校验

订单防重复提交:token 发放以及校验 1. 基于Token校验避免订单重复提交 1. 基于Token校验避免订单重复提交 在很多秒杀场景中,用户为了能下单成功,会频繁的点击下单按钮,这时候如果没有做好控制的话,就可能会给一个用…

ElementUI 布局——行与列的灵活运用

ElementUI 布局——行与列的灵活运用 一 . 使用 Layout 组件1.1 注册路由1.2 使用 Layout 组件 二 . 行属性2.1 栅格的间隔2.2 自定义元素标签 三 . 列属性3.1 列的偏移3.2 列的移动 在现代网页设计中&#xff0c;布局是构建用户界面的基石。Element UI 框架通过其强大的 <e…

面向对象程序设计之继承(C++)

1.继承的定义 1.1继承的概念 继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段&#xff0c;它允许我们在保持原有类特性的基础上进⾏扩展&#xff0c;增加⽅法(成员函数)和属性(成员变量)&#xff0c;这样产⽣新的类&#xff0c;称派⽣类。继承 呈现了⾯向…

Day26_0.1基础学习MATLAB学习小技巧总结(26)——数据插值

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍&#xff0c;为了在这个过程中加深印象&#xff0c;也为了能够有所足迹&#xff0c;我会把自己的学习总结发在专栏中&#xff0c;以便学习交流。 参考书目&#xff1a; 1、《MATLAB基础教程 (第三版) (薛山)》 2、《MATL…

Delphi CxGrid的主从表显示设置

界面编辑建立两个不同级别的视图层级-Layout 其实这是一个主从表关系&#xff0c; 1&#xff1a;填好主表的keyfieldnames 2&#xff1a;填好从表的keyfieldnames 3&#xff1a;填好从表的 detaikeyfieldNames与masterkeyfieldnames 4: 从表的数据源一定要按与主表关联的…

Vue实用操作-2-如何使用网页开发者工具

第一步&#xff0c;添加扩展&#xff0c;live服务器 第二步&#xff0c;将 favicon.ico 文件加入到根目录下 第三步&#xff0c;选择以服务器方式运行&#xff0c;并打开浏览器 第四步&#xff0c;在极简插件你中找到 vue 对应插件&#xff0c;安装到扩展插件中 第五步&#xf…

通过hosts.allow和hosts.deny限制用户登录

1、Hosts.allow和host.deny说明 两个文件是控制远程访问设置的&#xff0c;通过设置这个文件可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。如果请求访问的主机名或IP不包含在/etc/hosts.allow中&#xff0c;那么tcpd进程就检查/etc/hosts.deny。看请求访问的主机…

【南方科技大学】CS315 Computer Security 【Lab2 Buffer Overflow】

目录 引言软件要求启动虚拟机环境设置禁用地址空间布局随机化&#xff08;ASLR&#xff09;设置编译器标志以禁用安全功能 概述BOF.ctestShellCode.c解释 createBadfile.c 开始利用漏洞在堆栈上查找返回地址 实验2的作业 之前有写过一个 博客&#xff0c;大家可以先看看栈溢出…

Qt ORM模块使用说明

附源码&#xff1a;QxOrm是一个C库资源-CSDN文库 使用说明 把QyOrm文件夹拷贝到自己的工程项目下, 在自己项目里的Pro文件里添加include($$PWD/QyOrm/QyOrm.pri)就能使用了 示例test_qyorm.h写了表的定义,Test_QyOrm_Main.cpp中写了所有支持的功能的例子: 通过自动表单添加…