一、效果展示:
1.热搜显示:
2.搜索功能
3.图像识别
4.语音识别
二、实现功能
1.热搜显示。
2.利用文本搜索的功能。
3.图像识别功能。
4.语音识别功能。
三、实现步骤
1.首先,使用微信开发工具导入实验项目。开启微信云开发服务。
2. 注册百度智能云并实名认证百度智能云-管理中心 (baidu.com), 创建一个图像识别应用, 记录应用API KEY 和 SECRET KEY, 创建资源之后记得领取免费资源
3. 使用微信开发者工具创建一个云开发环境, 并复制环境ID
4. 添加百度API KEY \ SECRET 和 小程序appid, 云环境ID
5. 将实验代码部署到云服务平台
包括getHotItems、login、search、type的函数
// getHotItems
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const db = cloud.database()
try {
return await db.collection('trash').orderBy('click_times', 'desc').limit(20).get()
} catch (e) {
console.error(e)
}
}
// login
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
// search
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
const db = cloud.database()
try {
return await db.collection('trash').where({
name: db.RegExp
({
regexp: event._txt,
//从搜索栏中获取的value作为规则进行匹配。
options: 'i'
//大小写不区分
})}).get()
} catch (e) {
console.error(e)
}
}
// type
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const db = cloud.database()
try {
return await db.collection('type').get()
} catch (e) {
console.error(e)
}
}
6. 部署云数据库
7. 修改和更换部分代码
修改getBaiduToken函数:
getBaiduTaken: function () {
var that = this;
const tokenUrl = `https://aip.baidubce.com/oauth/2.0/token`;
wx.request({
url: tokenUrl,
method: 'POST',
dataType: "json",
header: {
'content-type': 'application/json; charset=UTF-8'
},
data:{
grant_type:"client_credentials",
client_id:that.data.apikey,
client_secret:that.data.apisecret,
},
success: function (res) {
console.log("【getBaiduTaken提示pass】", res);
that.setData({
baiduToken: res.data.access_token
})
},
fail: function (res) {
console.log("【getBaiduTaken提示fail】", res);
}
})
},
8.增加语音识别功能:
<!--在UI界面增加录音图标-->
<image src="../../images/lu.png" class="image-lu" bind:longpress="onLuYin"></image>
修改search.js中的代码,增加录音管理器和定时器,添加百度语音识别接口:
onLoad: function (options) {
this.setData({
kindList: getApp().globalData.kindList,
});
this.onPullDownRefresh();
this.data.recorderManager.onStart(() => {
console.log('录音开始');
});
this.data.recorderManager.onStop((res) => {
console.log('录音停止', res);
const { tempFilePath } = res;
this.setData({
audioFilePath: tempFilePath
});
// 获取Access Token并进行语音识别
getBaiduAccessToken().then(accessToken => {
return recognizeVoice(tempFilePath, accessToken);
}).then(resultText => {
wx.showModal({
title: '识别结果',
content: resultText,
showCancel: false
});
}).catch(err => {
console.error('语音识别失败', err);
wx.showToast({
title: '识别失败',
icon: 'none'
});
});
});
},
onLuYinStart() {
const options = {
duration: 60000,
sampleRate: 16000,
numberOfChannels: 1,
encodeBitRate: 192000,
format: 'aac',
frameSize: 50
};
this.data.recorderManager.start(options);
},
onLuYinStop() {
this.data.recorderManager.stop();
},
onLuYin() {
this.onLuYinStart();
}
四、遇到问题
描述实验过程中所遇到的问题,以及是如何解决的。有哪些收获和体会,对于课程的安排有哪些建议。
问题:在上传和部署云函数的过程中,出现Error: 请在编辑器云函数根目录(cloudfunctionRoot)选择一个云环境,创建云函数失败的问题。
解决方案:根文件夹右键,选择当前环境:development。
收获和体会:我学会了使用微信云服务大大简化了小程序开发的流程。开发者无需关注服务器运维和数据库管理等复杂技术,只需专注于业务逻辑开发即可。云函数、云数据库、云存储等功能的无缝集成,加快了开发速度,降低了维护成本,同时提高了应用的扩展性和稳定性