Files
qiming/qiming-mcp-proxy/voice-cli/fixtures/comprehensive_tts_test.py
2026-06-01 13:03:20 +08:00

144 lines
4.6 KiB
Python

#!/usr/bin/env python3
"""
TTS功能完整测试
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from tts_service import TTSService
import time
def test_comprehensive_tts():
"""全面测试TTS功能"""
print("=== TTS功能完整测试 ===")
# 创建TTS服务
tts = TTSService()
# 测试用例
test_cases = [
{
"name": "基础WAV测试",
"text": "Hello, this is a basic TTS test.",
"output": "basic_test.wav",
"format": "wav",
"speed": 1.0,
"pitch": 0,
"volume": 1.0
},
{
"name": "快速语速测试",
"text": "This is a faster speech test.",
"output": "fast_test.wav",
"format": "wav",
"speed": 1.5,
"pitch": 0,
"volume": 1.0
},
{
"name": "高音调测试",
"text": "Testing higher pitch voice.",
"output": "high_pitch_test.wav",
"format": "wav",
"speed": 1.0,
"pitch": 10,
"volume": 1.0
},
{
"name": "低音量测试",
"text": "This is a quieter voice test.",
"output": "quiet_test.wav",
"format": "wav",
"speed": 1.0,
"pitch": 0,
"volume": 0.5
},
{
"name": "MP3格式测试",
"text": "Testing MP3 audio format output.",
"output": "mp3_test.mp3",
"format": "mp3",
"speed": 1.2,
"pitch": 5,
"volume": 1.2
},
{
"name": "长文本测试",
"text": "This is a longer text test to verify that the TTS system can handle extended content properly without issues or errors occurring during the synthesis process.",
"output": "long_text_test.wav",
"format": "wav",
"speed": 0.9,
"pitch": -2,
"volume": 0.8
}
]
results = []
for i, test_case in enumerate(test_cases, 1):
print(f"\n--- 测试 {i}: {test_case['name']} ---")
print(f"文本: {test_case['text']}")
print(f"参数: speed={test_case['speed']}, pitch={test_case['pitch']}, volume={test_case['volume']}, format={test_case['format']}")
start_time = time.time()
try:
result = tts.synthesize_sync(
text=test_case['text'],
output_path=test_case['output'],
speed=test_case['speed'],
pitch=test_case['pitch'],
volume=test_case['volume'],
format=test_case['format']
)
end_time = time.time()
processing_time = end_time - start_time
if result['success']:
print(f"SUCCESS!")
print(f" Output file: {result['output_path']}")
print(f" File size: {result['file_size']} bytes")
print(f" Audio duration: {result['duration']:.2f} seconds")
print(f" Processing time: {processing_time:.2f} seconds")
# 验证文件
if os.path.exists(test_case['output']):
actual_size = os.path.getsize(test_case['output'])
print(f" File verification: {actual_size} bytes (OK)")
# 检查是否为真实音频文件
if actual_size > 1000: # 大于1KB认为是真实音频
print(f" Audio quality: Real audio (OK)")
else:
print(f" Audio quality: Mock data (WARNING)")
results.append(True)
else:
print(f" ERROR: File does not exist!")
results.append(False)
else:
print(f"FAILED: {result['error']}")
results.append(False)
except Exception as e:
print(f"ERROR: {e}")
results.append(False)
# 汇总结果
print(f"\n=== Test Results Summary ===")
passed = sum(results)
total = len(results)
print(f"Passed: {passed}/{total}")
if passed == total:
print("All tests passed! TTS functionality is working correctly!")
return True
else:
print(f"WARNING: {total - passed} tests failed")
return False
if __name__ == "__main__":
success = test_comprehensive_tts()
sys.exit(0 if success else 1)