千家信息网

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

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇文章给大家分享的是有关uniapp如何调用百度语音实现录音转文字功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。经历三天时间各种遇到困难 之后终于实现了这个功能,参照
千家信息网最后更新 2024年11月14日uniapp如何调用百度语音实现录音转文字功能

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

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

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

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

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

3.相关代码

uniapp端代码

                        {{msg}}                      你在说{{voicetext}}                                                     ```    //注意uploadFile 的url属性 这个地方ip不能是localhost或127,如果自已电脑启动java服务必须 是本机的真实ip如192.xxx这种,或者域名什么的,并且java端接口一定要支持跨域,很多人卡到这个ip上,我也是网上很难找到解决问题的贴子  注意filePath这个路径就是recorderManager的onStop事件就得到的_doc这种开头的路径,不需要加什么file:不是像网上某些人说的加这种东西

Java端

pom里面需要引用两个包

              com.baidu.aip              java-sdk              4.16.3                                   com.googlecode.soundlibs              mp3spi              1.9.5.4              ``` 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 options = new HashMap();          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 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 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如何调用百度语音实现录音转文字功能"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

权限 语音 服务 功能 文件 参数 路径 文字 代码 地方 手机 语音服务 管理 输入 东西 事件 内容 基座 插件 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈利波特不同服务器能见面吗 软件开发服务属于技术开发吗 电信网络技术支持岗位职责 文创互联网科技 宁波网络安全准入控制系统推荐 湖南鲲鹏服务器产量如何 杭州交易软件开发代码 网络安全隐患通报的整改报告 北京专业服务器硬盘回收 数据库应用技术学习通答案 珠海戴尔服务器产品的基本常识 服务器制作绩效管理系统 网络安全审查打一生肖 试述数据库设计步骤 三级网络技术是题库吗 密云区咨询软件开发 蓝芯agv小车怎么连接服务器 软件开发中心上海开发部 系统软件开发的发展前景 idea打开远程服务器代码 东南大学网络安全录取 联想服务器机型 常宁市软件开发培训 金蝶加密服务器怎么用 什么叫数据库的性能 深圳市十分网络技术有限公司 优质的协同软件开发 关于网络安全的坏处 游戏app怎样开发软件开发 网络技术与应用学堂在线
0