文字转语音

This commit is contained in:
spllzh
2025-10-04 19:52:06 +08:00
parent 24c00c22ab
commit 06730b656e
51 changed files with 5157 additions and 8 deletions

View File

@@ -0,0 +1,78 @@
package com.rj.service;
import com.rj.config.SiliconFlowConfig;
import com.rj.dto.SiliconFlowTtsRequest;
import com.rj.dto.SiliconFlowTtsResponse;
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 static org.junit.jupiter.api.Assertions.*;
/**
* SiliconFlow TTS 服务测试类
*
* @author rj
* @date 2025-01-02
*/
@SpringBootTest
@TestPropertySource(properties = {
"siliconflow.enabled=true",
"siliconflow.api-key=test-api-key",
"siliconflow.base-url=https://api.siliconflow.cn/v1"
})
public class SiliconFlowTtsServiceTest {
@Autowired
private SiliconFlowTtsService ttsService;
@Autowired
private SiliconFlowConfig config;
@Test
public void testServiceConfiguration() {
assertNotNull(config);
assertTrue(config.isEnabled());
assertEquals("https://api.siliconflow.cn/v1", config.getBaseUrl());
assertEquals("fnlp/MOSS-TTSD-v0.5", config.getDefaultTtsModel());
}
@Test
public void testServiceAvailability() {
// 注意这个测试需要真实的API Key才能通过
// 在测试环境中,我们主要测试配置是否正确
assertNotNull(ttsService);
}
@Test
public void testTtsRequestCreation() {
SiliconFlowTtsRequest request = new SiliconFlowTtsRequest();
request.setModel("fnlp/MOSS-TTSD-v0.5");
request.setInput("[S1]Hello, how are you today?[S2]I'm doing great, thanks for asking![S1]That's wonderful to hear");
// voice参数有默认值但也可以手动设置
assertNotNull(request);
assertEquals("fnlp/MOSS-TTSD-v0.5", request.getModel());
assertNotNull(request.getInput());
assertEquals("fnlp/MOSS-TTSD-v0.5:claire", request.getVoice()); // 验证默认voice参数
}
@Test
public void testTtsResponseCreation() {
SiliconFlowTtsResponse successResponse = SiliconFlowTtsResponse.success(
"base64AudioData", "wav", 22050, 5.5
);
assertTrue(successResponse.isSuccess());
assertEquals("base64AudioData", successResponse.getAudio());
assertEquals("wav", successResponse.getFormat());
assertEquals(22050, successResponse.getSampleRate());
assertEquals(5.5, successResponse.getDuration());
SiliconFlowTtsResponse errorResponse = SiliconFlowTtsResponse.error("API调用失败");
assertFalse(errorResponse.isSuccess());
assertEquals("API调用失败", errorResponse.getMessage());
}
}