智能短视频前端预览功能的方案设计

需求描述

短视频要求前端可以进行预览,对我们而言,难点在于性能方面。因为前端预览是要语音播报的,但是语音的转换与合成(一个页面可能有多句语音)是比较耗费时间的,这样用户在预览的时候就得等待,导致体验不佳。

方案设计

文本转语音

采用语音部门的批量接口,一次发送多个语句过去进行转换。

合成方式

语音的转换是必须由后端处理的,这个省不了,因此我们的方案重点放在如何提升多个语音合成为一个语音的这个点上。

PS:语音偏移量的计算,是一个核心功能,且是一个独立的算法,这个可以抽取出来,供前后端复用。

后端合成

采用和之前一样的方案,后端计算偏移量之后,通过FFmpeg进行音频文件的合成,合并为一个mp3文件后,再将数据流返回给前端。

这种方案对于服务器的压力会大一些,因为是集中式计算。

前端合成

采用WebAssembly的方式,服务端只进行语音转换,一旦转换好就直接返回给前端;前端接受到语音文件后,执行偏移量计算逻辑,然后通过WASM方式调用FFmpeg进行合成。

这种方式将合成操作交给给用户端执行,属于分布式计算了,分担了服务端压力。

FFmpeg的WASM方式尚待尝试。

参考资料

FFmpeg的WASM:

https://github.com/ffmpegwasm/ffmpeg.wasm