精华内容
下载资源
问答
  • 微信小程序 讯飞语音 实现个人语音助手
  • //手指按下时 语音转文字 voiceToChar:function(){ var urls = app.globalData.slikToCharUrl; var voiceFilePath = that.data.filePath; if(voiceFilePath == null){ console.log("[Console log]:File path do not ...
  • 微信小程序实现文字转语音——插件:微信同声传译代码参考 代码参考 /* * A JavaScript For AudioContext And WechatSI , voice play * 注意事项:该函数需要小程序:”微信同声传译“ 插件支持,在微信公众平台-...
  • 小程序口令红包源码、微信语音口令红包、全套完整版源码、PHP语言开发、带有详细安装教程。 语音口令红包小程序源码/前端+后台PHP/开源/支持二次开发,ThinkPHP3.2新版推荐微信语音 小程序口令红包,发红包的同时还...
  • 公众号可将已关联的小程序添加到群发文章的正文中,点击后打开小程序。可自定义小程序卡片的标题和图片,指定小程序打开的页面。支持 ...       为了方便用户在阅读文章时使用公众号提供的服务,公众号群发文章...
  • 最近项目需求要在小程序添加一个即时通信IM的功能,本来想自己开发一个....评估了一下团队实力后,并不允许,所以找了一个IM第三方框架,采用的是腾讯云的即时通信IM,但是目前腾讯云IM的小程序SDK并没有包含UI,...
  • 微信小程序实现语音播报

    千次阅读 2021-01-20 17:00:05
    在微信公众平台配置,找到设置–第三方设置–插件管理–点击添加插件 搜索微信同声传译,点击添加,具体开发文档可以通过详情去查看 2.引入插件 在项目根目录app.json文件中配置 "plugins": { // 引入插件 ...
    1. 配置插件
      在微信公众平台配置,找到设置–第三方设置–插件管理–点击添加插件在这里插入图片描述
      搜索微信同声传译,点击添加,具体开发文档可以通过详情去查看
      在这里插入图片描述
      2.引入插件
      在项目根目录app.json文件中配置
    "plugins": {   // 引入插件
        "WechatSI": {     //   自定义的名字
          "version": "0.3.4",   // 引入插件的版本号
          "provider": "wx069ba97219f66d99"    // 引入插件的appID
        }
      }
    

    3.使用插件
    在要使用的页面的js文件上引入

    var myPlugin = requirePlugin('WechatSI');  // 引入插件
    Page({
      data: {
    
      },
      onReady: function () {
    	 this.innerAudioContext = wx.createInnerAudioContext();
    	 let that = this
    	 myPlugin.textToSpeech({   // 调用插件的方法
         	lang: 'zh_CN',
         	content:'语音播报测试',
          	success: function (res) {
              that.playAudio(res.filename);
          	},
         })
      },
      playAudio(e){
         this.innerAudioContext.src = e
         this.innerAudioContext.play();
      }
    })
    

    一个简单的语音播报功能就实现了,该插件还提供了语音输入、文本翻译功能,我主要是使用了它的语音合成功能,想了解更多可以去查看微信同声传译插件使用文档进行开发。

    展开全文
  • 1.发语音红包、问答红包、听语音领红包,问答...2.红包可添加广告,视频。图片、文字均可 3.可分享到红包广场,提高广告曝光度 4.可向商家收取广告费用 100%语音可识别 100%可以提现 100%客服消息正常 100%二维码生成正常
  • 配置答题库,可以发送文字或者语音提问,自动匹配问题的答案回答文字显示并且读出来。 如果有个性化的需要改造,修改样式就行,可以帮助修改。 效果图: 有问题,可以评论留言或者微信联系我。 实现代码: ...

    本文实现的功能:

    配置答题库,可以发送文字或者语音提问,自动匹配问题的答案回答文字显示并且读出来。

    相关文章:

    1.小程序聊天群,发送语音,文字,图片。

    2.微信小程序集成腾讯IM,实现实时音视频通话,1V1聊天

    3.云开发微信小程序聊天群

    4.接入网易云信IM即时通讯的微信小程序聊天室

    5.微信小程序聊天功能 WebSocket 实现发送文字,图片,语音以及WebSocket 常见问题解决方案

    6.[微信小程序]聊天对话(文本,图片)的功能(完整代码附效果图)

    如果有个性化的需要改造,修改样式就行,可以帮助修改。

    效果图:

    发送文字:

    发送语音:

    有问题,可以评论留言或者微信联系我。

    实现代码:

    const app = getApp();
    //引入插件:微信同声传译
    const plugin = requirePlugin('WechatSI');
    //获取全局唯一的语音识别管理器recordRecoManager
    const manager = plugin.getRecordRecognitionManager();
    const db = wx.cloud.database();
    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
        textInputTis:1,
        tis: '长按发送语音',
        //语音
        recordState: false, //录音状态
        content: '', //内容
        answer: '', //答案
        src: '', //答案语音
        // 当is_clock为true时识别
        is_clock: false,
        list: [{
          type: 2,
          src: '',
          text: '欢迎来到鄢电智能党务学习!',
        }]
      },
      // 发送消息
      sendOut(e) {
        var that=this
        console.log(1111, e)
        let text = e.detail.value
        if (text == '') {
          wx.showToast({
            title: '请输入聊天内容',
            icon: 'none',
          })
        } else {
          let arr = {
            type: 1,
            src: '',
            text: text
          };
          var a = that.data.list;
          a.push(arr)
          that.setData({
            content: text,
            list: a
          })
          this.answer()
        }
      },
      // 语音文字切换
      textInputTis(){
        console.log('this.data.textInputTis', this.data.textInputTis)
        if (this.data.textInputTis==1){
          this.setData({
            textInputTis:2
          })
        }else if (this.data.textInputTis == 2) {
          this.setData({
            textInputTis: 1
          })
        }
      },
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        // 
    
    
        //识别语音
        this.initRecord();
      },
      onReady() {
        //创建内部 audio 上下文 InnerAudioContext 对象。
        this.innerAudioContext = wx.createInnerAudioContext();
        this.innerAudioContext.onError(function (res) {
          console.log(res);
          wx.showToast({
            title: '语音播放失败',
            icon: 'none',
          })
        })
      },
      //识别语音 -- 初始化
      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('文件大小 --> ' + res.fileSize + 'B');
          console.log('语音内容 --> ' + res.result);
          if (res.result == '') {
            wx.showModal({
              title: '提示',
              content: '听不清楚,请重新说一遍!',
              showCancel: false,
              success: function (res) { }
            })
            return;
          }
          var text = res.result;
          text = text.replace(/[\ |\。|\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g, "");
          console.log('text', text)
          let arr = {
            type: 1,
            src: res.tempFilePath,
            text: res.result
          };
          var a = that.data.list;
          a.push(arr)
          console.log(333333333, a)
          that.setData({
            content: text,
            list: a
          })
          that.answer();
          that.bottom()
        }
      },
      // 匹配答案
      answer() {
        // console.log('list',this.data.list)
        var that = this
        let content = this.data.content
        db.collection("yuyin").where({
          daan: {
            $regex: '.*' + content + '.*',
            $options: '1'
          }
        }).get({
          success: res => {
            console.log('匹配', res)
            if (res.data.length == 0) {
              wx.showModal({
                title: '提示',
                content: '暂时没找到对应答案',
                showCancel: false,
                success: function (res) { }
              })
              return;
            }
            that.setData({
              answer: res.data[0].yuyin
            })
            this.wordYun()
          }
        })
      },
      bottom(){
        var that = this;
        this.setData({
          scrollTop: 100000
        })
      },
      // 答案文字转语音
      wordYun: function (e) {
        var that = this
        var that = this;
        let content = that.data.answer;
        plugin.textToSpeech({
          lang: "zh_CN",
          tts: true,
          content: content,
          success: function (res) {
            console.log(res);
            console.log("succ tts", res.filename);
            let arr = {
              type: 2,
              src: res.filename,
              text: content
            };
            var a = that.data.list;
            a.push(arr)
            that.setData({
              src: res.filename,
              list: a,
    
            })
            that.yuyinPlay();
            that.bottom()
    
          },
          fail: function (res) {
            console.log("fail tts", res)
          }
        })
      },
      // 点击并播放当前语音
      previewImage(e) {
        console.log(e)
        let src = e.currentTarget.dataset.src
        this.innerAudioContext.src = src //设置音频地址
        this.innerAudioContext.play(); //播放音频
      },
      //播放语音
      yuyinPlay: function (e) {
        if (this.data.src == '') {
          console.log('暂无语音');
          return;
        }
        this.innerAudioContext.src = this.data.src //设置音频地址
        this.innerAudioContext.play(); //播放音频
      },
      //语音  --按住说话
      touchStart: function (e) {
        console.log('长按')
        this.setData({
          recordState: true, //录音状态
          is_clock: true,
          startPoint: e.touches[0], //记录触摸点的坐标信息
          tis: '录音中...'
        })
        // 语音开始识别
        manager.start({
          lang: 'zh_CN', // 识别的语言,目前支持zh_CN en_US zh_HK sichuanhua
        })
      },
      //语音  --松开结束
      touchEnd: function (e) {
        console.log('结束')
        this.setData({
          tis: '长按发送语音'
        })
        // 语音结束识别
        manager.stop();
      },
      handleTouchMove: function (e) {
        //计算距离,当滑动的垂直距离大于25时,则取消发送语音
        if (Math.abs(e.touches[e.touches.length - 1].clientY - this.data.startPoint.clientY) > 25) {
          this.setData({
            is_clock: false //设置为不发送语音
          })
        }
      },
    })

    WXML

    <!-- 
    <view>{{content}}</view>
    <view>{{answer}}</view> -->
    <view class="bo">
      <scroll-view scroll-y="true" scroll-with-animation scroll-top="{{scrollTop}}">
    
        <block >
          <view class="body" wx:for='{{list}}' wx:key='index'>
    
            <view wx:if='{{item.type==1}}' class="right_body">
              <view class="flexRoe posRit">
                <view class="textBo">
                  <view class="dataTime">{{item.sendOutname}} {{item.dataTime}}</view>
                  <view wx:if="{{item.text!=''}}" class="ritTxt">
                    <image wx:if="{{item.src!=''}}" bindtap="previewImage" mode='widthFix' data-src='{{item.src}}' src="../../img/voice.png" class="textImg"></image>
                    <view>{{item.text}}</view>
                  </view>
    
                  <view wx:if="{{item.voice}}" class="ritTxt2" bindtap='my_audio_click' data-src='{{item.voice}}'>
                    <image class='my_audio' src='/img/play.png'></image>
                  </view>
                </view>
                <image class="head" style=" margin-left:20rpx " src="../../img/1.png"></image>
              </view>
            </view>
            <view wx:if='{{item.type==2}}' class="p_r left_body">
              <view class="flexRoe ">
                <image class="head" style=" margin-left:20rpx " src="../../img/2.png"></image>
                <view class="lfBo">
                  <view class="dataTime">{{item.sendOutname}} {{item.dataTime}}</view>
                  <view wx:if="{{item.text!=''}}" class="lftTxt">
                    <image wx:if="{{item.src!=''}}" bindtap="previewImage" mode='widthFix' data-src='{{item.src}}' src="../../img/voice.png" class="textImg"></image>
                    <view>{{item.text}}</view>
                  </view>
    
                  <view wx:if="{{item.voice}}" class="lftTxt2" bindtap='my_audio_click' data-src='{{item.voice}}'>
                    <image class='my_audio' src='/img/play.png'></image>
                  </view>
                </view>
              </view>
            </view>
          </view>
        </block>
      </scroll-view>
      <view class="jifBo" wx:if="{{tis=='录音中...'}}"> 
        <image src="../../img/111.gif" mode="widthFix"></image>
      </view>
      <view class="inp">
    
        <view class="p_r" wx:if="{{textInputTis==1}}">
          <view class='serac_img' catch:longpress="touchStart" catch:touchmove="handleTouchMove" catch:touchend="touchEnd">
            <view>{{tis}}</view>
            <image src='../../img/voice.png' mode="widthFix"></image>
          </view>
          <view class="yuyin" bindtap="textInputTis">文字</view>
        </view>
        <view class="p_r" wx:if="{{textInputTis==2}}">
          <input class="input" placeholder-class='plaCC' confirm-type="send" bindconfirm='sendOut' placeholder='聊天,在这里' value="{{title}}"></input>
          <view class="yuyin" bindtap="textInputTis">语音</view>
        </view>
      </view>
    </view>

    CSS

    page {
      background: #f2f2f2;
    
    }
    
    .top_bo {
      display: flex;
      background: white;
      flex-direction: row;
    }
    
    .top_bo view {
      flex: 1;
      font-size: 28rpx;
      text-align: center;
      border: 1rpx solid #ccc;
      line-height: 80rpx;
    }
    
    scroll-view {
      height: 90vh;
        overflow: hidden;
      padding-bottom: 30rpx;
      padding-top:50rpx;
    }
    
    .noList {
      background: white;
      margin-top: 30rpx;
      /* height: 230rpx; */
      width: 100%;
      /* padding-top: 25%; */
    }
    
    .noMsg {
      text-align: center;
      color: #999;
      font-size: 28rpx;
    }
    
    .inp {
      position: absolute;
      bottom: 0;
      width: 100%;
      background: white;
      height: 100rpx;
    }
    
    .inp input {
      background: #d0d0d0;
      border-radius: 15rpx;
      padding-left: 20rpx;
      height: 84rpx;
      margin-top: 10rpx;
      width: 75%;
      margin-left: 2%;
    }
    
    .yuyin {
      /* width: 60rpx */
      background: #00a9ec;
      border-radius: 15rpx;
      height: 84rpx;
      line-height: 84rpx;
      color: #fff;
      padding: 0 30rpx;
      margin-left: 10rpx;
      margin-top: 10rpx;
      text-align: center;
    }
    
    .prohibit {
      background: #d0d0d0;
      border-radius: 15rpx;
      padding-left: 20rpx;
      height: 84rpx;
      margin-top: 10rpx;
      width: 94%;
      margin-left: 2%;
      text-align: center;
      line-height: 84rpx;
      color: rgb(34, 34, 34);
    }
    
    .plaCC {
      margin-left: 5rpx;
    }
    
    .p_r {
      display: flex;
      flex-direction: row;
    }
    
    .flexRoe {
      display: flex;
      flex-direction: row;
    }
    
    .body {
      width: 100%;
      position: relative;
      /* border: 1rpx solid #ccc; *//* height: 200rpx */
    }
    
    .right_body {
      width: 100%;
      /* border: 1rpx solid red; */
      padding: 20rpx;
      /* margin-top: 50rpx; */
    }
    
    .left_body {
      /* margin-top: 50rpx; */
    }
    
    .posRit {
      right: 20rpx;
    }
    
    .textBo {
      width: 620rpx;
      text-align: right;
    }
    
    .lfBo {
      margin-left: 10rpx;
    }
    
    .ritTxt {
      background: #44426a;
      padding: 10rpx 20rpx 10rpx 20rpx;
      color: white;
      border-radius: 15rpx 0 15rpx 15rpx;
      margin-top: 20rpx;
      float: right;
      max-width: 500rpx;
      word-wrap: break-word;
      text-align: left;
      font-size: 28rpx;
    }
    
    .lftTxt {
      background: #44426a;
      padding: 10rpx 20rpx 10rpx 20rpx;
      color: white;
      border-radius: 0rpx 15rpx 15rpx 15rpx;
      margin-top: 20rpx;
      float: left;
      max-width: 500rpx;
      word-wrap: break-word;
      text-align: left;
      font-size: 28rpx;
    }
    
    .my_audio {
      height: 60rpx;
      width: 60rpx;
      z-index: 2;
      position: relative;
      top: 10rpx;
      left: 20rpx;
      margin-right: 30rpx;
    }
    
    .dataTime {
      font-size: 28rpx;
    }
    
    .textImg {
      width: 50rpx;
      margin-top: 5rpx;
    }
    
    .head {
      width: 80rpx;
      height: 80rpx;
    }
    
    ._ {
      height: 130rpx;
      width: 100%;
      background: #ccc;
    }
    
    .serac_img {
      width: 75%;
      display: flex;
      flex-direction: row;
      background: #d0d0d0;
      border-radius: 15rpx;
      padding-left: 20rpx;
      /* height: 84rpx; */
      margin-top: 10rpx;
      margin-left: 2%;
    }
    
    .serac_img view {
      width: 70%;
      text-align: right;
      line-height: 80rpx;
      color: #bfbfbf;
    }
    
    .serac_img image {
      width: 50rpx;
      margin-top: 25rpx;
    }
    .jifBo{
      position: absolute;
      top: 0;
      left: 0;
      background: rgba(0, 0, 0, 0.5);
      width: 100%;
      height: 100%;
    }
    .jifBo image{
      width: 40%;
      margin-left: 30%;
      margin-top: 50%;
      
    }

     

    展开全文
  • 我已经写好了后台代码,只要配置三个参数就能够使用。...3.注意你的小程序里定义的后台接口地址要带上/smart_order,否则不起作用 而且你使用的uploadFile函数必须要带上name:"wx_record",否则不能...

    我已经写好了后台代码,只要配置三个参数就能够使用。

     

    1.先在百度语音接口里创建一个应用,然后把三个参数填后台代码里。

    2.把代码放在阿里云后台里运行,注意我文件里使用的是3006端口,你的阿里云要开启

    3.注意你的小程序里定义的后台接口地址要带上/smart_order,否则不起作用

    而且你使用的uploadFile函数必须要带上name:"wx_record",否则不能使用

     

    如何把后台文件部署到阿里云上请参考:http://note.youdao.com/noteshare?id=80bbf1cee0ec93dd0d6ee2e3b64e8c6f

    最终效果:

     

     

    代码地址:https://download.csdn.net/download/weixin_42292991/11148595

    展开全文
  • 最近项目需求要在小程序添加一个即时通信IM的功能,本来想自己开发一个....评估了一下团队实力后,并不允许,所以找了一个IM第三方框架,采用的是腾讯云的即时通信IM,但是目前腾讯云IM的小程序SDK并没有包含UI,...
  • 娃娃语音合成 | 微信小程序源码,喜欢就下载吧。 正文: 用户管理 配音员的添加修改,设置推荐,设置配音员的试听文字。 首页轮播图支持。体验的小程序上暂时没有放出来,海报支持导流到其他的小程序,打开h5页面,...
  • 微信小程序+讯飞语音实现个人语音助手

    万次阅读 热门讨论 2018-05-19 11:36:10
    ​ 本案例主要 实现一个微信小程序语音助手,可以以提供的功能如下: 语音输入 返回结果 小程序 北京的天气 雨水将短暂停歇,最高气温回升至28℃。 语音播放 返回结果 讲个笑话 随机返回一个笑话 ...

    由于 上传图片过于麻烦,建议 跳转到
    github


    typora-copy-images-to: images

    1. 介绍

    ​ 本案例主要 实现一个微信小程序语音助手,可以以提供的功能如下:

    语音输入返回结果小程序
    北京的天气雨水将短暂停歇,最高气温回升至28℃。语音播放 返回结果
    讲个笑话随机返回一个笑话语音念出该笑话
    苹果百度百科返回“苹果”的百度百科资料语音念出该资料
    我想听电台返回实时电台列表信息自动播放电台

    理论上 讯飞技能商店中的所有功能 都可以实现。

    1526636801838

    1526636816672

    1526636827310

    1526636900445

    2. 主界面

    1526637275324

    3. 主要技术

    4. 环境要求

    • 外网的服务器
    • node 环境 本例为 v8.9.0
    • 讯飞语音的账号
    • 微信小程序开发者权限

    5. 搭建环境步骤

    5.1. 搭建FFmpeg

    ​ 由于讯飞要求的录音格式和微信小程序的语音格式不兼容,所以需要将微信小程序的语音格式进行转换,使用的工具为 FFmpeg 后期将在 node 中调用进行转换。

    ​ 需要注意的是,此操作需要在你的外网服务器上进行搭建。

    5.1.1. 下载

    在官方网站中进行下载即可 下载地址

    1526638560185

    1526638647535

    5.1.2. 配置环境变量

    ​ 下载好后,解压 配置 系统的环境变量

    1526638855004

    5.1.3. 测试安装是否成功

    ​ 配置好后,打开命令行工具 输入 ffmpeg 如出现下图结果,表示安装成功。

    1526638922938

    5.2. 搭建后台nodejs环境

    ​ 后台代码需要配置在 外网服务器下,如 阿里云,腾讯云等

    在后台代码根目录下 打开命令工具 输入:

    1. npm i 安装依赖

    2. 修改 讯飞 ID 和 密钥 (如何获取? 请查看 下面的 开通讯飞语音接口功能章节

      打开 index.js 修改

      1526639696874

    3. 输入 npm run start 启动项目

    4. 接口地址为 http://ip:3005/smart_order

      1526639896820

    5.3. 配置微信小程序环境

    5.3.1. 导入项目

    ​ 使用 微信开发工具 导入 微信前台代码

    1526639231234

    5.3.2. 成功导入

    1526639282967

    5.3.3. 修改接口地址

    1526693974841

    5.3.4. 注意

    ​ 在测试环境下,记得 勾选上 不校验域名xxxxxxx

    1526694730284

    5.4. 小结

    ​ 总结以上项目搭建的步骤

    1. 搭建 FFmepg

      ​ 打开命令行工具 输入 ffmpeg 出现以下结果代码成功

      1526694504641

    2. 启动后台 node

      1. 修改 讯飞ID 和 讯飞密钥
      2. 在后台根目录下 输入 npm run start 启动。 默认端口号为 3005
    3. 运行小程序代码

      1. 修改 后台接口地址
      2. 手机运行小程序进行测试。

    6. 开通讯飞语音接口功能

    ​ 本次案例中,我们输入的是一段录音 如 北京天气 这段录音将会发送到讯飞接口,由它 来解析

    • 将录音识别为 北京天气

    • 再将 北京天气 识别为 北京今天15度,微风xxx

      此过程,nodejs后台已经处理好,只需要填入 自己的讯飞资料即可。下面将介绍如何开通讯飞语音,并且进行相关的设置。

    6.1. 配置讯飞语音

    1. 打开 官网 进行注册
    2. 注册成功后 登录,再打开 讯飞 AIUI 开放平台
    3. 进入 我的应用
    4. 创建新应用 xxx
    5. 为新创建的应用 添加技能 (电台,笑话,广播等)
    6. 设置 ip 白名单 新手建议直接关闭 即可。
    7. 复制 该应用下的 AppID 和 ApiKey 复制到 nodejs 后台代码中即可。

    6.2. 配置讯飞语音详细步骤

    6.2.1. 注册

    ​ 打开注册页面 填入资料

    1526695861392

    6.2.2. 登录

    ​ 直接登录,然后跳转到 讯飞 AIUI 开放平台

    1526695985470

    6.2.3. 进入 我的应用

    ​ 进入 我的应用

    1526696077007

    6.2.4. 创建新应用

    ​ 因为我们这个案例 单独 创建一个应用, 名字自拟。

    1526696226864

    6.2.5. 为新应用添加技能

    ​ 本案例中的 天气、笑话、广播等 都是该应用中的一个技能,因此,需要自己先添加。

    ​ 点击进入 刚才新创建的应用 然后添加技能

    1526696650930

    小程序的处理代码,理论上,只要不断添加 case 代码 即可自己添加处理

    1526696673710

    6.2.6. 设置ip白名单

    ​ 在讯飞中设置ip白名单,否则会出现 ip非法 的错误

    1526696776387

    6.2.7. 复制 AppID 和 ApiKey 到后台nodejs中

    1526696912169

    7. 使用步骤

    ​ 当环境都搭建成功后,开始测试

    1526694984746

    8. 帮助

    ​ 因为本次案例,任何环节的操作失误都容易导致失败,并且在进行接口调试时,由于数据相对麻烦,因此在此给出一些建议。

    8.1. 调试

    ​ 进行调试时

    • 后台 需要经常监控,容易出现一次错误,后台 直接 崩溃
    • 小程序 多 log 打印结果进行调试

    8.2. 讯飞语音接口

    1526697175528

    1526697269908

    9. 联系方式

    ​ 如出现问题,直接在该页面下留言即可。看到会回复。

    展开全文
  • 小程序实现即时语音聊天功能

    千次阅读 2019-06-05 16:41:51
    1、用户在小程序咨询客服,有时候文字沟通不太清楚,如果能发语音沟通,就好了。 2、用户在公众号发了语音,客服能在手机上收听,以及能用语音去回复吗? 3、我没有小程序,也没有公众号,做了一个H5咨询链接,...
  • 微信小程序实现语音识别功能

    千次阅读 2020-10-27 18:33:06
    原标题:微信小程序实现语音识别功能使用小程序实现语音识别功能,由于语音识别可以直接使用各厂家的API接口,并且小程序为腾讯所有,因此考虑到可能的低延时,采用了腾讯提供的免费API接口,准确讲是腾讯语音的“一...
  • 一、小程序添加 “微信同声传译” 插件 添加插件步骤看这篇博===》如何添加插件并配置 二、代码编写 index.wxml里代码: <!--index.wxml--> <view class="container"> <textarea class="text">&...
  • 小程序实现文字转语音

    千次阅读 2020-12-28 15:29:17
    1、在微信公众平台登录小程序添加插件微信同声翻译 搜索微信同声翻译点击添加,即可进行开发 代码 index.html <view> <button class="showCharacter" bindtap="wordYun">跟我读</button> <...
  • 微信小程序腾讯云实时语音转写

    千次阅读 2020-03-12 15:29:54
    首先我们要添加腾讯云智能语音插件 步骤2: 插件文档地址: https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx3e17776051baf153&token=262289731&lang=zh_CN 按照文档步骤我们首先要对app.json...
  • 微信小程序websocket聊天前端实现,可以发语音、图片、文字。
  • 微信小程序学习用demo推荐:聊天室+音视频+添加内容+用图灵API实现了机器人聊天功能,另外实现了一些其他功能,可用于学习研究;
  • 原有的做法一般是先通过小程序的录音功能录下语音文件,然后再通过调用语音智能识别WebApi(比如百度云AI平台,科大讯飞平台)将语音文件转成文字信息,以上的做法比较繁琐且用户的体验性较差。 为解决此问题,微信...
  • 30分钟实现小程序语音识别

    千次阅读 2018-11-24 09:38:23
    为了参加某个作秀活动,研究了一波如何结合小程序、科大讯飞实现语音录入、识别的实现。科大讯飞开发文档中只出 Python 的 demo,并没有出 node.js 的 sdk,但问题不大。本文将从小程序相关代码到最后对接科大讯...
  • 1. 小程序后台添加插件:微信同声传译以及在app.json进行配置 具体可看另外一篇博客:https://blog.csdn.net/qq_41638795/article/details/98080498 ** 2. 代码实现 ** 页面如下: 21. wxml代码如下: <view ...
  • 面对面翻译小程序是微信团队针对中英文面对面沟通的场景开发的流式语音翻译小程序,基于微信同声传译插件封装实现,提供了中英文语音识别,文本翻译等功能。 预览 下载与使用 克隆代码 project.config.json 中的 ...
  • 微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 小程序WebSocket 常见问题:(本文已解决的) 1.自动断开链接,重连但是只能存在两个WebSocket 的问题。 ---1兼容情况:1.1 正常聊天过一...
  • 可以查看微信小程序api文档中 //添加音效 const innerAudioContext = wx.createInnerAudioContext() innerAudioContext.autoplay = true // 是否自动开始播放,默认为 false innerAudioContext.loop =false ...
  • 面对面翻译小程序是微信团队针对中英文面对面沟通的场景开发的流式语音翻译小程序,基于微信同声传译插件封装实现,提供了中英文语音识别,文本翻译等功能。 预览 下载与使用 克隆代码 project.config.json 中的 ...
  • 微信小程序文字转语音并播放

    千次阅读 2021-01-19 11:50:47
    在微信小程序中,识别语音转文字或者文字转语音,可以使用官方自带的插件:微信同声传译插件 使用方法: 第一步:首先登录微信公众平台,找到设置==》第三方设置,页面下面会出现插件管理,点击添加插件搜索“微信...
  • 微信小程序+百度语音识别+连接蓝牙模块+单片机控制灯光 前阵子朋友的毕业设计让我来帮他完成,本来自己手里项目已经够多,但是关系太铁,就帮他做了(其实就是他太菜),项目主要包含两个模块,微信小程序+单片机...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,698
精华内容 13,479
关键字:

给小程序添加语音