TTS 返回语音优化
This commit is contained in:
@@ -144,8 +144,10 @@ public class ChatWebSocketHandler {
|
|||||||
log.info("3、开始进行AI回答时间:{}",System.currentTimeMillis()/1000);
|
log.info("3、开始进行AI回答时间:{}",System.currentTimeMillis()/1000);
|
||||||
//持续返回数据流给客户端
|
//持续返回数据流给客户端
|
||||||
try {
|
try {
|
||||||
|
String resultOutPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + "123_"+resultFileName;
|
||||||
|
removeSilence(resultPathUrl, resultOutPathUrl);
|
||||||
//文件转换成文件流
|
//文件转换成文件流
|
||||||
ByteBuffer outByteBuffer = convertFileToByteBuffer(resultPathUrl);
|
ByteBuffer outByteBuffer = convertFileToByteBuffer(resultOutPathUrl);
|
||||||
//发送文件流数据
|
//发送文件流数据
|
||||||
session.getBasicRemote().sendBinary(outByteBuffer);
|
session.getBasicRemote().sendBinary(outByteBuffer);
|
||||||
// 发送响应确认
|
// 发送响应确认
|
||||||
@@ -404,5 +406,26 @@ public class ChatWebSocketHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void removeSilence(String inputFile, String outputFile) {
|
||||||
|
try {
|
||||||
|
// FFmpeg 命令,去除音频后面的静音部分
|
||||||
|
String command = "ffmpeg -i " + inputFile +
|
||||||
|
" -af silenceremove=start_periods=1:start_duration=0.2:start_threshold=-40dB " +
|
||||||
|
"-af silenceremove=end_periods=1:end_duration=0.2:end_threshold=-40dB " +
|
||||||
|
outputFile;
|
||||||
|
|
||||||
|
// 执行命令
|
||||||
|
Process process = Runtime.getRuntime().exec(command);
|
||||||
|
int exitCode = process.waitFor();
|
||||||
|
if (exitCode == 0) {
|
||||||
|
System.out.println("静音部分已去除");
|
||||||
|
} else {
|
||||||
|
System.out.println("音频处理失败");
|
||||||
|
}
|
||||||
|
} catch (IOException | InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class ElevenLabsClient {
|
|||||||
Map<String, Object> payload = new HashMap<>();
|
Map<String, Object> payload = new HashMap<>();
|
||||||
payload.put("text", text);
|
payload.put("text", text);
|
||||||
payload.put("model_id", modelId);
|
payload.put("model_id", modelId);
|
||||||
payload.put("voice_settings", new VoiceSettings(0.85, 0.5,1,0,0.9));
|
payload.put("voice_settings", new VoiceSettings(0.85, 0.5,1.1,0,0.9));
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
StringEntity entity = new StringEntity(gson.toJson(payload), ContentType.APPLICATION_JSON);
|
StringEntity entity = new StringEntity(gson.toJson(payload), ContentType.APPLICATION_JSON);
|
||||||
httpPost.setEntity(entity);
|
httpPost.setEntity(entity);
|
||||||
|
|||||||
Reference in New Issue
Block a user