当前位置:   article > 正文

uniapp实现语音识别_uniapp 语音识别

uniapp 语音识别

前言: 本篇文章主要是调用录音将录音文件传递给后端进行识别

app,微信小程序实现录音功能

使用的api - uni.getRecorderManager()

uni.getRecorderManager() | uni-app官网

api在H5是并不兼容的

按钮

  1. <!--按钮-->
  2. <view class="bottom flex-column">
  3. <view class="tip flex-column">请按住说话</view>
  4. <view class="btns flex-row">
  5. <view @touchstart="startSay" @touchend="endSay" class="button flex-column">
  6. <text class="iconfont icon-voice"></text>
  7. </view>
  8. </view>
  9. </view>

创建初始化事件和监听录音成功

  1. <script>
  2. // #ifdef MP-WEIXIN
  3. const recorderManager = uni.getRecorderManager();
  4. // #endif
  5. export default{
  6. data() {
  7. return {
  8. voicePath: '', //录音文件
  9. }
  10. }
  11. onLoad() {
  12. this.interValTime = 100
  13. let self = this;
  14. // #ifdef MP-WEIXIN
  15. recorderManager.onStop(function (res) {
  16. self.voicePath = res.tempFilePath;
  17. self.getData();
  18. });
  19. // #endif
  20. },
  21. methods: {
  22. let token = uni.getStorageasync('token')
  23. uni.uploadFile({
  24. url: 'resume/voiceToText',
  25. name: 'file',
  26. filePath: this.voicePath,
  27. header: {
  28. 'Authorization': `bearer ${token}`
  29. },
  30. success: (res) => {
  31. },
  32. fail: (err) => {
  33. }
  34. })
  35. }
  36. </script>

开始录音和停止录音

  1. startSay() {
  2. // #ifdef MP-WEIXIN
  3. recorderManager.start();
  4. // #endif
  5. },
  1. endSay() {
  2. // #ifdef MP-WEIXIN
  3. recorderManager.stop();
  4. // #endif
  5. },

H5实现录音功能

uniapp的原生api是不支持h5的,因此h5要进行录音,需要借助插件

插件是通过的,不仅是unipp,其他项目依旧可以使用

npm install recorder-core

使用

  1. // #ifdef H5
  2. import Recorder from 'recorder-core'
  3. import 'recorder-core/src/engine/wav.js'
  4. // #endif
  1. data() {
  2. return {
  3. rec: null
  4. }
  5. },
  6. onLoad() {
  7. // #ifdef H5
  8. this.initRecords()
  9. // #endif
  10. },
  1. initRecords() {
  2. var rec = this.rec = Recorder({
  3. type: "wav",
  4. bitRate: 16,
  5. sampleRate: 32000,
  6. });
  7. rec.open(() => {}, () => {
  8. uni.showToast({
  9. title: '获取手机录音权限失败',
  10. icon: 'none'
  11. })
  12. });
  13. },

 

  1. startSay() {
  2. // #ifdef H5
  3. if (!this.rec) {
  4. return;
  5. }
  6. this.rec.start();
  7. // #endif
  8. },
  9. endSay() {
  10. // #ifdef H5
  11. if (!this.rec) {
  12. return;
  13. }
  14. this.rec.stop((blob, duration) => {
  15. const file = new File([blob], 'record.wav', {
  16. type: blob.type
  17. })
  18. this.voicePath = file
  19. this.getData()
  20. })
  21. // #endif
  22. }

getData也是将文件上传给后端

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号