微信小程序-使用微信同声传译插件实现语音识别

2023-10-20 19:30

本文主要是介绍微信小程序-使用微信同声传译插件实现语音识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要

微信同声传译插件是微信自研的语音输入,文本翻译等功能的插件封装,用于提供给第三方小程序调用。
这里只使用此插件的语音输入功能实现语音识别,识别结果显示在输入框,并将识别结果传入后台进行查找,实现搜索功能。

效果图

在这里插入图片描述

添加同声传译插件

小程序管理后台-设置-第三方服务
在这里插入图片描述

目前最新版本为0.3.4
AppID:wx069ba97219f66d99
在这里插入图片描述

app.json

{..."plugins": {..."WechatSI": {"version": "0.3.4","provider": "wx069ba97219f66d99"}}
}

wxml

<!-- 搜索框 -->        
<view class="searchBox">        <input type="text" name="id" value="{{inputValue}}" />
</view><!-- 语音识别长按键 -->
<view class="{{voiceBtn}}" bindtouchstart="touchStart" bindtouchend="touchEnd">                    <image class="{{voiceStyle}}" src="/images/voice.png"></image>          <text>长按说话</text>        
</view>
<!-- 显示搜索到的垃圾 -->      
<view><view wx:for="{{garSearchList}}" wx:key="item"><view id="{{item.gar_id}}" class="{{searchGar}}">{{item.gar_name}}</view>        </view>      
</view>

js

//获取应用实例
const app = getApp();
//引入插件:微信同声传译
var plugin = requirePlugin("WechatSI")
//获取全局唯一的语音识别管理器recordRecoManager
let manager = plugin.getRecordRecognitionManager()
Page({  
data: {...
,
//微信插件同声传译实现语音识别  
//初始化  
initRecord: function() {    
var that = this;
//有新的识别内容返回,则会调用此事件
manager.onRecognize = function (res) {      
console.log("current result", res.result)
}    
//正常开始录音识别时调用    
manager.onStart = function (res) {
//提示录音开始
wx.showToast({
title: '开始录音',      
})      
console.log("成功开始录音识别", res)    
}    
//识别错误事件    
manager.onError = function (res) {      
console.error("error msg", res.msg)    
}    
//识别结束事件    
manager.onStop = function (res) {      
// console.log("record file path", res.tempFilePath)      
// console.log("result", res.result)            
if(res.result == ''){        
//录音内容为空时      
wx.showModal({
title: '提示',
content: '不好意思,典典没听清',
showCancel: false,
success: function (res) {}        
})
return;      
}     
else{       
//不为空时提示开始识别        
wx.showToast({
title: '正在识别',          
icon: 'loading'        
})        
var text = res.result.replace(/,/, ' ').replace(/。/gi, '');//正则去除识别结果结尾的句号        
//将识别结果显示在输入框        
that.setData({          
inputValue: text        
})        
//调用接口,将识别结果传入后台查找对应垃圾        
var apiRootPath = app.globalData.apiRootPath;  //全局变量表示接口根目录,在app.js的globalData声明
wx.request({          
url: apiRootPath + '文件名.php',          
data: {            
garbageName: text, //需要传入后台的字段
},          
header: {'content-type': 'application/x-www-form-urlencoded'},          
method: 'POST',          
dataType: 'json',          
responseType: 'text',          
//成功调用          
success: function (res) {
var resData = res.data;            
// console.log(resData);            
if (resData.status == "ok") { 
//判断请求状态是否ok              
if (resData.data == null) { 
//如果没有记录               ...
} 
else {
//有记录时
var resList = []; //记录保存到数组中                
//  console.log(resData);                
resData.data.forEach(function (item, index) {   
//item指数组中的每个元素值,index表示索引                  
//console.log(item);                  
resList.push(item);                
});                
that.setData({                  
garSearchList: resList,                  
...              
});              
}            
} 
...  
},          
...        
})//request结束      
}          
} 
},  
//按住说话  
touchStart: function(e){    
this.setData({//用来变换按钮样式
//录音状态      
voiceStyle: "voiceStyleDown"    
})    
//开始识别    
manager.start({      
lang: 'zh_CN',    //识别的语言,目前支持zh_CN en_US zh_HK sichuanhua
duration: 60000, //指定录音的时长,单位ms,最大为60000。如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音
})  
},  
//松开结束  
touchEnd: function(e){    
this.setData({//用来变换按钮样式         
voiceStyle: "voiceStyle"    
})
//结束识别    
manager.stop();  
},
})
onLoad() {    
var that = this;    
/*识别语音*/    
that.initRecord();  
},

我们的小程序

在这里插入图片描述

这篇关于微信小程序-使用微信同声传译插件实现语音识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/249236

相关文章

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式