Last active
May 23, 2017 03:05
-
-
Save leon0516/1d2fc3b7aed7ff2e12e606811f87fa61 to your computer and use it in GitHub Desktop.
百度语音转文字restful接口示例 文档地址 https://cloud.baidu.com/doc/SPEECH/ASR-API.html#.E7.AE.80.E4.BB.8B
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class Sample { | |
| private static final String serverURL = "http://vop.baidu.com/server_api"; | |
| private static String token = ""; | |
| private static final String testFileName = "test.pcm"; | |
| //put your own params here | |
| private static final String apiKey = ""; | |
| private static final String secretKey = ""; | |
| private static final String cuid = ""; | |
| 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"); | |
| } | |
| private static void method1() throws Exception { | |
| File pcmFile = new File(testFileName); | |
| HttpURLConnection conn = (HttpURLConnection) new URL(serverURL).openConnection(); | |
| // construct params | |
| JSONObject params = new JSONObject(); | |
| params.put("format", "pcm"); | |
| params.put("rate", 8000); | |
| params.put("channel", "1"); | |
| params.put("token", token); | |
| 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=8000"); | |
| conn.setDoInput(true); | |
| conn.setDoOutput(true); | |
| // send request | |
| DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); | |
| wr.write(loadFile(pcmFile)); | |
| wr.flush(); | |
| wr.close(); | |
| printResponse(conn); | |
| } | |
| private static void printResponse(HttpURLConnection conn) throws Exception { | |
| if (conn.getResponseCode() != 200) { | |
| // request error | |
| } | |
| 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)); | |
| } | |
| private static byte[] loadFile(File file) throws IOException { | |
| InputStream is = new FileInputStream(file); | |
| long length = file.length();r | |
| 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; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment