微信小程序使用同声传译实现语音识别功能

  我使用同声传译语音识别功能是为了实现微信小程序首页的语音搜索功能,如果你也是那么恭喜你,你可以ctrl+c、ctrl+v再改一改,如果你不是那么你也不要着急的走可以看完我的文章会对你有所帮助!

  首先是在微信公众平台(也就是小程序的后台),在左侧菜单栏中的设置-->第三方设置下的插件管理-->添加-->搜索同声传译-->点击添加

  接下来就是在代码中进行添加一些设置。

  如果你是使用微信开发者工具进行开发小程序的话,需要在app.json文件中添加一下代码。

// app.json
{
    ...
    "plugins": {
        ...
        "WechatSI": {
            "version": "0.3.4", // 这是同声传译的版本(也可以在微信公众平台添加的同声传译查看最新版本)
            "provider": "wx069ba97219f66d99" // 这是同声传译的ID
        }
    }
}

  如果你是使用 Hbuildex 进行开发小程序的话,需要在 manifest.json 文件的源码视图中进行添加修改。

  在源码视图中找到 mp-weixin,然后按照以下代码进行添加修改

// manifest.json
/* 小程序特有相关 */
"mp-weixin": {
    "appid": "xxxxxxxxxx", // 这是你小程序的AppId
    ...
    "plugins": {
        "WechatSI": {
            "version": "0.3.4", // 这是同声传译的版本(也可以在微信公众平台添加的同声传译查看最新版本)
            "provider": "wx069ba97219f66d99" // 这是同声传译的ID
        }
    }
}

  做完以上步骤之后,就可以根据官方文档进行开发了

  下面就是我的功能实现代码了

// index.vue 在这里我的页面布局只写了语音按钮(简化了)
<template>
    <div @click="yuyin" class="yuyin-icon">
        <img :src="baseUrlImg+'/yuyin.png'" alt="" class="img" />
    </div>
</template>
<script>
    export default {
        data() {
            return {
                // 这是搜索框中的内容
                search_word: ''
            }
        },
        methods: {
            // 语音点击事件
            yuyin: function() {
                var that = this
                // 向用户发起授权请求
                uni.authorize({
                    scope: 'scope.record', // 获取录音功能,也就是麦克风权限
                    success: (res) => {
                        // 用户授权使用麦克风权限调用语音搜索事件函数
                        that.plugin()
                    },
                    // 用户没有授权使用麦克风权限执行以下代码
                    fail(res) {
                        // 显示模态弹窗提示用户没有开启麦克风权限
                        uni.showModal({
                            content: '检测到您未开启麦克风权限,请保持麦克风权限为开启状态',
                            confirmText: '去开启',
                            showCancel: false,
                            success: (res) => {
                                console.log(res)
                                if(res.confirm) {
                                    // 调起客户端小程序设置界面,返回用户设置的操作结果
                                    uni.openSetting({
                                        success: (res) => {
                                            console.log(res)
                                            if(res.authSetting['scope.record'] == false) {
                                                that.plugin()
                                            }
                                        }
                                    })
                                } else {
                                    uni.navigateBack({
                                        delta: 1
                                    })
                                }
                            }
                        })
                    }
                })
            }
            // 语音搜索
            plugin () {
                var that = this
                var plugin = requirePlugin('WechatSI')
                var manager = plugin.getRecordRecognitionManager()
                // 设置录音的参数
                manager.start({
                    duration: 5000, // 时间
                    lang: "zh_CN" // 语言
                })
                // 开始录音
                manager.onStart = function(res) {
                    console.log("成功开始录音识别", res)
                    if(res.msg == 'Ok') {
                        // 提示用户正在录音
                        uni.showToast({
                            title: '正在识别语音...',
                            duration: 5000,
                            icon: 'loading'
                        })
                    }
                }
                // 录音结束
                manager.onStop = function(res) {
                    // 提示用户正在跳转到搜索页面(因为我做的时候,在跳转这块会有1~2秒的时间,所以我设置了一个提示框)
                    uni.showToast({
                        title: '正在跳转...',
                        duration: 1500,
                        icon: 'success'
                    })
                    // 将识别的语音翻译成文本
                    plugin.translate({
                        lfrom: 'en_US',
                        lto: 'zh_CN',
                        content: res.result,
                        success: function(res) {
                            if(res.retcode == 0) {
                                //  (iphone是这样,Android不清楚)语音识别有时会在末尾添加符号
                                if(res.result.charAt(res.result.length - 1) == '。' || res.result.charAt(res.result.length - 1) == '.') {
                                    res.result = res.result.substr(0, res.result.length - 1);
                                }
                                // 将翻译后的内容放到搜索框中
                                that.search_word = res.result
                                // 执行搜索功能的代码
                                that.searchName()
                            } else {
                                console.log('翻译失败', res)
                            }
                        },
                        fail: function(res) {
                            console.log('网络失败', res)
                            // 当用户说话声音小或者用户没有说话就会报这两个错误
                            if(res.retcode == -10001 || res.retcode == -10002) {
                                uni.showToast({
                                    title: '没有听清您说什么',
                                    duration: 1000,
                                    icon: 'error'
                                })
                            }
                        }
                    })
                }
                 // 打印错误信息
                manager.onError = function(res) {
                    console.error('error msg', res.msg)
                }
            }
        }
    }
