fix(aihr): avoid duplicate inline tts audio
This commit is contained in:
+2
-2
@@ -78,16 +78,16 @@ public class AihrSpeechController {
|
||||
}
|
||||
|
||||
private R<TtsResponse> storeTtsAudio(byte[] audio) {
|
||||
String inlineAudioUrl = "data:audio/mp3;base64," + Base64.getEncoder().encodeToString(audio);
|
||||
Path tempFile = null;
|
||||
try {
|
||||
tempFile = Files.createTempFile("aihr-tts-", ".mp3");
|
||||
Files.write(tempFile, audio);
|
||||
File file = tempFile.toFile();
|
||||
SysOssVo oss = ossService.upload(file);
|
||||
return R.ok(new TtsResponse(oss.getUrl(), "openai-compatible", oss.getOssId(), inlineAudioUrl));
|
||||
return R.ok(new TtsResponse(oss.getUrl(), "openai-compatible", oss.getOssId(), ""));
|
||||
} catch (Exception e) {
|
||||
log.warn("tts audio upload failed(处理错误已隐藏)");
|
||||
String inlineAudioUrl = "data:audio/mp3;base64," + Base64.getEncoder().encodeToString(audio);
|
||||
return R.ok(new TtsResponse(inlineAudioUrl, "openai-compatible"));
|
||||
} finally {
|
||||
if (tempFile != null) {
|
||||
|
||||
+8
@@ -70,6 +70,14 @@ class AihrSensitiveTextTest {
|
||||
assertTrue(practiceLlmSource.contains("practice score parse failed, falls back to seed(处理错误已隐藏)"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void ttsUploadSuccessDoesNotDuplicateInlineAudio() throws Exception {
|
||||
String speechControllerSource = Files.readString(controllerSource("AihrSpeechController.java"));
|
||||
|
||||
assertTrue(speechControllerSource.contains("new TtsResponse(oss.getUrl(), \"openai-compatible\", oss.getOssId(), \"\")"));
|
||||
assertTrue(speechControllerSource.contains("new TtsResponse(inlineAudioUrl, \"openai-compatible\")"));
|
||||
}
|
||||
|
||||
private static Path source(String fileName) {
|
||||
Path direct = Path.of("src/main/java/org/dromara/aihr/service", fileName);
|
||||
return Files.exists(direct)
|
||||
|
||||
Reference in New Issue
Block a user