V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
leia
V2EX  ›  分享创造

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

  •  1
     
  •   leia · 28 天前 · 1204 次点击

    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   ·   实用小工具   ·   6047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:17 · PVG 10:17 · LAX 19:17 · JFK 22:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.