广告
返回顶部
首页 > 资讯 > 精选 >uniapp如何调用百度语音实现录音转文字功能
  • 508
分享到

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

2023-06-22 04:06:38 508人浏览 八月长安
摘要

这篇文章给大家分享的是有关uniapp如何调用百度语音实现录音转文字功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。经历三天时间各种遇到困难 之后终于实现了这个功能,参照网上了许多文章 才找到一个能正常实现的方

这篇文章给大家分享的是有关uniapp如何调用百度语音实现录音转文字功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

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

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

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

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

相关代码

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要加一些延时               setTimeout(()=>{                  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_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 SECRET_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, SECRET_KEY);          // 可选:设置网络连接参数          client.setConnectionTimeoutInMillis(2000);          client.setSocketTimeoutInMillis(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);      }            public static byte[] mp3Convert2pcm(InputStream inputStream) throws Exception {          //转换PCM audioInputStream 数据          AudioInputStream audioInputStream = getPcmAudioInputStream(inputStream);          byte[] pcmBytes = IOUtils.toByteArray(audioInputStream);          return pcmBytes;      }             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 baseFormat = in.getFormat();              targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16,                      baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);              audioInputStream = AudioSystem.getAudioInputStream(targetFormat, in);          } catch (Exception e) {              e.printStackTrace();          }          return audioInputStream;      }   } ```

感谢各位的阅读!关于“uniapp如何调用百度语音实现录音转文字功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: uniapp如何调用百度语音实现录音转文字功能

本文链接: https://www.lsjlt.com/news/302432.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • uniapp调用百度语音实现录音转文字功能
    经历三天时间各种遇到困难 之后终于实现了这个功能,参照网上了许多文章 才找到一个能正常实现的方法,网上能找到的例子都不起作用,相信很多人困惑在这,为了避免别人出现这种情况,我分享我的...
    99+
    2022-11-12
  • uniapp如何调用百度语音实现录音转文字功能
    这篇文章给大家分享的是有关uniapp如何调用百度语音实现录音转文字功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。经历三天时间各种遇到困难 之后终于实现了这个功能,参照网上了许多文章 才找到一个能正常实现的方...
    99+
    2023-06-22
  • C#实现文字转语音功能
    本文实例为大家分享了C#实现文字转语音的具体代码,供大家参考,具体内容如下 客户提出要求,将文字内容转为语音,因为内网环境,没办法采用联网,在线这种方式,灵机一动,能否写一个简单的例...
    99+
    2022-11-13
  • C#如何实现文字转语音功能
    本文小编为大家详细介绍“C#如何实现文字转语音功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何实现文字转语音功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果图关键是,c#有现成的一个引用右键点击...
    99+
    2023-06-29
  • Android studio如何实现语音转文字功能
    这篇文章主要介绍了Android studio如何实现语音转文字功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、在科大讯飞的官网上注册并下载SDK首先去讯飞开...
    99+
    2023-06-29
  • 详解Androidstudio实现语音转文字功能
    目录一、在科大讯飞的官网上注册并下载SDK二、配置安卓项目三、运行效果展示一、在科大讯飞的官网上注册并下载SDK 1.首先去讯飞开放平台申请一个账号(https://www.xfyu...
    99+
    2022-11-13
  • vue实现文字转语音功能详解
    目前h5新增一个文字转语音的功能(但是正在完善中,勉强能用),h5新增的SpeechSynthesisUtterance实例 首先new一个SpeechSynthesisUttera...
    99+
    2022-11-13
  • Python调用讯飞语音合成API接口来实现文字转语音
    目录准备工作发送请求格式转换pydubFFmpeg准备工作 在编写代码和调用API之前,首先需要准备好以下项: 讯飞开放平台账户:用户可以免费注册讯飞开放平台,并创建应用程序,以获得...
    99+
    2023-05-17
    Python实现文字转语音 Python调用讯飞语音合成API接口
  • Python如何进行语音识别,语音转换功能实现
    Python如何进行语音识别,语音转换功能实现,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。相信大家都非常喜欢那些萝莉音,看那些女装大佬,开一个变声器声音实在是很有诱惑力,下面...
    99+
    2023-06-02
  • 电脑如何实现语音输入文字功能
    电脑实现语音输入文字功能主要依赖语音识别技术。下面是一种常见的实现方式:1. 麦克风:首先需要通过一个麦克风或者其他录音设备来获取语...
    99+
    2023-09-05
    电脑
  • 如何用PHP实现拼音转中文的功能
    PHP是一门非常流行的编程语言,它可以应用在Web开发、游戏开发、移动应用开发等领域。其中,拼音转中文也是PHP的一项常用功能。在本文中,我们将介绍如何使用PHP实现拼音转中文的功能。一、获取中文拼音首字母在实现拼音转中文之前,我们需要先获...
    99+
    2023-05-14
    php
  • 实例详解uniapp如何实现电话录音功能(附代码)
    本篇文章给大家带来了关于uniapp的相关知识,其中主要介绍了怎么用uniapp实现拨打电话并且还能同步录音的功能,感兴趣的朋友一起来看一下吧,希望对大家有帮助。uniapp 实现打电话录音功能最近需要实现一个通过 uniapp 调用手机拨...
    99+
    2023-05-14
    uni-app
  • 微信小程序语音转文字如何实现
    本篇内容介绍了“微信小程序语音转文字如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!    微信小程序语音转文字的...
    99+
    2023-06-26
  • 如何使用PHP实现中文转拼音的功能
    PHP是一门广泛应用于Web开发的编程语言,支持中文字符的处理是其中一个重要的特性。在中文字符的处理过程中,有一项常见的需求就是将中文字符转换成拼音,以及获取相应的拼音首字母。在这篇文章中,我们将介绍如何使用PHP实现中文转拼音的功能,并在...
    99+
    2023-05-14
  • 详解如何利用C#实现汉字转拼音功能
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-23
    C#汉字转拼音 C# 汉字 拼音
  • jQuery如何实现QQ空间汉字转拼音功能
    这篇文章主要介绍了jQuery如何实现QQ空间汉字转拼音功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:html:<!DO...
    99+
    2022-10-19
  • Python调用百度AI实现图片上文字识别功能实例
    目录简介步骤安装百度AI库注册百度AI开放平台调用glob库调用AipOcr库识别文字可能会遇到的问题批量操作总结简介 Python免费调用百度AI实现图片上面的文字识别 步骤 安装...
    99+
    2022-11-12
  • 如何使用CSS+jQuery实现一个文字转语音机器人
    这篇“如何使用CSS+jQuery实现一个文字转语音机器人”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用CSS+jQ...
    99+
    2023-07-04
  • 如何启动使用Win8语音识别功能实现无鼠标语音操作
      或许我们已经习惯了用鼠标在Windows系统中进行操作,但实际上Windows 8中自带的语音控制功能完全可以实现我们“无鼠标”语音操作。   如何启动语音识别功能   首先,用户需要准备一部...
    99+
    2023-06-04
    Win8 语音控制 无鼠标 鼠标 语音 功能
  • 利用java如何实现一个将中文转换成拼音的功能
    利用java如何实现一个将中文转换成拼音的功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。所需jar:pinyin4j-2.5.0.jarpublic sta...
    99+
    2023-05-31
    java 汉语 拼音
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作