麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開(kāi)發(fā) > Java > 正文

Java實(shí)現(xiàn)的百度語(yǔ)音識(shí)別功能示例

2024-07-14 08:42:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Java實(shí)現(xiàn)的百度語(yǔ)音識(shí)別功能。分享給大家供大家參考,具體如下:

SDK以及示例代碼下載地址: http://yuyin.baidu.com/sdk

最近一直在搞java,就選擇了java工程。將代碼拷過(guò)去。同時(shí)復(fù)制文件“test.pcm”到工程目錄下。就基本上可以了。

注:test.pcm是語(yǔ)音文件,可以用audacity軟件打開(kāi),選擇 文件->導(dǎo)入->裸數(shù)據(jù)。 設(shè)置采樣率為8000Hz。點(diǎn)擊播放就能聽(tīng)見(jiàn)聲音了。

這個(gè)時(shí)候程序跑起來(lái)還有問(wèn)題,需要將apiKey 以及secretKey填寫(xiě)上。這兩個(gè)值是你申請(qǐng)應(yīng)用對(duì)應(yīng)的分配好的。

cuid填本機(jī)mac地址就可以了,這個(gè)值我試過(guò)好像無(wú)所謂沒(méi)啥要求。

程序能跑起來(lái),并且按照正常返回識(shí)別的語(yǔ)音結(jié)果。但是返回結(jié)果的編碼為GBK,所以漢字顯示為亂碼,需要對(duì)其進(jìn)行一次轉(zhuǎn)碼。轉(zhuǎn)碼的代碼是我自己加上去的。

下面貼代碼:

package com.baidu.speech.serviceapi;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 Sample {  private static final String serverURL = "http://vop.baidu.com/server_api";  private static String token = "";  private static final String testFileName = "test.pcm"; // 百度語(yǔ)音提供技術(shù)支持  //put your own params here  // 下面3個(gè)值要填寫(xiě)自己申請(qǐng)的app對(duì)應(yīng)的值  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("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=8000");    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(getUtf8String(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;  }  // GBK編碼轉(zhuǎn)為UTF-8  private static String getUtf8String(String s) throws UnsupportedEncodingException  {   StringBuffer sb = new StringBuffer();   sb.append(s);   String xmlString = "";   String xmlUtf8 = ""; xmlString = new String(sb.toString().getBytes("GBK")); xmlUtf8 = URLEncoder.encode(xmlString , "GBK");   return URLDecoder.decode(xmlUtf8, "UTF-8");  }}

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久影院一区二区三区 | 狠狠一区二区 | 欧美国产一级片 | 国产成人综合在线视频 | 久久久久久久91 | 深夜免费福利视频 | 亚洲综合视频网站 | 久久精品一区视频 | 日韩视频在线观看免费视频 | chinese xxxx hd pron8 tube | 九九视频精品在线 | 一级电影免费看 | 操嫩草 | av电影免费看 | 黄色av网站在线观看 | 国产精品自拍啪啪 | 欧美精品成人一区二区三区四区 | 国产在线观看免费视频软件 | 国产chinesehd精品91 | 久国产精品视频 | 亚洲欧美在线看 | 亚洲精品一区二区三区大胸 | 欧美性受xxx黑人xyx性爽 | 欧美亚洲国产一区二区三区 | 国产在线a | 亚洲一区在线国产 | 黄色视品| 久久露脸国语精品国产91 | 久久免费视频8 | 羞羞答答视频 | 亚洲国产精品久久久久婷婷老年 | 中文字幕视频在线播放 | 欧日韩在线视频 | 欧美视频在线观看一区 | 亚洲午夜网站 | 久久久av亚洲男天堂 | 亚洲午夜一区二区三区 | 欧美成年性h版影视中文字幕 | 日本精品视频一区二区三区四区 | 国产精品久久久久久久久久久久久久久 | 中文字幕在线观看精品 |