0


uniapp 开发H5页面,实现语音识别功能--前端,不包含后端转换

一、背景

微信小程序开发,内嵌h5页面,不能调用微信内部的插件

二、实现方式

通过安装** js-audio-recorder **插件实现既定需求

三、具体步骤

1、安装插件

npm i js-audio-recorder

2、引入

在需要使用的页面中引入:import Recorder from 'js-audio-recorder';

3、具体配置

1、定义recorder
data() {
        return {
            recorder: null
        };
},
2、页面加载时,初始化
onLoad() {
        this.recorder = new Recorder();
},
3、具体方法
methods:{
4、鼠标点击方法
startRecording() {
    this.recorder = new Recorder();
    Recorder.getPermission().then(
        () => {
            console.log('开始录音');
            this.titleShow = true;
            this.recorder.start(); // 开始录音
        },
        (error) => {
            uni.showToast({
                title: '请先允许该网页使用麦克风',
                icon:"error"
            });
            console.log(`${error.name} : ${error.message}`);
        }
    );
},
5、鼠标松开的方法
touchEnd() {
    this.yyShow = false;
    this.titleShow = false;
    const blob = this.recorder.getWAVBlob(); //调这个方法会自动调用stop
    const newbolb = new Blob([blob], { type: 'audio/wav' });
    this.blobToBase64(newbolb)
        .then((base64) => {
            7、调用后端接口
            this.$UniRequest.Post({
                url: this.$AppConfig.audio2text,
                para: {
                    audioBase64: base64
                },
                success: (res) => {
                    if (res.audiocont == 'null') {
                    uni.showToast({
                            title: '未识别到您的语音,请重试',
                            icon: 'error'
                        });
                        this.customerText = '';
                    } else {
                        this.customerText = res.audiocont;
                    }
                },
                fail: (err) => {
                    uni.showModal({
                        title: '提示',
                        content: err,
                        showCancel: false
                    });
                }
            });
        })
        .catch((err) => {
            console.error(err);
        });
},
6、音频转base64
blobToBase64(blob) {
    return new Promise((resolve, reject) => {
        const reader = new FileReader();
        reader.readAsDataURL(blob);
        reader.onload = () => {
            const base64 = reader.result.split(',')[1];
            resolve(base64);
        };
        reader.onerror = () => {
            reject(new Error('blobToBase64 error'));
        };
    });
    }
}
标签: uni-app 前端

本文转载自: https://blog.csdn.net/weixin_44431073/article/details/134808271
版权归原作者 一块西瓜皮啦 所有, 如有侵权,请联系我们删除。

“uniapp 开发H5页面,实现语音识别功能--前端,不包含后端转换”的评论:

还没有评论