首页 > 作文

uniapp调用百度语音实现录音转文字功能

更新时间:2023-04-04 04:27:17 阅读: 评论:0

经历三天时间各种遇到困难 之后终于实现了这个功能,参照网上了许多文章 才找到一个能正常实现的方法,网上能找到的例子都不起作用,相信很多人困惑在这,为了避免别人出现这种情况,我分享我的代码,绝对可用,包括 uni秋季喝什么汤app前端使用了recordermanager和java端调用百度语音转文字,我相信很多人都很需要我写的东西,我只试验了安卓手机,html5 + 里面

plus.speech这个方式就不要用了,不好用,调用百度的语音识别时在百度的管理控制台会看到dev_id这个参数没传的错误也没找到添加这个参数的地方,所以在hbuildx里面当前项目的app模块配置这个地方不需要选

1.非常重要的一个步骤 manifest.json里面添加android.permission.record_audio这个权限,无论是想真机调试,由其是使用了自定义基座一定要在线打个包,让基座包含这个权限然后在手机系统 里面应用管理当前这个app的权限管理里面必须要看到有录音权限这一项

2.为了能够在使用recordermanager在进入要使用录音功能的页面会询问是否允许录音这样的权限,必须要使用recordermanager之前要调用一次硬件权限申请。这个在插件市场里面有一个/d/file/titlepic/plugin 这个地址 app权限判断和提示这样的js,用于判断或申请某个硬件权限使用的是native.js的功能。这个插件引入项目之后会在当前项目目录的js_sdk这样一个文件夹。在里面会出现wa-permission文件 夹下面会有一个permission.js,

3.相关代码

