腾讯IM web版本实现迅飞语音听写(流式版)
本文基于TUIKit Demo项目集成迅飞语音听写(流式版)功能:
主要代码:
// \src\TUIKit\components\TUIChat\message-input\index.vue
<template>
<!-- 录音按钮 -->
<div @touchstart.stop="touchstart" />
<!-- 输入框 -->
<MessageInputEditor ref="editor"/>
</template>
<script setup lang="ts">
// xf-voice代码请参考本文附件
import { IatRecorder } from './xf-voice'
let xfVoice = null
const getPermission = () => {
return navigator.mediaDevices.getUserMedia({ audio: true })
}
const initXFVoice = (webSocketUrl) => {
// 实例化迅飞语音听写(流式版)WebAPI
let times = null
xfVoice = new IatRecorder({
APPID: '填写自己的APPID',
webSocketUrl,
onWillStatusChange: function (oldStatus, newStatus) {
},
onTextChange: function (text, sliceText) {
//监听识别结果的变化
if(sliceText) {
xfVoiceWaiting.value = false
editor.value.setEditorContent(sliceText)
}
}
});
}
const touchstart = (event: any) => {
// 获取网页录音授权
getPermission().then(() => {
xfVoice?.start()
}, (error) => {
console.log(`${error.name} : ${error.message}`);
})
}
onMounted(() => {
// getXFVoiceAuthUrl请求获取webSocket鉴权地址,接口需要后端提供
getXFVoiceAuthUrl({}).then(res => {
if(res?.data?.code == 200) {
initXFVoice(res.data.data.url)
} else {
console.error('语音授权认证失败)
}
}).catch((e) => {
console.error(e)
})
})
</script>
对于uniapp 微信小程序版本的实现,后续文章会给出。