记录一下,AI输出特定音色克隆+实时语音合成实验成功。
难点:
语音播放队列管理,这个是最难的。如果我多学一些算法知识,也许就不会苦恼于寻求合适的数据结构。
同源策略阻断,这个好麻烦,什么问题都有它。一开始尝试后端,但是rust访问端口方法非官方,结果始终不正确,所以干脆用js脚本在本地新开一个服务器,tauri内对其fetch,占用这么多端口有点不太好,看之后怎么优化
语音合成,利用了cosyvoice开源实验项目api而不是本地大模型,windows安装模型存在非常多依赖问题,没法解决,浪费很多时间和流量。
没有试音频的流式传输和播放,当前已经够麻烦了。
短板:
最大短板就是合成声音有延时(5-10秒),这很长了,你会看到结果输出完了,合成还没成功。不过因为请求合成和队列管理是异步并发,过了这10秒,就能流畅输出了。
然后就是请求并发太多会报错,毕竟这只是个实验环境。
解决短板的最好办法就是使用本地模型。我先前试过sparktts,如果硬件配置好,本地会比联网好些。而且,当前每次都需要发送被克隆音色的音频,实际上本机只需要克隆一次保存向量,之后需要直接调用,这样会快很多甚至有可能不会有延时问题。
接下来我可能会继续转向桌面通用组件编写和自定义桌面框架逻辑,如果有启发可能会去尝试优化3D模型的表现。这张网很宽松,它只是需要一点点收紧。
此方悬停