更新记录
1.0.6(2024-08-03)
新增:语音识别
1.0.5(2024-08-03)
修复:App 运行报错的问题
1.0.4(2024-08-02)
新增:时长播放参数
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 4.15 app-vue |
× |
√ |
√ |
√ |
√ |
√ |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
Attributes
参数 |
说明 |
类型 |
默认值 |
appkey |
阿里云appkey |
String |
- |
token |
阿里云token |
String |
- |
auto |
是否开启自动定时监听 |
Boolean |
false |
limitTime |
说话时长 |
Number |
5000 |
payTime |
语音播放时间 |
Number |
5000 |
Events
监听 |
说明 |
回调参数 |
appChange |
识别成功 |
识别结果 |
使用说明
- 在页面中引入组件;
- 在data中定义appkey和token;
- 在onReady中调用init方法;
- 点击机器人,开始聆听您的说话(auto=true 时自动执行);
- 当说话结束后,点击机器人,结束聆听(auto=true 时自动执行);
- 聆听结束后,会自动将您的说话内容转为文字,并显示在下方;
- 您也可以手动点击机器人,重新聆听。
注意事项:
- 本插件需要您自行申请appkey和token,并填入上方输入框中;
- 创建一个项目获得appkey 获取链接
- 临时Token 获取地址,建议后端获取,防止泄露,
示例代码
<template>
<view>
<view class="content">
<text class="text">{{content}}</text>
</view>
<!-- 录音文件版本识别(目前仅支持阿里云) -->
<mms-asr ref="asr" :appkey="appkey" :token="token" :auto="true" :limitTime="5000" ></mms-asr>
<!-- 实时语音识别(目前仅支持腾讯) -->
<!-- <mms-asr-socket ref="asr" appId="" secretKey="" secretId="" @change="change" uploadFile="false" ></mms-asr-socket> -->
</view>
</template>
<script>
export default {
data() {
return {
time: null,
content: "",
appkey: "s16qLe3Z4By6VSQd", //获取地址:https://nls-portal.console.aliyun.com/applist 创建一个项目获得
token: "2d9c747cae69436a912c8ef61b3e0e1d", // 建议后端获取,防止泄露,临时Token获取地址 :https://nls-portal.console.aliyun.com/overview
};
},
onLoad() {
},
onReady() {
var than = this;
this.$refs.asr.init();
uni.$on('appChange', function(data) {
console.log('监听到事件来自appChange:' + data);
than.content = data;
than.endMsg(data);
})
},
methods: {
open: function() {
this.$refs.asr.init();
},
change: function(content) {
console.log('语音识别确认结果:' + content);
if (content == null || content === undefined || content.length == 0) {
return;
}
this.content = content;
// 新的识别进来了
// 停止延时器
if (this.time) {
clearTimeout(this.time);
}
// 重新启动
this.time = setTimeout(() => {
this.$refs.asr.stop();
this.endMsg(content);
}, 1500);
},
fileChange: function({
file,
content
}) {
console.log('录音文件', file);
console.log('语音识别确认结果:' + content);
},
uploadFile: function(tempFilePath) {
return new Promise((resolve, reject) => {
//调用你的接口把音频文件转为文字
this.$minApi
.upload('txasr/SentenceRecognition', null, tempFilePath)
.then(res => {
if (res.code == 1) {
resolve(res.data.Result);
} else {
reject(e);
}
})
.catch(e => {
reject(e);
});
});
},
endMsg(content) {
const innerAudioContext = uni.createInnerAudioContext();
if (content === "小柯小柯。" || content === "小柯,小柯。" || content === "小柯。" || content === "小柯同学。" || content ===
"你是谁?") {
console.log('小科在...');
innerAudioContext.autoplay = true;
innerAudioContext.src = 'https://sxpcwlkj-test.oss-cn-hangzhou.aliyuncs.com/xk.mp3';
innerAudioContext.onEnded(() => {
console.log('结束播放');
this.$refs.asr.stop();
});
return;
}
if (content === "小科在...") {
return;
}
if (content == "退下。") {
this.$refs.asr.stop();
this.content = "";
return;
}
innerAudioContext.autoplay = true;
innerAudioContext.src =
'https://sxpcwlkj-test.oss-cn-hangzhou.aliyuncs.com/ttsmaker-file-2024-7-27-22-40-35.mp3';
innerAudioContext.onEnded(() => {
console.log('结束播放');
this.$refs.asr.stop();
});
}
}
};
</script>
<style lang="scss">
.content {
min-height: 100vh;
width: 98%;
background-color: #f8f4ff;
padding: 1%;
}
</style>