</script>

到此这篇关于微信小程序使用同声传译实现语音识别功能的文章就介绍到这了,更多相关小程序语音识别内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 30分钟快速实现小程序语音识别功能

    前言 为了参加某个作秀活动,研究了一波如何结合小程序.科大讯飞实现语音录入.识别的实现.科大讯飞开发文档中只给出 Python 的 demo,并没有给出 node.js 的 sdk,但问题不大.本文将从小程序相关代码到最后对接科大讯飞 api 过程,一步步介绍,半个小时,搭建完成小程序语音识别功能!不能再多了! 当然,前提是最好掌握有一点点小程序.node.js 甚至是音频相关的知识.下面话不多说了,来一起看看详细的介绍吧 架构先行 架构比较简单,大伙儿可以先看下图.除了小程序,需要提供 3 个

  • 微信小程序实现语音识别转文字功能及遇到的坑

    最近为小程序增加语音识别转文字的功能,坑路不断,特此记录. 微信开发者工具 开发者工具上的录音文件与移动端格式不同,暂时只可在工具上进行播放调试,无法直接播放或者在客户端上播放 debug的时候发现,工具上录音的路径是http://tmp/xxx.mp3,客户端上录音是wxfile://xxx.mp3. 忽悠呢,不是格式不同,是映射路径不同. 其实做个兼容也不难,每次提示一行文字,很丑. 采样率与编码码率限制 每种采样率有对应的编码码率范围有效值,设置不合法的采样率或编码码率会导致录音失败.详细

  • 微信小程序通过websocket实时语音识别的实现代码

    之前在研究百度的实时语音识别,并应用到了微信小程序中,写篇文章分享一下. 先看看完成的效果吧 前置条件 申请百度实时语音识别key 百度AI接入指南 创建小程序 设置小程序录音参数 在index.js中输入 const recorderManager = wx.getRecorderManager() const recorderConfig = { duration: 600000, frameSize: 5, //指定当录音大小达到5KB时触发onFrameRecorded format:

  • 微信小程序和百度的语音识别接口详解

    介绍 因为项目需要,使用到了微信小程序和百度的语音接口 现在将项目中的一个小模块拿出来单独分享. 技术关键字 微微信小程序 百度语音接口 nodejs,express fluent-ffmegp 环境 windows 10 vs code 1.20.1 微信小程序开发工具 1.02.1802270 花生壳-提供域名和内容穿透-用于方便本地远程调试微信小程序 考虑到业务并不复杂,所以就将所有的代码都放在一个页面就可以了(wxml,wxss,js统称为一个页面) 文件目录 页面 index.wxml

  • 微信小程序使用同声传译实现语音识别功能

    我使用同声传译语音识别功能是为了实现微信小程序首页的语音搜索功能,如果你也是那么恭喜你,你可以ctrl+c.ctrl+v再改一改,如果你不是那么你也不要着急的走可以看完我的文章会对你有所帮助! 首先是在微信公众平台(也就是小程序的后台),在左侧菜单栏中的设置-->第三方设置下的插件管理-->添加-->搜索同声传译-->点击添加 接下来就是在代码中进行添加一些设置. 如果你是使用微信开发者工具进行开发小程序的话,需要在app.json文件中添加一下代码. // app.json {

  • 微信小程序 跳转传参数与传对象详解及实例代码

    微信小程序 跳转传参数 传对象 微信小程序跳转传参 一般都是传字符串到下一页,如果要想传对象怎么办呢? 我的解决办法是先将对象转换为json字符串然后到下个页面将json字符串,再转化为对象.如下: let str=JSON.stringify(e.currentTarget.dataset.item); wx.navigateTo({ url: '../toMybaby/babyDetail/babyDetail?jsonStr='+str, success: function (res) {

  • 微信小程序实现上传多个文件 超过10个

    本文实例为大家分享了微信小程序实现上传多个文件超过10个的具体代码,供大家参考,具体内容如下 [小程序笔记]wx.uploadFile(OBJECT) 先说说遇到的问题: 小程序可通过wx.uploadFile(OBJECT)接口上传手机文件至服务器,但是在文档中关于请求中有这么一段说明: request.uploadFile.downloadFile 的最大并发限制是 10 个 意思就是这三个接口请求并发数不能超过10个,否则报以下错误 uploadFile:fail exceed max u

  • 微信小程序图片上传组件实现图片拖拽排序

    目录 引言 首先来看效果 组件设计 使用方式 总结 引言 图片上传组件是一个组件库目前来看必不可少的功能了.笔者近日给自己开源的toy工具库也添加了这一功能.相比原生和大部分组件库来说,它不仅支持长按提示删除,还能够支持图片的拖拽排序,很是nice! (也是为了毕设时身边同学能够更快上手小程序,更加将中心侧重于逻辑和设计) 本文我将继续介绍组件的设计思路: 首先来看效果 对于组件内部来说.笔者提供了一个参数去让开发者决定是否应该在场景中支持拖动排序.这里略去这些无关代码. 拖拽排序功能使用了微信

  • 微信小程序事件绑定传参冒泡及捕获的示例详解

    目录 常见的事件有: currentTarget和target的区别 事件传递参数 touches和changedTouches的区别 事件的绑定两种方法 事件传参 事件的冒泡与事件的捕获 小结 常见的事件有: 类型 触发条件 最低版本 touchstart 手指触摸动作开始   touchmove 手指触摸后移动   touchcancel 手指触摸动作被打断,如来电提醒,弹窗   touchend 手指触摸动作结束   tap 手指触摸后马上离开   longpress 手指触摸后,超过35

  • 微信小程序canvas拖拽、截图组件功能

    先看下微信小程序canvas拖拽功能 组件地址 github.com/jasondu/wx-- readme近期补上 实现效果 如何实现 使用canvas 使用movable-view标签 由于movable-view无法实现旋转,所以选择使用canvas 需要解决的问题 如何将多个元素渲染到canvas上 如何知道手指在元素上.如果多个元素重叠如何知道哪个元素在最上层 如何实现拖拽元素 如何缩放.旋转.删除元素 看起来挺简单的嘛,就把上面这几个问题解决了,就可以实现功能了:接下来我们一一解决.

  • 微信小程序利用canvas 绘制幸运大转盘功能

    小程序对 canvas api 跟h5的不太一致 ,所以这个搞的比较久,不多说,先贴代码 Page({ /** * 页面的初始数据 */ data: { awardsConfig: {}, restaraunts: [], //大转盘奖品信息 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var self = this; wx.getSystemInfo({ //获取系统信息成功,将系统窗口的宽高赋给页面的宽高 success:

  • 如何利用微信小程序和php实现即时通讯聊天功能

    目录 一.PHP7安装Swoole扩展 1.自定义安装 2.宝塔面板安装PHP swoole扩展 二.配置nginx反向代理 三.微信小程序socket合法域名配置 四.效果演示和代码 1.小程序端代码 2.服务端代码(PHP代码) 五.代码已经编写完了 总结 一.PHP7安装Swoole扩展 PHP swoole 扩展下载地址 Github:https://github.com/swoole/swoole-src/tags php官方扩展库:http://pecl.php.net/packag

  • 微信小程序实现action-sheet弹出底部菜单功能【附源码下载】

    本文实例讲述了微信小程序实现action-sheet弹出底部菜单功能.分享给大家供大家参考,具体如下: 1.效果展示 2.关键代码 ① index.wxml <button type="default" bindtap="actionSheetTap">弹出action sheet</button> <action-sheet hidden="{{actionSheetHidden}}" bindchange=&qu

  • 微信小程序使用progress组件实现显示进度功能【附源码下载】

    本文实例讲述了微信小程序使用progress组件实现显示进度功能.分享给大家供大家参考,具体如下: 1.效果展示 2.关键代码 index.wxml 复制代码 代码如下: <progress percent="100" color="blue" stroke-width="20" show-info active/> progress组件属性说明如下: 感兴趣的朋友可以逐一尝试上述属性设置的具体用法. 3.源代码点击此处本站下载. 关

随机推荐