uniapp 微信小程序 收款方提示音 文字转语音朗读 同声传译
此处为个人记录,文章底部有写参考的代码地址,如有侵权,请私信删除。
- 第一步,添加插件,目前「微信同声传译」插件暂不支持个人主体小程序添加,只能非个人主体(如企业、个体户等)小程序添加。
- 第二步,获取插件的AppId之后,需要在你的uniapp里面的 manifest.json 做配置,打开源码视图,添加以下代码,如果插件未审核通过是会报错的。
// provider 的值是你在微信公众平台 -- 选择左下角你的头像 -- (触发hover) 选择账号设置 -- 选择 第三方设置 -- 插件管理,点击查看详情,后获取的AppId
// version 是插件的版本号 点击插件查看详情,基本信息里面有
"plugins": {
"WechatSI": {
"version": "0.3.6",
"provider": "wx069ba97219f66d99"
}
}
这里就直接贴代码了,我这里写的是点击事件,或者你自己做轮询或者WebSocket
这里就简单写一个收款的,canIUseWxAudio事件是因为 uni.createInnerAudioContext(),在IOS有些型号手机在静音模式下,播放没有声音
var plugin = requirePlugin("WechatSI");
const manager = plugin.getRecordRecognitionManager();
const paymentChange = () => {
const parameter = '20';
if (!canIUseWxAudio()) return; // 检查是否支持音频播放
plugin.textToSpeech({
lang: "zh_CN",
tts: true,
content: `支付宝到账${parameter}元`,
success: (res) => {
console.log("成功生成语音文件:", res.filename);
playAudio(res.filename);
},
fail: (res) => {
console.error("文本转语音失败:", res);
}
});
};
const canIUseWxAudio = () => {
const version = uni.getSystemInfoSync().SDKVersion;
if (compareVersion(version, '2.3.0') < 0) {
uni.showModal({
title: '提示',
content: '当前微信版本过低,手机开启静音模式下可能会导致播放音频失败。',
showCancel: false
});
return false; // 不支持音频播放
}
uni.setInnerAudioOption({
obeyMuteSwitch: false // 允许音频播放即使设备静音
});
return true; // 支持音频播放
};
const playAudio = (filename) => {
const music = uni.createInnerAudioContext(); // 创建播放器对象
music.src = filename;
music.play(); // 开始播放
music.onEnded(() => {
music.destroy(); // 播放结束后销毁播放器对象
});
};
/**
* 比较微信 SDKVersion
* @param {String} v1 版本字符串
* @param {String} v2 版本字符串
* @returns {Number} v1>v2,返回1;v1<v2,返回-1;v1==v2,返回0
*/
const compareVersion = (v1, v2) => {
const v1Parts = v1.split('.').map(Number);
const v2Parts = v2.split('.').map(Number);
const len = Math.max(v1Parts.length, v2Parts.length);
while (v1Parts.length < len) v1Parts.push(0);
while (v2Parts.length < len) v2Parts.push(0);
for (let i = 0; i < len; i++) {
if (v1Parts[i] > v2Parts[i]) return 1;
if (v1Parts[i] < v2Parts[i]) return -1;
}
return 0;
};
代码解释
-
paymentChange函数:- 这是主函数,用于生成语音并播放。首先定义了参数
parameter,表示到账金额。 - 调用
canIUseWxAudio函数检查当前环境是否支持音频播放。如果不支持,则直接返回。 - 使用
plugin.textToSpeech生成语音,成功时调用playAudio播放生成的音频文件,失败时输出错误信息。
- 这是主函数,用于生成语音并播放。首先定义了参数
-
canIUseWxAudio函数:- 此函数检查当前微信的 SDK 版本,以确定是否支持音频播放。
- 如果版本低于
2.3.0,则显示提示框并返回false,表示不支持音频播放。 - 如果支持,则设置音频选项
obeyMuteSwitch: false,允许在静音模式下播放音频,并返回true。
-
playAudio函数:- 创建一个内音频上下文
music,并将其源设置为生成的音频文件。 - 调用
play()方法开始播放音频。 - 在音频播放结束时,通过
music.destroy()销毁播放器对象,释放资源。
- 创建一个内音频上下文
-
compareVersion函数:- 用于比较两个版本字符串的大小。
- 将版本字符串分割为数组并转换为数字,确保比较时不受字符串格式的影响。
- 通过逐位比较返回相应的结果:1 表示第一个版本较大,-1 表示第二个版本较大,0 表示相等。