package com.fh.controller.tts;
import com.fh.controller.base.BaseController;
import com.fh.util.AppUtil;
import com.fh.util.PageData;
import com.fh.util.common.DemoException;
import com.fh.util.common.ConnUtil;
import com.fh.util.common.TokenHolder;
import com.mysql.fabric.Response;
import org.apache.http.HttpResponse;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
@Controller
@RequestMapping(value = “/api/tts/voice”)
public class TtsMain extends BaseController {
// 填写网页上申请的appkey 如 $apiKey="g8eBUMSokVB1BHGmgxxxxxx"
private final String appKey = "4E1BG9lTnlSeIf1NQFlrSq6h";
// 填写网页上申请的APP SECRET 如 $secretKey="94dc99566550d87f8fa8ece112xxxxx"
private final String secretKey = "544ca4657ba8002e3dea3ac2f5fdd241";
// text 的内容为"欢迎使用百度语音合成"的urlencode,utf-8 编码
// 可以百度搜索"urlencode"
// private final String text = "欢迎使用百度语音";
// 发音人选择, 0为普通女声,1为普通男生,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声
private final int per = 0;
// 语速,取值0-9,默认为5中语速
private final int spd = 5;
// 音调,取值0-9,默认为5中语调
private final int pit = 5;
// 音量,取值0-9,默认为5中音量
private final int vol = 5;
public final String url = "http://tsn.baidu.com/text2audio"; // 可以使用https
private String cuid = "1234567JAVA";
@RequestMapping(value = "/text2audio.mp3")
private Object run(HttpServletResponse response
) throws IOException, DemoException {
PageData pd = new PageData();
pd = this.getPageData();
Map<String, Object> map = new HashMap<>();
int resultCode = 0;
TokenHolder holder = new TokenHolder(appKey, secretKey, TokenHolder.ASR_SCOPE);
holder.resfresh();
String token = holder.getToken();
if (pd.isValueNotEmpty("text") == false){
map.put("error_info","text不能为空");
resultCode= -1;
} else {
String url2 = url + "?tex=" + ConnUtil.urlEncode(pd.getString("text"));
url2 += "&per=" + per;
url2 += "&spd=" + spd;
url2 += "&pit=" + pit;
url2 += "&vol=" + vol;
url2 += "&cuid=" + cuid;
url2 += "&tok=" + token;
url2 += "&lan=zh&ctp=1";
// System.out.println(url2); // 反馈请带上此url,浏览器上可以测试
HttpURLConnection conn = (HttpURLConnection) new URL(url2).openConnection();
conn.setConnectTimeout(5000);
String contentType = conn.getContentType();
if (contentType.contains("mp3")) {
byte[] bytes = ConnUtil.getResponseBytes(conn);
OutputStream out = response.getOutputStream();
out.write(bytes);
out.flush();
out.close();
}
}
map.put("result_code",resultCode);
return AppUtil.returnObject(new PageData(),map);
}
}