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

picture.image

猴哥的第 169 期分享,欢迎追看

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

低延迟小智AI服务端搭建-ASR篇

低延迟小智AI服务端搭建-ASR篇(续)

低延迟小智AI服务端搭建-LLM篇

低延迟小智AI服务端搭建-TTS篇

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

上篇是本地TTS篇的第一篇:

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

本篇,实测本地部署的 CosyVoice2.0

  1. 关于 CosyVoice2.0

本地部署 cosyvoice2.0 并搭建音色克隆服务,笔者之前有分享过:阿里 CosyVoice 再升级!语音克隆玩出新花样,支持流式输出

相比 fishspeech,CosyVoice 可玩性更强,支持可控音频生成``语速调节等等。

不过,我们更关心的是 如何降低推理延时?

  1. 加速推理

CosyVoice 官方仓库提供了 tensorrt 的加速方案,只需在模型加载时传参load\_trt=True

  
# Load model  
cosyvoice = CosyVoice2('../pretrained\_models/CosyVoice2-0.5B', load\_trt=True, fp16=True)  

此外,模型每次推理都需要处理参考音频和参考文本,这部分显然可以剥离开,提前处理好,并加入缓存。

为此,可以在 CosyVoice 实例中,新增注册音色的函数:

  
def register\_voice(self, voice\_id, voice\_text, ref\_audio):  
        st = time.time()  
        prompt\_speech = load\_wav(ref\_audio, 16000)  
        prompt\_text = self.frontend.text\_normalize(voice\_text, split=False, text\_frontend=True)  
        output = self.frontend.frontend\_prompt(prompt\_text, prompt\_speech, self.sample\_rate)  
        self.speaker[voice\_id] = output  
        print(f"register voice {voice\_id} time: {time.time() - st}")  

以注册 11s 的音频为例,需要 1.65s

  
register voice zh\_female\_wanwanxiaohe\_moon\_bigtts time: 1.656615972518921  

下面,一起来看下注册音色带来的加速效果:

  • 原始推理

picture.image

  • 注册音色后

picture.image

可以发现,同样一段语音合成,首段音频合成的 rtf 可从 2.8 降到 1.6!

  1. 流式推理服务

之前的教程中已提供 fastapi 封装的服务端部署:

阿里 CosyVoice 再升级!语音克隆玩出新花样,支持流式输出。 这里只需新增注册音色的接口:

  
@app.post("/register-voice")  
async def register\_voice(request: TTSRequest):  
    cosyvoice.register\_voice(  
        voice\_id=request.voice\_id,  
        voice\_text=request.voice\_text,  
        ref\_audio=os.path.join(local\_voice\_dir, f"{request.voice\_id}.wav"),  
    )  
    return {"status": "success"}  
  
@app.get("/list-voice")  
async def list\_voice():  
    keys = cosyvoice.speaker.keys()  
    return {"speakers": list(keys)}  

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

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

  1. 硬件配置和响应延时

服务启动后的显存占用情况:

picture.image

因为启用了 tensorrt 引擎,显存占用高了一倍,相比上篇的 fishspeech,性价比顿无!

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

在进行 tensorrt 加速,参考音频编码缓存的情况下,首包延时高达 1.3s

picture.image

最后,我们把接收到的 pcm 数据转成 wav,来感受一下音质。

参考音频来自小智火爆出圈的台湾腔女生-湾湾小何

  
ffmpeg -f s16le -ar 24000 -ac 1 -i tts.pcm tts.wav  

和上篇的 fishspeech 对比下呢:

写在最后

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

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

下篇,继续实测支持流式推理的 TTS 模型。


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

👇 关注猴哥,快速入门AI工具

picture.image

# AI 工具:

本地部署大模型?看这篇就够了,Ollama 部署和实战

盘点9家免费且靠谱的AI大模型 API,统一封装,任性调用!

免费GPU算力本地跑DeepSeek R1,无惧官方服务繁忙!

# AI应用** :**

弃坑 Coze,我把 Dify 接入了个人微信,AI小助理太强了

我把「FLUX」接入了「小爱」,微信直接出图,告别一切绘画软件!

202K 下载!最强开源OCR:本地部署,邀你围观体验

阿里开源TTS CosyVoice 再升级!语音克隆玩出新花样,支持流式输出

借 WeChatFerry 东风,我把微信机器人复活了!

成本不到50的AI对话机器人,如何自建服务端?自定义角色+语音克隆

0
0
0
0
评论
未登录
暂无评论