XTTS 与语音克隆
你好!所以,你也被 Reddit 上那些展示 AI 文本转语音技术已经发展到何种程度的帖子震撼到了?
迫不及待地想给你的机械老婆/老公换上一个闪亮的新语音模块了?
别担心,这项令人惊叹的突破性技术已经内置在你本地的 SillyTavern 中,你只需要一个简单的……
前提条件
- 最新版本的 SillyTavern。
- 已安装 Miniconda。
- (Windows)已安装 Visual C++ Build Tools。
- 用于克隆的含语音片段的 WAV 文件(每个文件约 10 秒)。文件要求:PCM、单声道、22050Hz、16 位(可通过 Audacity 转换)。
- 创建一个包含 "speakers" 和 "output" 子文件夹的文件夹。将 WAV 文件放入 "speakers" 中。
示例文件夹结构:
C:\xtts
- speakers
- alice.wav
- bob.wav
- output
安装
daswer123 制作了一个 API 服务器,可在你的电脑上运行 XTTSv2 模型并连接到 SillyTavern 的 TTS 扩展。
它完全独立于 Extras API,并使用单独的环境。
非常重要: 不要将以下依赖安装到你的 Extras 环境或系统 Python 中。 这会破坏你的其他包,造成不必要的降级等问题。
以下说明使用 Miniconda,你也可以使用 venv 完成(此处不再赘述)。 打开 Anaconda 命令提示符,并逐行按以下说明操作。
启动并运行服务器
- 导航到你在前提条件第 4 步中创建的文件夹。
cd C:\xtts - 创建一个新的 conda 环境。从此处起,我们将其称为
xtts。conda create -n xtts - 激活新创建的环境。
conda activate xtts - 将 Python 3.10 安装到你的环境中。提示时输入 "y" 确认。
conda install python=3.10 - 安装 XTTS 服务器及其依赖。
pip install xtts-api-server pydub -
安装 PyTorch。这可能需要一些时间。以下命令安装带 GPU 加速支持(CUDA)的 PyTorch。 如果你只想使用 CPU 推理,请去掉以
--index-url开头的最后一部分。pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 - 在默认主机和端口上启动 XTTS 服务器:http://localhost:8020
python -m xtts_api_server - 首次启动时,将下载模型(约 2 GB)。 别忘了仔细阅读 Coqui AI 的法律声明。哈哈,开个玩笑,直接再按一下 "y" 就行。
连接到 SillyTavern
-
打开扩展面板,展开 TTS 菜单,并在提供商列表中选择 "XTTSv2"。
-
在 Language 下拉菜单中选择你的文本转语音语言(如果不是波兰语我会很伤心的)。
-
确认提供商端点指向 http://localhost:8020,并且 "Available voices" 显示了你的语音样本列表。
-
选择任意角色,并设置语音样本与角色之间的映射。 如果角色列表为空,多点击几次 "Reload"。
-
根据你的偏好配置其余 TTS 设置。
一切就绪!
点击任意消息上下文操作菜单中的扩音器图标,即可从你的扬声器中听到美妙的克隆语音。 生成需要一些时间,即便在高端 RTX GPU 上也不是实时的。
流式输出?
可以使用最新版本的 XTTS 服务器的 HTTP 流式输出功能,以便在生成的音频一可用时就获取其分块!
这不适用于 RVC!
音频仍然会被生成(假设你使用的是最新版本的 RVC 扩展)并转换,但不会以流式方式输出,因为 RVC 需要完整的音频文件才能开始转换。流式 RVC 仍在研究中……
如何获得流式输出支持?
- 将 SillyTavern 更新到最新版本。
-
将 XTTS 服务器更新到最新版本。
conda activate xtts pip install xtts-api-server --upgrade - 照常启动并将 XTTS 连接到 ST。
- 在 SillyTavern 中启用 XTTS 扩展的 "Streaming" 设置。
音频断断续续?
尝试增大 "chunk size" 设置。
供参考:在 chunk size 为 200 时,RTX 3090 能够产生不间断的音频,代价是音频延迟略微增加。
如何重启 TTS 服务器?
只需执行安装说明中的第 1、3 和 7 步。
Android??
不太可能,它无法运行需要 PyTorch 的应用,除非使用我们无法提供支持的某种神秘黑魔法。你可以自行承担风险尝试,但遇到任何问题都不会获得支持。
最佳方案是通过本地网络在你的 PC 上托管 TTS API,只需别忘了指定要监听的主机和端口——参见 README。