小程序 实现发语音功能 语音转文字

小程序 实现发语音功能 语音转文字

  1. 小程序 后台设置 进入后台点击设置-》选择第三方设置—》点击添加插件-》搜索微信同声传译-》记录appid和版本号(后面会用到)
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. app.json中引入
  "plugins":{
    "WechatSI": {
      "version":"0.3.5",
      "provider":"wx066d99"
    }
  }
  1. 编写代码

wxml

  <input wx:if="{{currentInputType}}" class="input" bindinput="onInput" placeholder="请输入消息" value="{{inputValue}}" />
       <view wx:else class="voicebox" bindtouchstart="touchStart" bindtouchend="touchEnd">{{!recordState?'按住  说话':'松开  结束'}}</view>

js

//引入插件:微信同声传译
const plugin = requirePlugin('WechatSI');
//获取全局唯一的语音识别管理器recordRecoManager
const manager = plugin.getRecordRecognitionManager();
//识别语音 -- 初始化
   initRecord: function () {
    const that = this;
    // 有新的识别内容返回,则会调用此事件
    manager.onRecognize = function (res) {
      console.log(res)
    }
    // 正常开始录音识别时会调用此事件
    manager.onStart = function (res) {
      console.log("成功开始录音识别", res)
    }
    // 识别错误事件
    manager.onError = function (res) {
      console.error("error msg", res)
    }
    //识别结束事件
    manager.onStop = function (res) {
      console.log('..............结束录音')
      console.log('录音临时文件地址 -->' + res.tempFilePath); 
      console.log('录音总时长 -->' + res.duration + 'ms'); 
      console.log('录音总时长 -->' + Math.round(res.duration/1000) + 's'); 
      console.log('文件大小 --> ' + res.fileSize + 'B');
      console.log('语音内容 --> ' + res.result);
      if (res.result == '') {
        wx.showModal({
          title: '提示',
          content: '听不清楚,请重新说一遍!',
          showCancel: false,
          success: function (res) {}
        })
        return;
      }
    }
  },
  //语音  --按住说话
  touchStart: function (e) {
    const that=this;
    if(!that.data.isAgreeMic){
      that.checkRecordPermission();
      return;
    }
    that.startVoice();
  },
  startVoice(){
    const that=this;
    wx.showLoading({
      title: '录音中',
    })
    that.setData({
      recordState: true  //录音状态
    })
    // 语音开始识别
    manager.start({
      lang: 'zh_CN',// 识别的语言,目前支持zh_CN en_US zh_HK sichuanhua
    })
  },
  //语音  --松开结束
  touchEnd: function (e) {
    wx.hideLoading()
    this.setData({
      recordState: false
    })
    // 语音结束识别
    manager.stop();
  },
其实作为H5想要做语音识别,自认为还说有各种弊端得,同时还是微信公众号里面,如果小程序得话,或许会简单一点,但是这里是在公众号里面开,在这个过程中查阅个各种资料,其实里面得东西都大同小异,但是大多数并不全, 首先微信公众号里面得H5开语音录入,试过各种方法,由于是java渣渣,页面技术只是了解简单得,因此在使用标签得时候,本身并不能适用于当前得需求,因此最后只能选择了微信自带得录音功能,使用微信提供的接口,(具体得接口使用还是去看微信接口得使用) 由于使用微信得接口得话,首先要上传到它得服务器上面去(虽然也有本地得文件储存id,但是好像并没有用),这里就涉及到了一个serverid,这个值是存在于微信临时素材库得id,后期要用它来获取录音得文件。 通过微信提供得获取临时素材文件得接口,得到了文件(具体方法网上一搜一大堆,后期我也会将完整得代码放进资源里面),但是这里有一个坑得问题,他的格式为.amr得格式,但是最后的目的是换为文字,因此这里涉及到了格式换 主要用了现成得技术,也是通过下载资源获取得jar以及实现得方法,将.amr换为了MP3格式 然后就就是最后一部了,将mp3得音频文件换为文字,我这里用的是讯飞得技术,当然百度得也可以, 其实整个需求得这个流程已经完成了,但是不得不说里面遇到得坑,由于是渣渣,除了人们总说的,换为mp3得时候会报N/A得错误,我还遇到了unkowFormat这个错误。 这里只是记录一下自己在查询资料时没有一个符合自己需求得资料,同时也希望以后有这样需求得人,可以将思路捋的更加清楚,也可以进行交流.
要在微信小程序中利用腾讯云的实时文字语音服务,首先你需要安装腾讯云的SDK,并且注册并获取到对应的凭证。以下是基本步骤和一个简化的代码示例(请注意这只是一个基础框架,你还需要替换为实际的密钥和URL等): 1. 首先,引入必要的依赖: ```javascript const cloud = require('uni-cloud'); const textToSpeech = cloud.function(appid, secret); ``` 2. 调用腾讯云的文本语音API,这里假设你已经有了待换的文字内容和语言配置: ```javascript async function textToVoice(text, language) { try { const result = await textToSpeech({ .bizID: 'your_biz_id', // 你的业务ID text: text, voice: {type: language}, // 语言类型,比如 'zh-CN' format: 'audio/amr', // 输出音频格式,默认mp3 }); return result.data.result; } catch (error) { console.error('Error:', error); return null; } } ``` 3. 使用这个函数将文字换成语音: ```javascript Page({ async onLoad() { let text = "Hello, this is a test."; let voice = await textToVoice(text, 'zh-CN'); // 语言可根据需求更改 if (voice) { wx.downloadFile({ url: voice.url, // 腾讯云返回的音频文件地址 success: res => { // 下载成功后处理音频文件 }, fail: err => { console.error('Download failed:', err); } }); } else { console.error('Failed to generate voice.'); } }, }) ``` 注意:实际操作时,你需要在微信公众平台上申请并启用相应服务,并确保有正确的权限访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值