微信小程序开发—语音功能

学习分享2年前 (2022)更新 bestcyt
627 0 0

以下代码块将实现语音转化为中文文字;

同声传译

大家好,我叫“微信同声传译”插件,是由微信智聆语音团队、微信翻译团队与公众平台联合推出的同传开放接口,可通过语音转文字、文本翻译、语音合成接口,为开发者赋能。
 

应用场景

场景1

英语口语、听力双管齐下,没有外教也能学好英语!
把我放在小程序里,我既可以将口语转为文字,也可以帮助用户判断发音是否标准纯正,是最佳听众和英语学习道路上的良师益友。

场景2

出国旅游,英语蹩脚怎么办?
这时我可以应用到翻译小程序里,说中文,译英文,再也不怕出国交流难。

场景3

看剧时想要吐槽!可是手里有零食,打字不方便怎么办?
只要在小程序里有我,用户就可以按住按钮说话,语音转文字,帮你发送弹幕!
 

添加插件

开发者可登录小程序后台管理,依次选择【设置】→【第三方服务】→【添加插件】→输入“同声传译”或者“语音识别”、“翻译”等搜索关键字搜索插件即可添加。
微信小程序开发—语音功能
 

util.js

根目录 util 文件夹创建 util.js

/**
 * 语音功能模块
 * 开发者登录小程序公众平台后台管理,【设置】→【第三方设置】→【添加插件】→输入“同声传译”进行添加
 */
const plugin = requirePlugin("WechatSI")
const innerAudioContext = wx.createInnerAudioContext();
innerAudioContext.onError((res) => {
    // 播放音频失败的回调s
})
function playTTS(text) {
    //need to add WXAPP plug-in unit: WechatSI
    plugin.textToSpeech({
        lang: "zh_CN",
        tts: true,
        content: text,
        success: function (res) {
            log("succ tts", res.filename)
            innerAudioContext.src = res.filename;
            innerAudioContext.play()
        },
        fail: function (res) {
            log("fail tts", res)
        }
    })
}
function stopTTS() {
    innerAudioContext.stop();
}

 

页面使用

<view class="gif-box">
    <view class="gif-box yuan-box" bindlongtap="longTap" bindtouchstart="touchStart" bindtouchend="touchEnd">
        <view class="line_01"></view>
        <view class="line_02"></view>
        <view class="line_03"></view>
        <view class="line_04"></view>
        <view class="line_05"></view>
    </view>
</view>
// 语音功能
const plugin = requirePlugin("WechatSI");
const manager = plugin.getRecordRecognitionManager();
Page({
    data: {
        hint: '请按下说话!', //语音提示文字
        showChuShiY: true,
        showLoader: false,
    },
    onLoad() {
    },
    // 触发长按事件
    touchStart(e) {
        // console.log('触发长按')
        let _that = this
        _that.setData({
            showLoader: true,
            hint: '请说,我在听',
        })
        manager.start({
            duration: 30000,    //最长录音时间,单位/毫秒
            lang: "zh_CN"       //中文
        })
    },
    // 长按事件过程
    longTap(e) {
        // console.log('长按开始')
    },
    // 长按松开事件
    touchEnd(e) {
        let _that = this
        // console.log('松开')
        clearInterval(this.interval)
        // 停止识别
        manager.stop()
    },
    onShow() {
        // 语音功能---1、有新的识别内容返回调用
        manager.onRecognize = (res) => {
            // console.log('语音功能开始')
        }
        // 语音功能----2、识别结束结果
        manager.onStop = (res) => {
            // console.log('语音功能开始-----',res.result)
        }
        // 语音功能----3、识别错误信息
        manager.onError = (res) => {
            if (res.retcode == -30001) {
                // console.log('30001---录音接口出错---没有授权录音请清空缓存重新登录授权');
            }
        }
    }
})

 

参数说明

通过获取全局唯一的语音识别管理器recordRecoManager实现 。

recordRecoManager 对象的方法列表:

方法 参数 说明
start options 开始识别
stop 结束识别
onStart callback 正常开始录音识别时会调用此事件
onRecognize callback 有新的识别内容返回,则会调用此事件
onStop callback 识别结束事件
onError callback 识别错误事件

更多态码详情https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx069ba97219f66d99&token=173844001&lang=zh_CN

© 版权声明

相关文章