uniapp端代码

  <view class="popup-content" >                      <view>{{msg}}</view>                      <view>你在说{{voicetext}}</view>                      <button class="uni-btn"  type="warn" @touchstart="startvoice" @touchend="endvoice">按说语话松开停止</button>                      <button class="uni-btn"  type="warn" @tap="playvoice" >播放录音</button>      </view>  <script>  import permision from "@/js_sdk/wa-permission/permission.js"      const recordermanager = uni.getrecordermanager();      const inneraudiocontext = uni.createinneraudiocontext();  export default {       data() {      return {              voicetext:"",          msg:"",          voicepath:""         }     },    onload() {        this.initaudio()      },  methods: {     async initaudio(){                             //注意此处必须为 await 因为会触发异步事件,手机上会弹出权限申请对话框处理完才能走下一步录音                   let recordauth =  await permision.requestandroidpermission("android.permission.record_audio")                   console.log("判断有没有录音权限>>>>>>"+recordauth)                    if(recordauth==1){                                 recordermanager.onstart((res)=>{                                          console.log("开始 录音>>>>>>>>>...")                                      });                                 recordermanager.onstop((res)=>{                                      console.log("recorderstop....res.tempfilepath>>>"+res.tempfilepath)                                      this.voicepath = res.tempfilepath                                      this.uploadvoicefile()                                      // 使用uni.uploadfile上传到服务器上,此时是mp3格式                                  });                                   recordermanager.onerror( (res)=> {                                    console.log('onerror'+json.stringify(res));                                  });                    }               }, //initaudio 方法结束  祥安阁          startvoice(){                  console.log("开始录音")                  recordermanager.start({                      format:"mp3",                      samplerate: 16000 // 必须设置是后台设置的参数,不然百度语音识别不了                  });           },          endvoice(){                 console.log("结束录音")                //注意为了避免说话时间太短导致这个api出现bug要加一些延时               ttimeout(()=>{                  recordermanager.stop()               },1000)               },              playvoice(){                  console.log("点击playvoice")                  if (this.voicepath) {                      console.log("播放声音")                      inneraudiocontext.src = this.voicepath;                      inneraudiocontext.play();                  }              },              uploadvoicefile(){                  // this.msg = "调用java端服务文件路径"+this.voicepath                   uni.uploadfile({                  url: 'http://ip:端口/uploadfile(java端接收文件接口名)',                   filepath: this.voicepath,//录音结束后返回的临时路径,                  name: 'file',                  formdata: {                     dev_2017季中赛id:1537 //中文带标点                   },                  success: (uploadfileres) => {    会计从业资格考试卷                  let word = uploadfileres.data                      console.log("上传音频成功"+word);                  },                  fail: (res) => {                       console.log("上传音频失败"+json.stringify(res));      菠萝蜜的功效及禁忌            }                  });              }      }  }  </script> ```    //注意uploadfile 的url属性 这个地方ip不能是localhost或127,如果自已电脑启动java服务必须 是本机的真实ip如192.xxx这种,或者域名什么的,并且java端接口一定要支持跨域,很多人卡到这个ip上,我也是网上很难找到解决问题的贴子  注意filepath这个路径就是recordermanager的onstop事件就得到的_doc这种开头的路径,不需要加什么file:不是像网上某些人说的加这种东西

java端

pom里面需要引用两个包

            <dependency>              <groupid>com.baidu.aip</groupid>              <artifactid>java-sdk</artifactid>              <version>4.16.3</version>          </dependency>           <dependency>              <groupid>com.googlecode.soundlibs</groupid>              <artifactid>mp3spi</artifactid>              <version>1.9.5.4</version>          </dependency>    ``` import com.baidu.aip.speech.aipspeech;  import javazoom.spi.mpeg.sampled.file.mpegaudiofilereader;  import org.apache.commons.io.ioutils;  import org.json.jsonarray;  import org.json.jsonobject;   import org.springframework.web.bind.annotation.*;  import org.springframework.web.multipart.multipartfile;   import javax.sound.sampled.audioformat;  import javax.sound.sampled.audioinputstream;  import javax.sound.sampled.audiosystem;  import java.io.ioexception;  import java.io.inputstream;  import java.util.hashmap;   @restcontroller  @crossorigin(origins = "*")  public class baiduspeech {      //设置appid/ak/sk      public static final string app_id = ""; //去百度语音服务申请      public static final string api_key = "";//去百度语音服务申请      public static final string cret_key = "";//去百度语音服务申请       @requestmapping(value = "/uploadfile")      public string uploadfile( @requestparam("dev_id") int dev_id, @requestparam("file") multipartfile file) throws exception {          byte[] pcmbytedata = mp3convert2pcm(file.getinputstream());          hashmap<string,object> options = new hashmap<string,object>();          options.put("dev_pid",dev_id);//          jsonobject jsonfrombaidu =  basicbydata(pcmbytedata,"pcm",options);          jsonarray jsonarray =  jsonfrombaidu.getjsonarray("result");          string result =  jsonarray.getstring(0);          system.out.println(result); //解析完的结果           return result;      }      // 获取aipspeech对象,建议单例使用      public static aipspeech getclient() {          aipspeech client = new aipspeech(app_id, api_key, cret_key);          // 可选:设置网络连接参数          client.tconnectiontimeoutinmillis(2000);          client.tsockettimeoutinmillis(60000);          return client;      }       // 语音识别(来自文件)      public static jsonobject basicbydata(byte[] voicedata, string filetype,hashmap<string,object> options) {          aipspeech client = getclient();           return client.asr(voicedata, filetype, 16000, options);      }      /**       * mp3转换pcm       * @param inputstream mp3输入流       * @throws exception       */      public static byte[] mp3convert2pcm(inputstream inputstream) throws exception {          //转换pcm audioinputstream 数据          audioinputstream audioinputstream = getpcmaudioinputstream(inputstream);          byte[] pcmbytes = ioutils.tobytearray(audioinputstream);          return pcmbytes;      }       /**       * 获取pcm audioinputstream 数据       * @param inputstream mp3输入流       * @return audioinputstream pcm输入流       */      private static audioinputstream getpcmaudioinputstream(inputstream inputstream) {          audioinputstream audioinputstream = null;          audioformat targetformat = null;          try {              audioinputstream in = null;              mpegaudiofilereader mp = new mpegaudiofilereader();              in = mp.getaudioinputstream(inputstream);              audioformat baformat = in.getformat();              targetformat = new audioformat(audioformat.encoding.pcm_signed, baformat.getsamplerate(), 16,                      baformat.getchannels(), baformat.getchannels() * 2, baformat.getsamplerate(), fal);              audioinputstream = audiosystem.getaudioinputstream(targetformat, in);          } catch (exception e) {              e.printstacktrace();          }          return audioinputstream;      }   } ``` 

到此这篇关于uniapp调用百度语音实现录音转文字功能的文章就介绍到这了,更多相关uniapp录音转文字内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 04:27:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/bc65d61cb79ef4dd15db0b0741206b3c.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:uniapp调用百度语音实现录音转文字功能.doc

本文 PDF 下载地址:uniapp调用百度语音实现录音转文字功能.pdf

标签:权限   语音   很多人   路径
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图