【百度语音识别】JavaAPI方式语音识别示例MP3转PCM

Java-API合成语音示例:http://ai.baidu.com/forum/topic/show/496727

REST-API文档地址:http://ai.baidu.com/docs#/TTS-API/top

注意:需要下载MP3插件jar。才可以进行MP3CONVERTPCM 链接: https://pan.baidu.com/s/1i5pJxpb 密码: 8w4x

遇到的坑:HTTPUtil工具类中。不需要拼接access_token参数。大家注意一下。ContentType也改一下。

----------------------------------开始代码示例----------------------------------

MP3转PCM的方法 需要下载注意的jar才可以正确转换哦

第一步就是语音合成的MP3文件转换PCM格式文件

packagecom.xs.audio.tns;importjava.io.File;importjava.io.FileOutputStream;importjava.io.OutputStream;importjavax.sound.sampled.AudioFormat;importjavax.sound.sampled.AudioInputStream;importjavax.sound.sampled.AudioSystem;/**

* MP3转PCM Java方式实现

* @author 小帅丶

* @date 2017年12月6日

*/publicclassMP3ConvertPCM{/**

* MP3转换PCM文件方法

* @param mp3filepath 原始文件路径

* @param pcmfilepath 转换文件的保存路径

* @throws Exception

*/publicstaticvoidmp3Convertpcm(String mp3filepath,String pcmfilepath)throwsException{Filemp3=newFile(mp3filepath);Filepcm=newFile(pcmfilepath);//原MP3文件转AudioInputStreamAudioInputStream mp3audioStream=AudioSystem.getAudioInputStream(mp3);//将AudioInputStream MP3文件 转换为PCM AudioInputStreamAudioInputStream pcmaudioStream=AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED,mp3audioStream);//准备转换的流输出到OutputStreamOutputStream os=newFileOutputStream(pcm);intbytesRead=0;byte[]buffer=newbyte[8192];while((bytesRead=pcmaudioStream.read(buffer,0,8192))!=-1){os.write(buffer,0,bytesRead);}os.close();pcmaudioStream.close();}}

HttpUtil工具类新增加一个postASR的方法

/**

* 获取语音识别内容

* @param requestUrl

* @param params

* @return

* @throws Exception

*/publicstaticStringpostASR(String requestUrl,Stringparams)throwsException{System.out.println(params);String generalUrl=requestUrl;//这里不需要对接口地址拼接access_token参数 切记!!!System.out.println("发送的连接为:"+generalUrl);URL url=newURL(generalUrl);// 打开和URL之间的连接HttpURLConnection connection=(HttpURLConnection)url.openConnection();System.out.println("打开链接,开始发送请求"+newDate().getTime()/1000);connection.setRequestMethod("POST");// 设置通用的请求属性connection.setRequestProperty("Content-Type","application/json");connection.setRequestProperty("Connection","Keep-Alive");connection.setUseCaches(false);connection.setDoOutput(true);connection.setDoInput(true);// 得到请求的输出流对象DataOutputStreamout=newDataOutputStream(connection.getOutputStream());out.writeBytes(params);out.flush();out.close();// 建立实际的连接connection.connect();// 获取所有响应头字段Map>headers=connection.getHeaderFields();// 遍历所有的响应头字段for(String key:headers.keySet()){System.out.println(key+"--->"+headers.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReaderin=null;if(requestUrl.contains("nlp"))in=newBufferedReader(newInputStreamReader(connection.getInputStream(),"GBK"));elsein=newBufferedReader(newInputStreamReader(connection.getInputStream(),"UTF-8"));String result="";String getLine;while((getLine=in.readLine())!=null){result+=getLine;}in.close();System.out.println("请求结束"+newDate().getTime()/1000);System.out.println("result:"+result);returnresult;}

下面就是语音识别的示例代码哦

packagecom.xs.audio.tns;importjava.io.File;importjava.util.HashMap;importcom.xs.util.baidu.Base64Util;importcom.xs.util.baidu.FileUtil;importcom.xs.util.baidu.HttpUtil;importcom.xs.util.baidu.RandomStringGenerator;/** * 语音识别Java-API JSON上传方式示例代码 *@author小帅丶 * */publicclassAudio2Text{//接口地址privatestaticfinalString AUDIO2TEXT_URL="http://vop.baidu.com/server_api";publicstaticvoidmain(String[]args)throwsException{//合成的MP3语音文件String path="C:/Users/Administrator/text2audio/VOICE1512521962.mp3";//MP3转pcm要保存的路径和文件名String path2="C:/Users/Administrator/text2audio/VOICE1512521962.pcm";MP3ConvertPCM.mp3Convertpcm(path,path2);// 对语音二进制数据进行识别byte[]data=FileUtil.readFileByBytes(path2);//readFileByBytes仅为获取二进制数据示例String speech=Base64Util.encode(data);File file=newFile(path2);longlen=file.length();String result=Audio2text("pcm",16000,RandomStringGenerator.getRandomStringByLength(60),"自己获取的AccessToken",speech,len);System.out.println(result);}/** * JSON方式上传 *@paramformat必填语音文件的格式,pcm 或者 wav 或者 amr。不区分大小写。推荐pcm文件 *@paramrate必填采样率, 8000 或者 16000, 推荐 16000 采用率 *@paramchannel必填声道数,仅支持单声道,请填写固定值 1 *@paramcuid必填用户唯一标识,用来区分用户,计算UV值。建议填写能区分用户的机器 MAC 地址或 IMEI 码,长度为60字符以内。 *@paramtoken必填开放平台获取到的access_token, 见上面的“鉴权认证机制”段落 *@paramlan选填语种选择,默认中文(zh)。 中文=zh、粤语=ct、英文=en,不区分大小写 *@paramurl选填可下载的语音下载地址,与callback连一起使用,确保百度服务器可以访问。 *@paramcallback选填用户服务器的识别结果回调地址,确保百度服务器可以访问 *@paramspeech选填本地语音文件的的二进制语音数据 ,需要进行base64 编码。与len参数连一起使用。 *@paramlen选填本地语音文件的的字节数,单位字节*/publicstaticStringAudio2text(String format,Integer rate,String cuid,String token,String speech,longlen)throwsException{HashMapparamMap=newHashMap();paramMap.put("speech",speech);paramMap.put("format",format);paramMap.put("rate",rate);paramMap.put("channel",1);paramMap.put("cuid",cuid);paramMap.put("token",token);paramMap.put("len",len);net.sf.json.JSONObject params=net.sf.json.JSONObject.fromObject(paramMap);String data=HttpUtil.postASR(AUDIO2TEXT_URL,params.toString());System.out.println("语音文件识别的内容:"+data);returndata;}}

看看返回的内容

{"corpus_no":"6496262443167631439","err_msg":"success.","err_no":0,"result":["开发者小帅你好,"],"sn":"74778487111512528965"}

以上就是语音识别Java-API调用示例代码哦。难点是MP3转PCM会卡壳开发者们。

作者:小帅丶简书

链接:https://www.jianshu.com/p/1b5131398687

百度语音识别JAVA代码_【百度语音识别】JavaAPI方式语音识别示例MP3转PCM相关推荐

  1. 百度人脸java项目_百度人脸识别java 示例源码

    [实例简介]三行代码助你跑通百度人脸对比 [实例截图] [核心代码] /** * @author wl * @date 2019/12/6. */ import config.Base64Util; ...

  2. php百度登录完整代码_百度熊掌号专业问答PHP方式推送完整代码(附说明)

    对于百度熊掌号专业问答的URL推送,百度提供了多种URL推送方式,之前详细写过怎样通过CURL命令方式推送,但是后来百度修改了api地址,URL中出现了汉字,CURL方式推送就会报错,下面php中文网 ...

  3. 关于GPS坐标转百度坐标与goolg坐标转百度坐标java代码实现方法

    关于GPS坐标转百度坐标与goolg坐标转百度坐标java代码实现方法 百度显示坐标经过了两次加密所以需要转换. <pre name="code" class="j ...

  4. java百度地图逆地址解析_百度地图逆地址解析

    什么是Geocoding? Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# .C++.Java等开发语言发送HTTP ...

  5. java 百度api接口开发_百度熊掌号使用Java工具类对接API推送接口进行文章推送实例详解...

    对于java程序员来说,自己运维的百度熊掌号当然得使用java的方式去每天推送文章了.目前,百度推出了百度熊掌号服务.旨在更好的为站长服务.那么百度熊掌号如何通过推送API接口实现自动文章推送呢? 第 ...

  6. java 代码 _程序员用1.5小时写出的Java代码,让同事瞠目结舌!直呼优秀

    1.曾经不止一次在生产中见过类似这样的代码: 这有很多变种,例如用 Integer.valueOf(1). (Integer)1 之类的,那些细节都不重要.重要的是:凭空用一个 Integer 对象作 ...

  7. 给定下面的java代码_则运行_会产生类型的异常_JavaSE_笔试题_单选选择题

    JavaSE_笔试题_单选选择题1 1. 下面哪一种描述是正确的()? A:abstract修饰符可修饰字段.方法和类. B:抽象方法的body部分必须用一对大括号{}包住. C:声明抽象方法,大括号 ...

  8. 连连看java代码_连连看 - java代码库 - 云代码

    [java]代码库/* * To change this license header, choose License Headers in Project Properties. * To chan ...

  9. 关联规则java代码_重量挖掘关联规则挖掘方法,哪个大神可以将以下伪代码转换为Java代码?...

    重量挖掘关联规则挖掘方法,哪个大神可以将以下伪代码转换为Java代码? 10 改进的加权关联规则算法的基本步骤与Apriori算法相似: 首先找到加权支持度不小于用户指定的最小加权支持度的所有频繁项集 ...

最新文章

  1. C/C++、嵌入式秋招之SQL篇
  2. python根据二叉树的前序遍历和中序遍结果历重建二叉树
  3. 演化树,靠不住?挑战物种出现与灭绝速率的估算方法
  4. 打开浏览器不是主页_网络没问题但是浏览器打开主页却显示网络连接错误
  5. 列表和字典之间的相互转换-Python3
  6. C++ 中 freopen()函数的用法
  7. 腾讯终于有动作了:国行版Switch快来了...
  8. C++ 整形转换为字符串的方式总结
  9. 配置管理——配置项标识
  10. python水仙花数的代码_Python水仙花数的编程代码写法
  11. Android信息处理机制
  12. 什么是物联网技术?物联网主要技术有哪些?
  13. html页面访pdf样式,html网页布局模板.pdf
  14. 卷积神经网络(2)--卷积神经网络的认识、黑白图像的卷积操作
  15. python selenium 处理悬浮窗口(baidu tj_more)
  16. 2017 开源中国新增开源项目排行榜 TOP 100
  17. 【学术方法 | 文献阅读】How to Read Papers
  18. python断网重联_Python实现WiFi断线自动重连的方法详解
  19. 应用概率统计-第一章 随机事件及其概率
  20. 成都Java开发前景怎么样

热门文章

  1. Octave常用函数
  2. html页面每打开就刷新一次,让页面自动只刷新一次
  3. 本地AD账户同步到Office 365(21V)Azure AD
  4. 给三星RV520重装系统的曲折道路
  5. Ubuntu系统home目录空间不足,将其他硬盘挂载到home目录
  6. 营销网站SEO优化的难点在哪里
  7. poweredge t430 服务器资料
  8. 计算机毕业设计springboot+vue基本微信小程序的电子书阅读器小程序
  9. 使用Vitamio打造自己的Android万能播放器—— 手势控制亮度、音量、缩放
  10. java 通过密钥access_token获取公众号签名signature