有没有适合实时文字转语音的场景下的方案?

大佬们,想请教个问题。

业务场景背景:

用户提了问题,后端通过调用LLM的api拿到结果(拿的时候用的流式,而不是等待输出完,等于后端拿到什么内容就返回给前端什么内容),这个时候也是流式的返回给前端,这一步前后端用的EventSource实现的

新需求:

现在想要在流式输出过程中,把已经返回给前端的文案用TTS转换之后播放出来,而不是等全部返回再开始转换为语音

个人觉得这个流程是不是这样的:
流式输出几十个字以后开始调用TTS,然后等TTS返回就立即播放,流式过程有了新的文案输出几十个以后,再调用TTS,再继续播放,但是不知道怎么控制这个流程,如果流式内容卡住呢?

现在领导想要调研这个问题的解决方案,不知道如何下手,有没有大佬给支个招~~

另外
前端:vue
后端:node

1 个赞

chatTTS 文字转语音效果好,但是也不能实时转吧,实时的算力要求估计会比较高。至于流式的话,网络好一般不会卡。跟直播一个道理

2 个赞

我猜超自然语音是对句子完整的理解后才能表达出合适的语音语调。一个字一个字的实时读,很难做到超自然语音吧。

是的,所以初步想法是等待流式返回一定量,比如50个字,100个字以后再用tts,但感觉整个流程太复杂了 :rofl: 因为我理解是需要打断点,比如这100个字已经转过了,下次传给tts的就得从断点处再截取文字

语音转文字?这不是ai都用不到的嘛

不需要判断啊,看返回有没有句号,有句号说明是一句完整的话,救可以转了

会考虑用讯飞的那个实时转的那个api,但现在流程问题比较麻烦

是的,我们有要求返回格式,通常是句号。后面会换行
主要是想看还有没有别的option

文字转语音,这种 语音合成(流式版)WebAPI 文档 | 讯飞开放平台文档中心

大模型返回的结果都有标点符号,已经分好了

对呀,科大讯飞一直在做这种

还有个问题请教一下,如果流式的卡住呢,我们有个情况比较严重,AI返回过程中间有时候会需要等待大概一分钟(因为我们的prompt很长,AI分析会比较慢);而且前端页面是可以先离开的( :no_mouth::no_mouth::no_mouth:),再回来就不用再把已经播过内容再调tts的api了吧

这个数字伙伴,你可以了解一下。

好的,谢谢 :heart:

这方面我就不太懂了

你要是不说后端是node我还以为是我的同事呢,我们今天下午刚刚买了百度的文字转语音服务,目前我们实际测试chattts在gpu环境下跑也要100多秒才能出来结果,这个时间太长了,没办法现在选择了用百度的云服务。

哈哈,我们也有python和java的服务~~ :face_with_peeking_eye:

那个,你们用下来怎么样,是整体输出玩转的还是流式过程中转的

整体输出,大模型取到完整的输出结果以后再把文字内容发给百度云服务,然后他们会立即给你一个token id,后续你要用这个token id去轮询百度处理完没有,处理完的话就可以取结果用了。

好吧,只能跟产品说下最佳实现的情况了,如果产品非要分段去转的话,复杂度会差很多~~

先点赞,再了解你说的chatTTS

1 个赞