84 lines
2.1 KiB
Python
84 lines
2.1 KiB
Python
|
|
"""
|
||
|
|
ASR 语音识别测试
|
||
|
|
使用 TTS 生成的音频文件测试识别
|
||
|
|
"""
|
||
|
|
|
||
|
|
from pathlib import Path
|
||
|
|
from src.Module.asr.asr import ASR, recognize, recognize_text
|
||
|
|
|
||
|
|
|
||
|
|
def test_recognize_wav():
|
||
|
|
"""测试识别 WAV 文件"""
|
||
|
|
print("=" * 60)
|
||
|
|
print(" ASR 语音识别测试")
|
||
|
|
print("=" * 60)
|
||
|
|
|
||
|
|
# 使用 TTS 测试生成的音频文件
|
||
|
|
audio_file = Path(__file__).parent.parent / 'tts' / 'output' / 'stream_test.wav'
|
||
|
|
|
||
|
|
if not audio_file.exists():
|
||
|
|
print(f"[跳过] 音频文件不存在: {audio_file}")
|
||
|
|
print("请先运行 TTS 测试生成音频文件")
|
||
|
|
return False
|
||
|
|
|
||
|
|
print(f"\n音频文件: {audio_file}")
|
||
|
|
print(f"文件大小: {audio_file.stat().st_size / 1024:.1f} KB")
|
||
|
|
|
||
|
|
# 创建 ASR 实例
|
||
|
|
asr = ASR(
|
||
|
|
model='qwen3-asr-flash',
|
||
|
|
language='zh',
|
||
|
|
)
|
||
|
|
|
||
|
|
print("\n开始识别...")
|
||
|
|
result = asr.recognize(str(audio_file))
|
||
|
|
|
||
|
|
print(f"\n识别结果:")
|
||
|
|
print(f" 成功: {result.success}")
|
||
|
|
print(f" 文本: {result.text}")
|
||
|
|
if result.error:
|
||
|
|
print(f" 错误: {result.error}")
|
||
|
|
if result.request_id:
|
||
|
|
print(f" 请求ID: {result.request_id}")
|
||
|
|
|
||
|
|
return result.success
|
||
|
|
|
||
|
|
|
||
|
|
def test_convenient_function():
|
||
|
|
"""测试便捷函数"""
|
||
|
|
print("\n" + "=" * 60)
|
||
|
|
print("便捷函数测试")
|
||
|
|
print("=" * 60)
|
||
|
|
|
||
|
|
audio_file = Path(__file__).parent.parent / 'tts' / \
|
||
|
|
'output' / 'bidirectional_test.wav'
|
||
|
|
|
||
|
|
if not audio_file.exists():
|
||
|
|
print(f"[跳过] 音频文件不存在: {audio_file}")
|
||
|
|
return False
|
||
|
|
|
||
|
|
print(f"\n音频文件: {audio_file.name}")
|
||
|
|
|
||
|
|
# 使用便捷函数
|
||
|
|
text = recognize_text(str(audio_file), language='zh')
|
||
|
|
|
||
|
|
print(f"识别文本: {text}")
|
||
|
|
|
||
|
|
return len(text) > 0
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
results = []
|
||
|
|
|
||
|
|
success1 = test_recognize_wav()
|
||
|
|
results.append(("WAV 文件识别", success1))
|
||
|
|
|
||
|
|
success2 = test_convenient_function()
|
||
|
|
results.append(("便捷函数", success2))
|
||
|
|
|
||
|
|
print("\n" + "=" * 60)
|
||
|
|
print("测试结果:")
|
||
|
|
for name, success in results:
|
||
|
|
status = "✓ 通过" if success else "✗ 失败/跳过"
|
||
|
|
print(f" {name}: {status}")
|