获取音频时长2
This commit is contained in:
@ -1,84 +0,0 @@
|
||||
package com.fuyuanshen.app.http;
|
||||
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Base64;
|
||||
|
||||
public class ApacheHttpTtsClient {
|
||||
|
||||
private String accessKeyId;
|
||||
private String accessKeySecret;
|
||||
private String appKey;
|
||||
|
||||
public ApacheHttpTtsClient(String accessKeyId, String accessKeySecret, String appKey) {
|
||||
this.accessKeyId = accessKeyId;
|
||||
this.accessKeySecret = accessKeySecret;
|
||||
this.appKey = appKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用Apache HttpClient调用TTS服务
|
||||
*/
|
||||
public byte[] synthesizeTextToMp3(String text) throws IOException {
|
||||
CloseableHttpClient httpClient = HttpClients.createDefault();
|
||||
|
||||
try {
|
||||
HttpPost httpPost = new HttpPost("https://nls-gateway.cn-shanghai.aliyuncs.com/v1/tts");
|
||||
|
||||
// 设置请求头
|
||||
httpPost.setHeader("Content-Type", "application/json");
|
||||
httpPost.setHeader("Authorization", "Bearer " + getAccessToken());
|
||||
|
||||
// 设置请求体
|
||||
String jsonPayload = String.format(
|
||||
"{\"appkey\":\"%s\",\"text\":\"%s\",\"voice\":\"zhifeng\",\"format\":\"MP3\",\"sample_rate\":24000,\"volume\":50,\"speech_rate\":0,\"pitch_rate\":0}",
|
||||
appKey,
|
||||
text.replace("\"", "\\\"")
|
||||
);
|
||||
|
||||
StringEntity entity = new StringEntity(jsonPayload, "UTF-8");
|
||||
httpPost.setEntity(entity);
|
||||
|
||||
// 执行请求
|
||||
CloseableHttpResponse response = httpClient.execute(httpPost);
|
||||
try {
|
||||
HttpEntity responseEntity = response.getEntity();
|
||||
if (response.getStatusLine().getStatusCode() == 200) {
|
||||
// 读取响应数据(Base64编码的音频数据)
|
||||
String responseStr = EntityUtils.toString(responseEntity);
|
||||
|
||||
// 如果返回的是Base64编码的数据
|
||||
if (responseStr.startsWith("data:audio/mp3;base64,")) {
|
||||
String base64Data = responseStr.substring("data:audio/mp3;base64,".length());
|
||||
return Base64.getDecoder().decode(base64Data);
|
||||
} else {
|
||||
// 直接返回音频数据
|
||||
return EntityUtils.toByteArray(responseEntity);
|
||||
}
|
||||
} else {
|
||||
throw new IOException("请求失败: " + response.getStatusLine().getStatusCode());
|
||||
}
|
||||
} finally {
|
||||
response.close();
|
||||
}
|
||||
} finally {
|
||||
httpClient.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取访问令牌
|
||||
*/
|
||||
private String getAccessToken() {
|
||||
// 实现获取阿里云访问令牌的逻辑
|
||||
return "your-access-token";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user