XTTS 与语音克隆

你好!所以,你也被 Reddit 上那些展示 AI 文本转语音技术已经发展到何种程度的帖子震撼到了?

迫不及待地想给你的机械老婆/老公换上一个闪亮的新语音模块了?

别担心,这项令人惊叹的突破性技术已经内置在你本地的 SillyTavern 中,你只需要一个简单的……

前提条件

  1. 最新版本的 SillyTavern。
  2. 已安装 Miniconda
  3. (Windows)已安装 Visual C++ Build Tools
  4. 用于克隆的含语音片段的 WAV 文件(每个文件约 10 秒)。文件要求:PCM、单声道、22050Hz、16 位(可通过 Audacity 转换)。
  5. 创建一个包含 "speakers" 和 "output" 子文件夹的文件夹。将 WAV 文件放入 "speakers" 中。

示例文件夹结构:

C:\xtts
  - speakers
    - alice.wav
    - bob.wav
  - output

安装

daswer123 制作了一个 API 服务器,可在你的电脑上运行 XTTSv2 模型并连接到 SillyTavern 的 TTS 扩展。

它完全独立于 Extras API,并使用单独的环境。

非常重要: 不要将以下依赖安装到你的 Extras 环境或系统 Python 中。 这会破坏你的其他包,造成不必要的降级等问题。

以下说明使用 Miniconda,你也可以使用 venv 完成(此处不再赘述)。 打开 Anaconda 命令提示符,并逐行按以下说明操作。

启动并运行服务器

  1. 导航到你在前提条件第 4 步中创建的文件夹。
    cd C:\xtts
  2. 创建一个新的 conda 环境。从此处起,我们将其称为 xtts
    conda create -n xtts
  3. 激活新创建的环境。
    conda activate xtts
  4. 将 Python 3.10 安装到你的环境中。提示时输入 "y" 确认。
    conda install python=3.10
  5. 安装 XTTS 服务器及其依赖。
    pip install xtts-api-server pydub
  6. 安装 PyTorch。这可能需要一些时间。以下命令安装带 GPU 加速支持(CUDA)的 PyTorch。 如果你只想使用 CPU 推理,请去掉以 --index-url 开头的最后一部分。

    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
  7. 在默认主机和端口上启动 XTTS 服务器:http://localhost:8020
    python -m xtts_api_server
  8. 首次启动时,将下载模型(约 2 GB)。 别忘了仔细阅读 Coqui AI 的法律声明。哈哈,开个玩笑,直接再按一下 "y" 就行。

连接到 SillyTavern

  1. 打开扩展面板,展开 TTS 菜单,并在提供商列表中选择 "XTTSv2"。

  2. 在 Language 下拉菜单中选择你的文本转语音语言(如果不是波兰语我会很伤心的)。

  3. 确认提供商端点指向 http://localhost:8020,并且 "Available voices" 显示了你的语音样本列表。

  4. 选择任意角色,并设置语音样本与角色之间的映射。 如果角色列表为空,多点击几次 "Reload"。

  5. 根据你的偏好配置其余 TTS 设置。

一切就绪!

点击任意消息上下文操作菜单中的扩音器图标,即可从你的扬声器中听到美妙的克隆语音。 生成需要一些时间,即便在高端 RTX GPU 上也不是实时的。

流式输出?

可以使用最新版本的 XTTS 服务器的 HTTP 流式输出功能,以便在生成的音频一可用时就获取其分块!

这不适用于 RVC!

音频仍然会被生成(假设你使用的是最新版本的 RVC 扩展)并转换,但不会以流式方式输出,因为 RVC 需要完整的音频文件才能开始转换。流式 RVC 仍在研究中……

如何获得流式输出支持?

  1. 将 SillyTavern 更新到最新版本。
  2. 将 XTTS 服务器更新到最新版本。

    conda activate xtts
    pip install xtts-api-server --upgrade
  3. 照常启动并将 XTTS 连接到 ST。
  4. 在 SillyTavern 中启用 XTTS 扩展的 "Streaming" 设置。

音频断断续续?

尝试增大 "chunk size" 设置。

供参考:在 chunk size 为 200 时,RTX 3090 能够产生不间断的音频,代价是音频延迟略微增加。

如何重启 TTS 服务器?

只需执行安装说明中的第 1、3 和 7 步。

Android??

不太可能,它无法运行需要 PyTorch 的应用,除非使用我们无法提供支持的某种神秘黑魔法。你可以自行承担风险尝试,但遇到任何问题都不会获得支持。

最佳方案是通过本地网络在你的 PC 上托管 TTS API,只需别忘了指定要监听的主机和端口——参见 README