发帖
 找回密码
 立即注册
搜索
0 0 0
教程文档 226 0 3 小时前

https://github.com/index-tts/index-tts

be8873c4664adbaa98d6471d11d56be5103ee75f.webp

安装和部署

先保证你的环境为:

  • python 3.10 +
  • 显卡为 Nvidia RTX 20 架构以及更新的架构,显存至少 12 g

STEP 1. 安装基本的脚手架

我们需要先安装一些基本的脚手架,后面会用到这些工具


pip install uv modelscope

STEP 2. 克隆 index-tts 并完成初始化


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

cd index-tts

uv sync

习惯使用 pip 的朋友也可以通过 pip install -r requirements.txt 安装依赖。

STEP 3. 下载模型权重

既然在国内,我们就从 modelscope 上下载模型吧!


modelscope download --model IndexTeam/IndexTTS-2 --local_dir checkpoints

习惯用 huggingface 的朋友也可以通过 huggingface-cli login 登录,然后通过下面的命令下载模型:


huggingface-cli download IndexTeam/IndexTTS-2 \

bpe.model config.yaml feat1.pt feat2.pt gpt.pth qwen0.6bemo4-merge s2mel.pth wav2vec2bert_stats.pt

--local-dir checkpoints

STEP 4. 运行 webui

运行如下的语句就可以打开一个 web 服务


uv run webui.py

遇到问题请看 总结一些部署过程中您可能遇到的错误 · Issue #283 · index-tts/index-tts · GitHub

d36eeb4cb7f550b5cb21045e4cb50e77c14a13c1.webp

高级使用

如果你希望把 index-tts 集成到你的项目中,可以如下安装它:


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

cd index-tts && pip install -e .

index-tts 提供了两种模式进行语音合成。

语音合成 - 普通模式

普通模式下,你只需要提供需要合成的 speaker 音色和合成的文本即可,最简代码如下:


from indextts.infer_v2 import IndexTTS2

tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", is_fp16=False, use_cuda_kernel=False)

text = """

我的本科机器学习老师在讲解西瓜书第三章的时候讲过一个另我醍醐灌顶的论述:机器学习的训练一定是不可能 100% 收敛到最优解的,因为假设它一定能收敛到最优解,那么利用机器学习模型就能将 NP 难引到 P,引发悖论。

在工程实践中,解决NP难的主要方法都是通过引入额外的假设来在特定范围内解决,比如大模型训练框架的流水线并行 sharding 算法,就是假设 OP 都是 transformer,否则任意 OP 下的模型 sharding 以达到指定调度机的负载均衡,是一个NP难问题。

而机器学习的假设都在任务定义和数据集本身上,地球上所有物体分类器做不了,但是猫狗分类器能做,假设被埋入了问题定义和数据集本身的 domain 上。

本质上都是一样的。

"""

tts.infer(spk_audio_prompt='examples/plosis.mp3', text=text, output_path="plosis.gen.mp3", verbose=True)

这里我才用了明日方舟的角色白面鸮的解包语音作为输入(examples/plosis.mp3

examples/plosis.mp3 如下:

https://kirigaya.cn/files/audio/blog/plosis.mp3

合成后的 plosis.gen.mp3 效果如下:

https://kirigaya.cn/files/audio/blog/plosis.gen.mp3

语音合成 - 情绪引导模式

如果需要合成带有激烈情绪的样本,可以通过 emo_audio_prompt 来导入含有情绪的音频文件,让生成结果的情绪更加逼真。

比如你要合成一段情绪低沉的音频,除了 speaker 的语音和文本外,还可以输入一段语调悲凉的声音作为 emo audio prompt,代码如下:


from indextts.infer_v2 import IndexTTS2

tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", is_fp16=False, use_cuda_kernel=False)

text = """

白头若是雪可替,世上何来苦心人。

等不来的缘,若是强求,也就不自洽了。

这么简单的道理,世上又有多少人,年入半百,方才醒悟。

"""

tts.infer(spk_audio_prompt='examples/shu.mp3', text=text, output_path="shu.gen.mp3", emo_audio_prompt='examples/emo_sad.wav', verbose=True)

这里我们用明日方舟干员「黍」的声音来做演示,examples/emo_sad.wav 是 index-tts 项目中自带的一段悲伤的语音。

examples/shu.mp3

https://kirigaya.cn/files/audio/blog/shu.mp3

合成音频 shu.gen.mp3 如下:

https://kirigaya.cn/files/audio/blog/shu.gen.mp3

实际测试下来算是发现了一个 index-tts 目前的不足,如果。emo_audio_prompt 的音色和 spk_audio_prompt 的音色相去甚远,那么合成的音频的音色收到的扰动就会很大。

FAQ

运行时遇到一堆奇怪的问题

看我总结的 总结一些部署过程中您可能遇到的错误 · Issue #283 · index-tts/index-tts · GitHub:https://github.com/index-tts/index-tts/issues/283

运行速度有点慢

一方面你可以配置 nvcc 编译器来编译他们提供的 cuda kernel。这里你需要解决一些编译时的小问题。

不过 index-tts 默认是使用全部卡进行推理的,而 index-tts 本身并不大,分布式推理只会降低性能,所以我建议你在使用 index-tts 进行推理前设置一下可见显卡为 1:


export CUDA_VISIBLE_DEVICES=0 # 选择 0 号卡为可见卡

──── 0人觉得很赞 ────

使用道具 举报

和微软的Vibevoice相比,性能怎么样?
粥?加个好友
感谢老友分享
对比1.5有哪些提升?
您需要登录后才可以回帖 立即登录
高级模式