更新记录
1.0.0(2024-10-09)
下载此版本
优化
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
app-vue |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
<script>
// @ts-ignore
const recorderManager = uni.getRecorderManager();
import tool from './tool.js';
const { authForApp } = require('./appPermission.js');
// @ts-ignore
export default {
data() {
return {
// 填入secretKey和secretId就可以直接使用了
secretKey: 'V2X3d8ulhirvtkVFtPygTJa0Nl6bCHVe',
secretId: 'AKIDDYp3Nf0FR4vpeNzW9gK1oYSMCHONMKNB',
appId: '',
voicePath: '',
// 一句话录音结果
result: '',
// 更多参数参考腾讯文档,全部兼容
defaultData: {
EngSerViceType: '16k_zh',
SourceType: 1,
VoiceFormat: 'mp3',
Data: '',
DataLen: null
},
base64Header: {
mp3: 'data:audio/mpeg;base64,',
wav: 'data:audio/x-wav;base64,',
pcm: 'data:application/PCM;base64,'
}
};
},
onLoad() {
this.dealStop();
},
mounted() {
authForApp('麦克风权限');
},
methods: {
startRecord() {
console.log('开始录音');
// 录音类型要跟defaultData.VoiceFormat保存一致,pcm的情况下录音的入参要传大写PCM
recorderManager.start();
},
endRecord() {
console.log('录音结束');
recorderManager.stop();
},
async dealStop() {
recorderManager.onStop(async path => {
console.log('%c监听录音结束 Line:47 🍖 res', 'color:#465975', path);
// 获取临时路径
this.voicePath = path.tempFilePath;
console.log('%c Line:59 🍰 this.voicePath', 'color:#4fff4B', this.voicePath);
// 临时路径转base64
let base64 = await tool.pathToBase64(this.voicePath);
base64 = base64.replace(this.base64Header[this.defaultData.VoiceFormat], '');
console.log('%c Line:55 🌮 base64', 'color:#f5ce50', base64);
// base64录音内容
this.defaultData.Data = base64;
// 录音长度
this.defaultData.DataLen = uni.base64ToArrayBuffer(base64).byteLength;
console.log('%c Line:60 🍺 this.defaultData.DataLen', 'color:#2eafb0', this.defaultData.DataLen);
const { secretId, secretKey, defaultData } = this;
// 只需要传入secretId + secretKey +
// payload =》腾讯云一句话识别官方文档的入参
// 直接返回识别结果
const res = await tool.sendVoice({
secretId,
secretKey,
payload: defaultData
});
this.result = res.Response.Result;
console.log('%c Line:58 🍕 res', 'color:#3f7cff', res);
});
}
}
};
</script>