千家信息网

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

发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,这篇文章给大家分享的是有关uniapp如何调用百度语音实现录音转文字功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。经历三天时间各种遇到困难 之后终于实现了这个功能,参照
千家信息网最后更新 2024年11月12日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安全错误 数据库的锁怎样保障安全 200个线程需要多大服务器 从日志恢复数据库 公共场合网络安全 高港区多功能网络技术市场 网络安全服务培训心得 湖南长沙牛耳软件开发的地址 三明网络安全教育平台 青浦区品质金融网络技术服务热线 想不想修真各个服务器的大佬名称 类图里服务器 厂里网络安全 苹果自带哪些数据库软件 铠途互联网科技ceo 网络技术第一学期学什么 数据库中如何关闭文件传输 哥白尼气候变化服务中心数据库 网络电视服务器异常 浙江哪里有三维家软件开发 网络安全介绍ppt免费 虹口区市场软件开发厂家报价 闵行区网络技术咨询服务平均价格 网络安全属于国家安全中的 ftp服务器的优点 文件已在播放到设备服务器中打开 北京好的软件开发技术指导 如何把mdf附加到数据库 移动网络技术岗工资怎么样 aw服务器 我的世界服务器攻打指令 杭州智慧工会软件开发多少钱
0