管家级教程:在 Windows 上配置 WSL2、CUDA 及 VLLM,开源音频克隆项目 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
leia
V2EX    分享创造

管家级教程:在 Windows 上配置 WSL2、CUDA 及 VLLM,开源音频克隆项目

  •  1
     
  •   leia 60 天前 1332 次点击
    这是一个创建于 60 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ok ,那么今天给大家分享一下之前看到过的一个 音频克隆项目

    使用体验音色效果没有那么高的效果,不过开源嘛,搞来玩一玩试看看。

    源地址: https://github.com/index-tts/index-tts

    关于 IndexTTS

    IndexTTS 是一个基于 GPT 风格的文本转语音 (TTS) 模型,主要基于 XTTS 和 Tortoise 算法。

    它能够通过拼音纠正汉字发音,并通过标点符号控制任意位置的停顿。

    我们增强了系统的多个模块,包括改进说话人条件特征表示,并集成 BigVGAN2 以优化音频质量。我们的系统基于数万小时的数据进行训练,达到了最佳性能,超越了目前流行的 TTS 系统,例如 XTTS 、CosyVoice2 、Fish-Speech 和 F5-TTS 。

    源项目基于 torch ,

    本文实践项目是改用 VLLM 进行的项目 https://github.com/Ksuriuri/index-tts-vllm

    vllm 暂不支持 windows 运行,所以需要通过 wsl 虚拟机虚拟 linux 系统

    目前 wsl 主力版本为 wsl2 所以我们采用 wsl2

    需要的设备与流程:

    • 足够的存储空间
    • 显卡支持 CUDA ,同样意味着显存也要够大
    • 安装 WLS2 ,安装配置 pip
    • 安装 uv ,g++,cuda-tookit 配置工具
    • 配置虚拟环境,安装 requirements
    • 下载模型文件,转义模型文件
    • 运行 webui.py

    确认开启 hyper-v

    安装 WSL2

    管理员身份下运行

    自行开启魔法,以防被 443 拒绝

    wsl --install 

    手动安装 指定版本 也可以选择其他

    wsl --install Ubuntu-22.04 

    安装完往后可以在开始菜单找到并且固定

    也可以通过命令行启动

    安装和配置 pip

    在刚安装好的虚拟机里面进行安装

    修改为国内镜像

    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换 deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse # deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse 

    编辑文件 vi/etc/apt/sources.list 文件

    sudo vi /etc/apt/sources.list 

    按 dd 清除每一行,按 i 入 insert ,按右黏,按 esc 退出 insert ,:wq 保存後。 (**WSL2 安装 Debian(Ubuntu)并配置国内 apt 源 - 知乎**)

    执行更新

    sudo apt update 

    安装 pip

    sudo apt install pip 

    安装必要工具

    安装 uv , 安装 gcc 和 g++

    pip install uv pip install gcc pip install g++ 

    安装和配置 cuda

    windows 需要安装 cuda driver

    wls2 需要安装不包含 driver 的 cuda tookit

    参考 NVIDA CUDA 文档

    windows 安装 cuda

    NVIDA CUDA 12.9 toolkit

    Wsl 安装 cuda-toolkit

    wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update sudo apt-get -y install cuda-toolkit-12-9 

    Nvidia 参考文档

    wsl 配置环境变量

    export CUDA_HOME="/usr/local/cuda-12.9" export PATH="/usr/local/cuda-12.9/bin:$PATH" 

    输入一下命令确保 ok

    nvidia-smi

    配置克隆项目

    git clone https://github.com/Ksuriuri/index-tts-vllm.git 

    进入工作目录

    cd index-tts-vllm 

    创建 uv 虚拟环境

    un .venv 

    设置 python 版本

    uv python install 3.10 

    安装依赖包

    uv pip install -r requirements.txt 

    下载模型权重

    地址

    模型权重转换

    需要转换为 transformers 库兼容的版本,

    bash convert_hf_format.sh /path/to/your/model_dir 

    /path/to/your/model_dir 需要修改成你需要保存的位置

    这个是我的 bash convert_hf_format.sh /home/leia/IndexTTS-1.5/ 

    将项目中的 webui.py 的 model_dir 修改为模型权重下载路径

    运行下命令启动程序

    VLLM_USE_V1=0 python webui.py 

    往后再启动就是

    leia@leia:~/index-tts-vllm$

    source .venv/bin/activate 

    .venv 为我们创建的虚拟环境

    运行成功的截图

    API 支持

    该项目使用 fastapi 封装了 api 接口,调用如下命令可以启动相关示例:

    VLLM_USE_V1=0 python api_server.py --model_dir /home/leia/IndexTTS-1.5 --port 11996 

    编写如下 python 文件 testindex-tts-vllm.py

    import requests url = "http://127.0.0.1:11996/tts_url" data = { "text": "你好,我叫 leia ,很高兴认识你", "audio_paths": [ "spk_1234232323.wav", "spk_2344423234.wav" ] } respOnse= requests.post(url, json=data) with open("output.wav", "wb") as f: f.write(response.content) 

    关于我的一些介绍

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2198 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:38 PVG 08:38 LAX 17:38 JFK 20:38
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86