微信小程序将语音输入转化成文字

微信同声传译

微信同声传译插件是微信自研的语音输入,文本翻译等功能的插件封装,用于提供给第三方小程序调用。
官网地址:微信小程序同声转译

1.先在 app.json 里面进行配置

在与 pages tabbar 同一级的目录下进行配置:

"plugins": {
	"WechatSI": {
		"version": "0.3.4",
		"provider": "wx069ba97219f66d99"
	}
}
2.查看用户是否授权录音
// 用户是否授权录音
async handleRecord(){
	let scoped = await getSetting("scope.record");
	let scopedRecord = await scoped.authSetting('scpoe.record');
	if(scopedRecord === undefined){
		await authorize("scpoe.record")
	}
	if(scopedRecord === false){
		await openSetting();
	}
	if(scopedRecord === true){
		// 跳转到录音转换界面
		wx:navigateTo({
			url: "/pages/record/index"
		})
	}
}
3.录音
/* index.js */
// 同声传译
var plugin = requirePlugin("WechatSI");
let manager = plugin.getRecordRecognitionManager();
data: {
        recordText: "",
        isTouch: false,
        isLoading: false
},
// 标志位
lock: false;
// 初始化 这个插件
initTran(){
	let that = this;
    // 有新的识别内容返回,则会调用此事件
    manager.onRecognize = function(res) {
                console.log(res.result);
                // 标志位
                that.lock = false;
                let text = res.result;
                that.setData({
                    recordText: text,
                    isLoading: false
                })
     }
     // 识别结束事件
        manager.onStop = function(res) {
                console.log(res.result)
                    // 标志位
                that.lock = false;
                wx.vibrateShort({
                    success: () => {},
                    fail: () => {},
                    complete: () => {},
                })
                let text = res.result;
                that.setData({
                        recordText: text,
                        isLoading: false
                    })
                    // 如果用户没有说话就提示一下
                if (res.result === "") {
                    wx.showToast({
                        title: '您没有说话',
                        icon: 'none'
                    });
                    return;
                }
            }
},
// 按钮的长按事件
async streamRecord(){
	// 标志位
	this.lock = true;
	if(this.lock){
		// 开始识别
		manager.start({ lang: ""zh_CN });
		// 微信震动
		wx.vibrateShort({
			success(){},
			fail(){},
		})
		let isTouch = true;
            this.setData({
                isTouch
         })
	}
},
// 松开了
endStreamRecord() {
        if (this.lock) {
            // 关闭语音
            manager.stop();
            let isTouch = false;
            this.setData({
                isTouch,
                isLoading: true
            })
        }
 },
// 页面加载的生命周期函数
onLoad(){
	this.initTran();
}

下面是 .wxml 文件

<view class="text" wx:if="{{isLoading === true}}">正在玩命识别中...</view>
<view class="text" wx:else>{{isTouch === true ? "我正在听..." : recordText}}</view>

<view class="touch" bindlongpress="streamRecord"  catchtouchend="endStreamRecord">
    <view class="touchText">请按住后说话</view>
</view>

录音界面的截图
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值