文字转语音
This commit is contained in:
86
src/test/java/com/rj/audio/TextToSpeechTest.java
Normal file
86
src/test/java/com/rj/audio/TextToSpeechTest.java
Normal file
@@ -0,0 +1,86 @@
|
||||
package com.rj.audio;
|
||||
|
||||
import com.rj.dto.SiliconFlowTtsRequest;
|
||||
import com.rj.dto.SiliconFlowTtsResponse;
|
||||
import com.rj.service.SiliconFlowTtsService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
|
||||
import java.util.Base64;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* 文本转语音测试类
|
||||
*
|
||||
* @author rj
|
||||
* @date 2025-01-02
|
||||
*/
|
||||
@SpringBootTest
|
||||
@TestPropertySource(properties = {
|
||||
"siliconflow.enabled=true",
|
||||
"siliconflow.api-key=${SILICONFLOW_API_KEY:test-key}",
|
||||
"siliconflow.base-url=https://api.siliconflow.cn/v1"
|
||||
})
|
||||
public class TextToSpeechTest {
|
||||
|
||||
@Autowired
|
||||
private SiliconFlowTtsService ttsService;
|
||||
|
||||
@Test
|
||||
public void testAudioDurationCalculation() {
|
||||
// 测试音频时长计算
|
||||
SiliconFlowTtsService service = new SiliconFlowTtsService();
|
||||
|
||||
// 模拟不同大小的音频文件
|
||||
long smallAudio = 50000; // 50KB
|
||||
long mediumAudio = 200000; // 200KB
|
||||
long largeAudio = 500000; // 500KB
|
||||
|
||||
// 注意:由于calculateAudioDuration是private方法,我们通过反射或公共方法测试
|
||||
// 这里我们主要测试服务的基本功能
|
||||
assertNotNull(ttsService);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTtsRequestWithVoice() {
|
||||
SiliconFlowTtsRequest request = new SiliconFlowTtsRequest();
|
||||
request.setModel("fnlp/MOSS-TTSD-v0.5");
|
||||
request.setInput("Hello, this is a test message.");
|
||||
request.setVoice("fnlp/MOSS-TTSD-v0.5:claire");
|
||||
|
||||
assertNotNull(request);
|
||||
assertEquals("fnlp/MOSS-TTSD-v0.5", request.getModel());
|
||||
assertEquals("fnlp/MOSS-TTSD-v0.5:claire", request.getVoice());
|
||||
assertNotNull(request.getInput());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBase64Encoding() {
|
||||
// 测试Base64编码/解码
|
||||
String testText = "Hello World";
|
||||
String encoded = Base64.getEncoder().encodeToString(testText.getBytes());
|
||||
String decoded = new String(Base64.getDecoder().decode(encoded));
|
||||
|
||||
assertEquals(testText, decoded);
|
||||
assertNotNull(encoded);
|
||||
assertTrue(encoded.length() > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTtsResponseCreation() {
|
||||
// 测试TTS响应创建
|
||||
String mockAudioData = "mockAudioBase64Data";
|
||||
SiliconFlowTtsResponse response = SiliconFlowTtsResponse.success(
|
||||
mockAudioData, "mp3", 44100, 5.5
|
||||
);
|
||||
|
||||
assertTrue(response.isSuccess());
|
||||
assertEquals(mockAudioData, response.getAudio());
|
||||
assertEquals("mp3", response.getFormat());
|
||||
assertEquals(44100, response.getSampleRate());
|
||||
assertEquals(5.5, response.getDuration());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user