IndexTTS 音色克隆 + vLLM 加速推理

前段时间,分享了低延迟小智AI服务端搭建的 ASR、LLM 和 TTS 部分:

这三个环节中,成本最高的当属 TTS

本地TTS系列已更新3篇:

低延迟小智AI服务端搭建-本地TTS篇:FishSpeech流式推理

低延迟小智AI服务端搭建-本地TTS篇:CosyVoice流式推理

SparkTTS 音色克隆 + vLLM INT8量化加速推理

本篇,继续实测IndexTTS,B 站最新开源的 TTS 模型,延时和效果都非常惊艳。

1. 关于 IndexTTS

IndexTTS 由 B 站在今年 3 月份推出,最近社区反响比较热烈,非常值得推荐给大家。

先来感受下 SOTA,吊打一众模型:

首先,错误率干到底:

然后,音色克隆相似性:

怎么做的?

看下方系统架构图,还是基于 LLM 的 TTS 算法,包括三大件:text/audio tokenizer, text-speech langugae model, speech decoder

有哪些亮点?

  • 产业级落地:推理不需要参考文本

已有的 zero-shot 音色克隆算法,在输入参考音频时,通常都需要严格对应的参考文本,尽管有 ASR,但获取完全准确的参考文本依然不易。所以 IndexTTS 抛弃了这一设计,推理时只需要输入参考音频即可。

  • 可控发音:tokenizer 引入"拼音"和"汉字"

已有的 TTS 算法都会设计复杂的文本前端来处理待合成的文本,比如 E2TTS 就提出将英文单词和音素同时建模,受此启发,IndexTTS 在处理中文时,对于多音字,就用相应的拼音来作为输入,从而控制发音。

为此,IndexTTS 的 text tokenizer 的词表大小为12000,其中有 8400 个汉字和 1721 个拼音,其余的为英文单词和一些特殊符号。

  • 推理高效:speech decoder采用BigVGAN

为了加速推理,IndexTTS 模型没有采用 CosyVoice 的 flow-matching 结构, 而是用 BigVGAN2 作为解码器,直接将 LLM 的最后一层 hidden state 转成音频波形。

最近,IndexTTS 更新了新版模型权重 - IndexTTS 1.5,不过模型架构没变,只是 LLM 部分 gpt2 的层数和参数量增加了。

下文实测数据,均以 IndexTTS1.0 展开。

2. 推理测试

项目地址:https://github.com/index-tts/index-tts/

参考官方 README.md,装好环境,下载权重,即可完成推理测试。

git clone https://github.com/index-tts/index-tts.git
conda create -n index-tts python=3.10
conda activate index-tts
pip install -r requirements.txt

以下是在 RTX 4080 显卡上,原始模型的推理日志:

>> Reference audio length: 11.88 seconds
>> gpt_gen_time: 15.74 seconds
>> gpt_forward_time: 0.12 seconds
>> bigvgan_time: 0.86 seconds
>> Total inference time: 16.85 seconds
>> Generated audio length: 28.93 seconds
>> RTF: 0.5825

你看,除了生成效果出色,IndexTTS 的 RTF 依然吊打一众开源模型!

在没有任何加速加持下,RTF 已小于 1。

3. 加速推理

由于模型效果出色,社区出现了各种加速推理方案,笔者实测后,数据统计如下:

测试环境:

  • 参考音频:11.88s;
  • 生成音频:28.93 - 31.15s;
  • 推理设备:RTX 4080 16G

此外,模型每次推理都需要处理参考音频,以 11.88s 的参考音频为例,这部分的耗时统计如下:

显然,这部分 0.3-0.4s 的延时也可以干掉!

4. 流式推理服务

为了和云端 TTS 的 API 接口对齐,需封装一个 webscoket 服务,接收 fastapi 服务输出的音频流,并发送给客户端。

实现思路和前几篇一样,不再赘述。

5. 硬件配置和响应延时

采用 vllm 加速,gpu_memory_utilization 设置为 0.5,服务启动后的显存占用情况:

因为 vllm 会保留 kv 缓存,显存占用相比原模型高了近一倍。

以下是在 RTX 4080 显卡上,流式推理,首个音频包到达客户端的延时情况。

参考音频编码缓存的情况下,首包延时 不到0.5s

写在最后

本文分享了小智AI服务端 本地TTS的实现,对IndexTTS的首包延时进行了实测。

如果对你有帮助,欢迎点赞收藏备用。

从 FishSpeech、CosyVoice、SparkTTS,到 IndexTTS,首包延时终于到 0.5s 以内了。

后续,我们将继续实测更多低延迟、支持流式推理的 TTS 模型,大家有推荐的,评论区聊!


为方便大家交流,新建了一个 AI 交流群,公众号后台「联系我」,拉你进群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI码上来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值