获取音频时长2

This commit is contained in:
2026-02-02 16:09:25 +08:00
parent 897561ba89
commit ee445dc0d2

View File

@ -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";
}
}