文字转语音播放
刀刀
1/8/2025
0 字
0 分钟
文字语音播放功能最主要的是转为音频数据给 aduio
标签播放。
文字转音频数据
主要有两个方法:
- web api 兼容性问题
- 第三方库,以讯飞为例
主要实现步骤为:
- 浏览器把文本传给服务器,服务器通过
web socket
调用讯飞相应API - 讯飞返回
bytes
给服务器,服务器转base64
给浏览器,浏览器赋值给aduio
的src
注意:这里不可以直接让浏览器把文本传给讯飞第三方调用,原因有两个:
- 会造成跨域问题
- 调用第三方接口都需要 APPID、APP_Select、Ouath2,这些放到客户端会有安全隐患
优化
一段文本内容可能会很长,一次性传过去等待音频转换完毕可能会需要一段时间,如何优化也是重中之重。可以从以下几个方面入手。
断句
把一个长文本通过标点符号分割,使用栈来接收,如果遇到双引号或者双括号这种还需要去通过上下文去分割句子。
并发
从栈中三个三个的传过去,等待执行完毕后再传后续三个。而并发的数量也可以自行控制或通过网络速度来控制。
缓存
有一些相同的文字可以设置缓存减少接口请求消耗,而 localstorage
需要键和值。值为 base64
,键为相应的文字,通过转 md5 来控制文字长度相等。