最近在做一个小程序接入腾讯云语音合成的功能,目的是将文本转换为语音并播放。调用腾讯云服务后会返回给我们一个arraybuffer流数据,并不是一个直接可供播放的音频地址,那么在小程序端我们又如何进行转换最终获取到一个临时地址并播放呢?
请看如下代码:
//创建媒体控制对象
const audioContext = wx.createInnerAudioContext();
wx.request({
method: "POST",
url: "https://tts.cloud.tencent.com/stream",
header: {
"Content-Type": "application/json",
Authorization: Signature,
},
responseType: "arraybuffer", // 设置响应类型为 arraybuffer
data: params,
success(res) {
// 获取到响应的二进制数据
const arrayBuffer = res.data;
// 将 arrayBuffer 转为 base64 字符串
const base64String = wx.arrayBufferToBase64(arrayBuffer);
// 将 base64 字符串转为文件
const filePath = `${wx.env.USER_DATA_PATH}/${message.id}.mp3`;
wx.getFileSystemManager().writeFile({
filePath,
data: base64String,
encoding: "base64",
success(e) {
audioContext.src = filePath;
audioContext.play();
// 可以使用 filePath 进行后续操作,如播放音频或显示图像等
},
fa

9714

被折叠的 条评论
为什么被折叠?



