百度语音demo

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);
}

}