利用百度语音识别技术实现文字转语音的应用(Java版附源码)

  • @throws IOException

  • @throws DemoException

*/

public static String getResponseString(HttpURLConnection conn) throws IOException, DemoException {

return new String(getResponseBytes(conn));

}

/**

  • 从HttpURLConnection 获取返回的bytes

  • 注意 HttpURLConnection自身问题, 400类错误,会直接抛出异常。不能获取conn.getInputStream();

  • @param conn

  • @return

  • @throws IOException http请求错误

  • @throws DemoException http 的状态码不是 200

*/

public static byte[] getResponseBytes(HttpURLConnection conn) throws IOException, DemoException {

int responseCode = conn.getResponseCode();

if (responseCode != 200) {

System.err.println("http 请求返回的状态码错误,期望200, 当前是 " + responseCode);

if (responseCode == 401) {

System.err.println(“可能是appkey appSecret 填错”);

}

throw new DemoException(“http response code is” + responseCode);

}

InputStream inputStream = conn.getInputStream();

byte[] result = getInputStreamContent(inputStream);

return result;

}

/**

  • 将InputStream内的内容全部读取,作为bytes返回

  • @param is

  • @return

  • @throws IOException @see InputStream.read()

*/

public static byte[] getInputStreamContent(InputStream is) throws IOException {

byte[] b = new byte[1024];

// 定义一个输出流存储接收到的数据

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

// 开始接收数据

int len = 0;

while (true) {

len = is.read(b);

if (len == -1) {

// 数据读完

break;

}

byteArrayOutputStream.write(b, 0, len);

}

return byteArrayOutputStream.toByteArray();

}

}

2、token的获取类,TokenHolder


package baidu.restapi.common;

import org.json.JSONObject;

import java.io.IOException;

import java.net.HttpURLConnection;

import java.net.URL;

/**

  • token的获取类

  • 将apiKey和secretKey换取token,注意有效期保存在expiresAt

*/

public class TokenHolder {

public static final String ASR_SCOPE = “audio_voice_assistant_get”;

public static final String TTS_SCOPE = “audio_tts_post”;

/**

  • url , Token的url,http可以改为https

*/

private static final String url = “http://openapi.baidu.com/oauth/2.0/token”;

/**

  • asr的权限 scope 是 “audio_voice_assistant_get”

  • tts 的权限 scope 是 “audio_tts_post”

*/

private String scope;

/**

  • 网页上申请语音识别应用获取的apiKey

*/

private String apiKey;

/**

  • 网页上申请语音识别应用获取的secretKey

*/

private String secretKey;

/**

  • 保存访问接口获取的token

*/

private String token;

/**

  • 当前的时间戳,毫秒

*/

private long expiresAt;

/**

  • @param apiKey 网页上申请语音识别应用获取的apiKey

  • @param secretKey 网页上申请语音识别应用获取的secretKey

*/

public TokenHolder(String apiKey, String secretKey, String scope) {

this.apiKey = apiKey;

this.secretKey = secretKey;

this.scope = scope;

}

/**

  • 获取token,refresh 方法后调用有效

  • @return

*/

public String getToken() {

return token;

}

/**

  • 获取过期时间,refresh 方法后调用有效

  • @return

*/

public long getExpiresAt() {

return expiresAt;

}

/**

  • 获取token

  • @return

  • @throws IOException http请求错误

  • @throws DemoException http接口返回不是 200, access_token未获取

*/

public void resfresh() throws Exception {

String getTokenURL = url + “?grant_type=client_credentials”

  • “&client_id=” + ConnUtil.urlEncode(apiKey) + “&client_secret=” + ConnUtil.urlEncode(secretKey);

// 打印的url出来放到浏览器内可以复现

System.out.println(“token url:” + getTokenURL);

URL url = new URL(getTokenURL);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(5000);

String result = ConnUtil.getResponseString(conn);

System.out.prin Java开源项目【ali1024.coding.net/public/P7/ 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 Java/git】 tln(“Token result json:” + result);

parseJson(result);

}

/**

  • @param result token接口获得的result

  • @throws DemoException

*/

private void parseJson(String result) throws Exception {

JSONObject json = new JSONObject(result);

if (!json.has(“access_token”)) {

最后

Java架构进阶面试及知识点文档笔记

这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理

利用百度语音识别技术实现文字转语音的应用(Java版附源码)_第1张图片

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

利用百度语音识别技术实现文字转语音的应用(Java版附源码)_第2张图片

互联网Java程序员面试必备问题解析及文档学习笔记

利用百度语音识别技术实现文字转语音的应用(Java版附源码)_第3张图片

Java架构进阶视频解析合集
共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理**

[外链图片转存中…(img-Xb2ofZ42-1650356580600)]

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

[外链图片转存中…(img-DbvCXAmi-1650356580601)]

互联网Java程序员面试必备问题解析及文档学习笔记

[外链图片转存中…(img-heVMK1rd-1650356580601)]

Java架构进阶视频解析合集

你可能感兴趣的:(Java,经验分享,面试,java)