基于java的百度语音识别示例
最近在弄语音识别这块,然后就看了下百度的语音识别:
这里介绍了使用java实验语音识别。首先你需要的东西:
1、一个pcm或这个wav格式的语音文件(我使用的是官网提供的案列16k.pcm)点击下载。
2、准备sdk包(将这个包的jar包通过build path附上就可以)点击下载;
3、需要在百度云上申请一个百度语音的项目,然后将apikey和secretkey复制到项目中。
注意的是:如果我的语音文件是16k的,rate就是16000,8k的rate就是8000(可以参考官方文档).cuid填本机mac地址就可以了,这个值没有什么要求,我用的就是sercretkey。
下面代码:
package test;import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;import javax.xml.bind.DatatypeConverter;import org.json.JSONObject;public class demo2 { private static final String serverURL = "http://vop.baidu.com/server_api"; private static String token = ""; private static final String testFileName = "D:\\workspace\\test2\\src\\16k.pcm"; // 百度语音提供技术支持 //put your own params here // 下面3个值要填写自己申请的app对应的值 private static final String apiKey = "jrDWBaBvmhPBYQRjlT7Fk1yk"; private static final String secretKey = "wI2MZhBGKthjBFdyo1miAFsforCesYbX"; private static final String cuid = "wI2MZhBGKthjBFdyo1miAFsforCesYbX"; public static void main(String[] args) throws Exception { getToken(); method1(); method2(); } private static void getToken() throws Exception { String getTokenURL = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials" + "&client_id=" + apiKey + "&client_secret=" + secretKey; HttpURLConnection conn = (HttpURLConnection) new URL(getTokenURL).openConnection(); token = new JSONObject(printResponse(conn)).getString("access_token"); System.out.println(token);} private static void method1() throws Exception { File pcmFile = new File(testFileName); System.out.println(pcmFile.exists());HttpURLConnection conn = (HttpURLConnection) new URL(serverURL).openConnection(); // construct params JSONObject params = new JSONObject(); params.put("format", "pcm"); params.put("rate", 16000); params.put("channel", "1"); params.put("token", token); params.put("lan", "zh"); params.put("cuid", cuid); params.put("len", pcmFile.length()); params.put("speech", DatatypeConverter.printBase64Binary(loadFile(pcmFile))); // add request header conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); conn.setDoInput(true); conn.setDoOutput(true); // send request DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); wr.writeBytes(params.toString()); wr.flush(); wr.close(); printResponse(conn); } private static void method2() throws Exception { File pcmFile = new File(testFileName); HttpURLConnection conn = (HttpURLConnection) new URL(serverURL + "?cuid=" + cuid + "&token=" + token).openConnection(); // add request header conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "audio/pcm; rate=16000"); conn.setDoInput(true); conn.setDoOutput(true); // send request DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); wr.write(loadFile(pcmFile)); wr.flush(); wr.close(); System.out.println(printResponse(conn)); } private static String printResponse(HttpURLConnection conn) throws Exception { if (conn.getResponseCode() != 200) { // request error System.out.println("conn.getResponseCode() = " + conn.getResponseCode()); return ""; } InputStream is = conn.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); String line; StringBuffer response = new StringBuffer(); while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); System.out.println(new JSONObject(response.toString()).toString(4)); return response.toString(); } private static byte[] loadFile(File file) throws IOException { InputStream is = new FileInputStream(file); long length = file.length(); byte[] bytes = new byte[(int) length]; int offset = 0; int numRead = 0; while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) { offset += numRead; } if (offset < bytes.length) { is.close(); throw new IOException("Could not completely read file " + file.getName()); } is.close(); return bytes; }
}
运行结果:
{"scope": "public brain_all_scope audio_voice_assistant_get audio_tts_post wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test权限 vis-classify_flower bnstest_fasf lpq_开放","session_secret": "a1872f3e791eeb5adf327086e6a0d769","expires_in": 2592000,"refresh_token": "25.f74b044ed07383f7643b8259fb9af970.315360000.1827655515.282335-10467473","session_key": "9mzdWT+D4w5xoNHb1JejPBZ1qZKj90nUTAVDhweqqQJjH1o4PvJAYHgT8QynTP9BCVSjxA5tihkh2QCabkExrQFTpcK1VQ==","access_token": "24.be8efa5a534453370396a4accce50aa6.2592000.1514887515.282335-10467473"
}
24.be8efa5a534453370396a4accce50aa6.2592000.1514887515.282335-10467473
true
{"result": ["北京科技馆,"],"err_msg": "success.","sn": "592584910701512295515","err_no": 0,"corpus_no": "6495259779570311967"
}
{"result": ["北京科技馆,"],"err_msg": "success.","sn": "587847696871512295516","err_no": 0,"corpus_no": "6495259783832855718"
}
{"corpus_no":"6495259783832855718","err_msg":"success.","err_no":0,"result":["北京科技馆,"],"sn":"587847696871512295516"}
基于java的百度语音识别示例相关推荐
- 软件包应用分享|基于RT-Thread的百度语音识别(二)
本期分享来自RT-Thread的社区小伙伴霹雳大乌龙,如果你也有文章愿意分享/希望获得官方的写作指导,可以发送文章/联系方式邮件至邮箱:xuqianqian@rt-thread.com 回顾往期: 软 ...
- uni-app微信小程序+Java实现百度语音识别
1.准备工作 由于微信小程序和百度语音识别的记录博客少之又少,所以这篇博客就诞生了. 注册登录百度AI开放平台(http://ai.baidu.com/) 找到语音技术 - 应用列表,创建应用,填写相 ...
- 与图灵机器人进行语音对话(Java)(百度语音识别/合成)
使用Java编写一个与图灵机器人进行对话的工具. 但图灵机器人只支持文本对话,并不支持语音交互,所以本程序运用了第三方库百度语音识别/合成,来实现语音交互. 我们还可以将下载好的音乐放入指定文件夹,进 ...
- 手把手教你实现基于RT-Thread的百度语音识别(一)
RT-Thread简介 RT-Thread是一个集实时操作系统(RTOS)内核.中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰 ...
- 百度语音识别之拼音识别
这篇文章是基于之前的百度语音识别集成到Fragment篇拓展来的,不会可以先点开看看. 首先先下载一个工具包链接:复制以下链接下载,名字如下 https://pan.baidu.com/s/1wgJo ...
- 百度语音识别JAVA代码_【百度语音识别】JavaAPI方式语音识别示例MP3转PCM
[百度语音识别]JavaAPI方式语音识别示例MP3转PCM Java-API合成语音示例:http://ai.baidu.com/forum/topic/show/496727 REST-API文档 ...
- 百度语音识别java教程,Java实现的百度语音识别功能示例
本文实例讲述了Java实现的百度语音识别功能.分享给大家供大家参考,具体如下: 最近一直在搞java,就选择了java工程.将代码拷过去.同时复制文件"test.pcm"到工程目录 ...
- 基于java SDK语音识别技术概述与调研
语音识别技术概述与调研 语音识别已经成为人工智能应用的一个重点,通过语音控制设备简单方便,在各个领域兴起了研究应用的热潮.数据.算法及芯片是语音识别技术的3个关键,大量优质的数据.精准快速的算法和高性 ...
- 基于百度语音识别API的Python语音识别小程序
一.功能概述 实现语音为文字,可以扩展到多种场景进行工作,这里只实现其基本的语言接收及转换功能. 在语言录入时,根据语言内容的多少与停顿时间,自动截取音频进行转换. 工作示例: 二.软件环境 操作系统 ...
最新文章
- mysql galaxy_优化mysql
- C ++中线程的简单示例
- 关于更改linux源文件的问题(ubuntu)
- 开发人员能力不足的情况下如何推进敏捷开发?
- 洛谷 - P3358 最长k可重区间集问题(最大费用最大流+思维建边)
- MySQL在EF Core下的Scaffolding操作
- strassen矩阵乘法 java_Strassen 矩阵算法 Java 实现
- HDU4675【GCD of scequence】【组合数学、费马小定理、取模】
- OpenMAX IL介绍与其体系
- Struts2第一天课堂笔记
- Appium+python自动化(二十六)- 烟花一瞬,昙花一现 -Toast提示(超详解)
- operator的理解
- 华罗庚 计算机,华罗庚有关计算机的故事
- 是否有无穷多组基本勾股数
- docker学习1--docker基础学习
- Scrapy-Redis使用教程将现有爬虫修改为分布式爬虫
- 干货 | 深度理解数据采集与埋点,提高自主数据分析能力!
- HTML5实现的树叶飘落动画特效
- 设计模式 - 状态模式
- linux,Windows11双系统安装及开机引导
热门文章
- 【Python】openpyxl单元格合并
- 断流测试软件,不用担心WiFi断流了!亲身测试:试了这个方法后,信号杠杠的...
- 英语写作中的一些缩写
- 2018 Google I/O 干货摘要以及对Android开发者的影响
- 外贸用户如何创建邮箱并登录邮箱?
- 又来了!针对VMware ESXi的新型勒索软件出现
- 刷题总结——松鼠的新家(bzoj3631)
- 请使用 -source 7 或更高版本以启用 diamond 运算符_短视频 | 2分钟英语课堂:每天2分钟,让口语和听力6到飞!(7大系列374个视频)...
- 新走遍美国第一遍总结
- 微信公众号分享jssdk.php,微信公众号JSSDK