地址:http://ai.baidu.com/tech/speech/tts
前台代碼:
<audio id='music' src=""></audio> <script> /* #spd 選填 語速,取值0-9,默認為5中語速 #pit 選填 音調,取值0-9,默認為5中語調 #vol 選填 音量,取值0-15,默認為5中音量 #per 選填 發音人選擇, 0為普通女聲,1為普通男生,3為情感合成-度逍遙,4為情感合成-度丫丫,默認為普通女聲 */ var spd = '${spd!""}'; var pit = '${pit!""}'; var vol = '${vol!""}'; var per = '${per!""}'; var myToken = '${myToken!""}'; var cuid = '${cuid!""}'; function play(text) { var player = document.querySelector('#music'); var url = "http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid="+cuid+"&tok="+myToken+"&tex="+text+"&vol="+vol+"&per="+per+"&spd="+spd+"&pit=" + pit; if(player.paused ){ // 暫停中 player.src =url; player.play(); } } </script>
獲取token的java類:
import org.json.JSONObject; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; import java.util.Map; /** * 獲取token類 */ public class AuthService { /** * 獲取權限token * @return 返回示例: * { * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567", * "expires_in": 2592000 * } */ public static String getAuth() { // 官網獲取的 API Key 更新為你注冊的 String clientId = "ksnh3bAPPByrYGMD4MwTaMum"; // 官網獲取的 Secret Key 更新為你注冊的 String clientSecret = "e2LgPHXraUqzUA5N7U5OtWULq9LAZdiB "; return getAuth(clientId, clientSecret); } /** * 獲取API訪問token * 該token有一定的有效期,需要自行管理,當失效時需重新獲取. * @param ak - 百度雲官網獲取的 API Key * @param sk - 百度雲官網獲取的 Securet Key * @return assess_token 示例: * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567" */ public static String getAuth(String ak, String sk) { // 獲取token地址 String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; String getAccessTokenUrl = authHost // 1. grant_type為固定參數 + "grant_type=client_credentials" // 2. 官網獲取的 API Key + "&client_id=" + ak // 3. 官網獲取的 Secret Key + "&client_secret=" + sk; try { URL realUrl = new URL(getAccessTokenUrl); // 打開和URL之間的連接 HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); connection.setRequestMethod("GET"); connection.connect(); // 獲取所有響應頭字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍歷所有的響應頭字段 for (String key : map.keySet()) { System.err.println(key + "--->" + map.get(key)); } // 定義 BufferedReader輸入流來讀取URL的響應 BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String result = ""; String line; while ((line = in.readLine()) != null) { result += line; } /** * 返回結果示例 */ System.err.println("result:" + result); JSONObject jsonObject = new JSONObject(result); String access_token = jsonObject.getString("access_token"); return access_token; } catch (Exception e) { System.err.printf("獲取token失敗!"); e.printStackTrace(System.err); } return null; } }
隨機獲取cuid的java類:
import java.util.Random; /** * 獲取指定長度的隨機字符串 * @author 小帥丶 * @Title RandomStringGenerator * @時間 2017-5-26下午4:58:53 */ public class RandomStringGenerator { /** * 獲取一定長度的隨機字符串 * @param length 指定字符串長度 * @return 一定長度的字符串 */ public static String getRandomStringByLength(int length) { String base = "abcdefghijklmnopqrstuvwxyz0123456789"; Random random = new Random(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < length; i++) { int number = random.nextInt(base.length()); sb.append(base.charAt(number)); } return sb.toString(); } }