小程序实现按下录音松开识别语音


Posted in Javascript onNovember 22, 2019

本文实例为大家分享了小程序按下录音松开识别语音的具体代码,供大家参考,具体内容如下

wxml

<view class='circle position-absol'>
    <text wx:if="{{!anmationShow}}" class='fz-12 fot-col block'>按住话筒说话,松开后自动识别文字</text>
    <text wx:if="{{anmationShow}}" class='fz-12 fot-col block'>松手为您匹配设计公司</text>
    <image bindtouchstart='startHandel' bindtouchend='endHandle' mode="widthFix" src="https://www.baidu.com/img/baidu_jgylogo3.gif" class='imgwh'></image>
    <view class='c2' wx:if="{{anmationShow}}"></view>
    <view class='c3' wx:if="{{anmationShow}}"></view>
</view>

wxss

.position-absol{
 width: 100%;
 text-align: center;
 position: absolute;
 bottom: 80rpx;
}
.imgwh{
 width:110rpx;
 height:110rpx;
}
.block{
 display:block;
}
/* 波浪动画 */
 .circle view {
   position:absolute;
   top:50%;
   left:50%;
   background:#FF5A5F;
   width:100px;
   height:100px;
   margin-left:-50px;
   margin-top:-25px;
   opacity:0;
   border-radius:90px;
   animation: 0.8s linear infinite;
   -webkit-animation: 0.8s linear infinite;
 }
 .circle view.c2 {
   -webkit-animation-name:c2;
   -webkit-animation-delay:.6s;
   -ms-animation-name:c2;
   -ms-animation-delay:.6s;
   -moz-animation-name:c2;
   -moz-animation-delay:.6s;
   -o-animation-name:c2;
   -o-animation-delay:.6s;
   animation-name:c2; 
   animation-delay:.6s; 
 }
 .circle view.c3 {
   -webkit-animation-name:c2;
   -webkit-animation-delay:1s;
   -ms-animation-name:c2;
   -ms-animation-delay:1s;
   -moz-animation-name:c2;
   -moz-animation-delay:1s;
   -o-animation-name:c2;
   -o-animation-delay:1s;
   animation-name:c2; 
   animation-delay:1s;
 }
 @-webkit-keyframes c2 {
   0% {
     -webkit-transform:scale(.622);
     -ms-transform:scale(.622);
     -moz-transform:scale(.622);
     -o-transform:scale(.622);
     transform:scale(.622);
     opacity:0
   }
   50% {
     -webkit-transform:scale(.822);
     -ms-transform:scale(.822);
     -moz-transform:scale(.822);
     -o-transform:scale(.822);
     transform:scale(.822);
     opacity:.4
   }
   98% {
     -webkit-transform:scale(1);
     -ms-transform:scale(1);
     -moz-transform:scale(1);
     -o-transform:scale(1);
     transform:scale(1);
     opacity:.2
   }
   100% {
     opacity:0
   }
 }
 @keyframes c2 {
   0% {
     -webkit-transform:scale(.622);
     -ms-transform:scale(.622);
     -moz-transform:scale(.622);
     -o-transform:scale(.622);
     transform:scale(.622);
     opacity:0
   }
   50% {
     -webkit-transform:scale(.822);
     -ms-transform:scale(.822);
     -moz-transform:scale(.822);
     -o-transform:scale(.822);
     transform:scale(.822);
     opacity:.4
   }
   98% {
     -webkit-transform:scale(1);
     -ms-transform:scale(1);
     -moz-transform:scale(1);
     -o-transform:scale(1);
     transform:scale(1);
     opacity:.2
   }
   100% {
     opacity:0
   }
 }

js

data:{
 anmationShow: false
}
 //按住按钮
 startHandel: function () {
  this.setData({
   sayimg: '/assets/image/demand/down.png',
   anmationShow: true,
  })
  console.log("开始")
  wx.getRecorderManager().start({
   duration: 10000
  })
  const self = this
  setTimeout(function () { 
   self.setData({
    sayimg: '/assets/image/demand/sea.png',
    anmationShow: false
   }) 
  }, 10000);
 },
 //松开按钮
 endHandle: function () {
  // clearTimeout()
  this.setData({
   sayimg: '/assets/image/demand/sea.png',//图片样式
   anmationShow: false,
  })
  console.log("结束")
  const recorderManager = wx.getRecorderManager()
  //录音停止函数
  var that = this;  
  wx.getRecorderManager().onStop((res) => {
   if (!this.data.inpvalue) {
    wx.showLoading({
     title: '语音识别中'
    })
   } 
   const { tempFilePath } = res; //这里松开按钮 会返回录音本地路径
   //上传录制的音频到服务器
   wx.uploadFile({
    url: '接口地址' + api.voice, //接口地址
    name: 'file', //上传文件名
    filePath: tempFilePath,
    success: function (res) { //后台返回给前端识别后的文字
     var model = res.data
     var modeljson = JSON.parse(model)
     if (modeljson.status_code == 500) {
      wx.showToast({
       title: '语音转换失败',
       image: '/assets/image/icon/fail@2x.png'
      })
      return false;
     }
     if (modeljson.meta.status_code === 200 && !modeljson.data.err_msg) {
      var saymessage = modeljson.data.message;
      wx.setStorageSync('sayinfo', saymessage)
      that.setData({
       inpvalue: saymessage
      })
      setTimeout(() =>{
       wx.navigateTo({
        url: '../loding/loding'
       })
       
      },2000)
      setTimeout(() => {
       wx.hideLoading();
      }, 100)
     } else if (modeljson.data.err_msg) {
      wx.showToast({
       title: '请大声说话',
       image: '/assets/image/icon/fail@2x.png'
      })
      return false;
     }
    }
   })
  })
  //触发录音停止
  wx.getRecorderManager().stop()
 },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
密码强度检测效果实现原理与代码
Jan 04 Javascript
input链接页面、打开新网页等等的具体实现
Dec 30 Javascript
JavaScript函数获取事件源的小例子
May 14 Javascript
js获取时间并实现字符串和时间戳之间的转换
Jan 05 Javascript
让图片跳跃起来  javascript图片轮播特效
Feb 16 Javascript
JavaScript实现数组降维详解
Jan 05 Javascript
vue实现留言板todolist功能
Aug 16 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
Dec 12 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
浅谈Webpack核心模块tapable解析
Sep 11 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
Aug 10 Javascript
小程序采集录音并上传到后台
Nov 22 #Javascript
webpack优化之代码分割与公共代码提取详解
Nov 22 #Javascript
小程序实现录音上传功能
Nov 22 #Javascript
vue使用recorder.js实现录音功能
Nov 22 #Javascript
微信小程序开发摇一摇功能
Nov 22 #Javascript
js实现录音上传功能
Nov 22 #Javascript
解决vue自定义全局消息框组件问题
Nov 22 #Javascript
You might like
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
Vue组件化开发思考
2018/02/02 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
python用来获得图片exif信息的库实例分析
2015/03/16 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
python 容器总结整理
2017/04/04 Python
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
numpy库reshape用法详解
2020/04/19 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
应届生求职推荐信
2013/10/28 职场文书
怎么写有吸引力的自荐信
2013/11/17 职场文书
医学专业五年以上个人求职信
2013/12/03 职场文书
药剂专业学生求职信范文
2013/12/28 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书