import asyncio import base64 import os import sys # 确保能找到backend模块 sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) from backend.tts_asr import _tts_sync_with_retry, _load_asr_pipeline_with_retry, _get_asr_pipeline async def verify_tts_asr_cross(): print("====================================") print(" 开始严格交叉验证: TTS 生成 -> ASR 解析") print("====================================") test_text = "苹果设备支持离线大模型运算" print(f"\n[1] 正在调用 TTS 引擎 (suno/bark-small)...") print(f"目标文本: '{test_text}'") try: # TTS生成 audio_bytes, sr = await _tts_sync_with_retry(test_text, rate=1.0) print(f"-> TTS 成功生成音频数据,大小: {len(audio_bytes)} Bytes, 采样率: {sr}Hz") except Exception as e: print(f"-> TTS 失败: {str(e)}") sys.exit(1) print("\n[2] 正在调用 ASR 引擎 (Whisper)...") try: loaded = await _load_asr_pipeline_with_retry() if not loaded: print("-> ASR 核心加载失败!") sys.exit(1) print("-> ASR 加载成功,开始解析音频...") # 将生成的wav bytes传递给ASR进行语音识别 asr_pipeline = _get_asr_pipeline() result = asr_pipeline(audio_bytes, generate_kwargs={"task": "transcribe"}) recognized_text = result.get('text', '') print(f"-> ASR 识别结果: '{recognized_text.strip()}'") if len(recognized_text.strip()) > 0: print("\n结论: ✅ 验证成功!TTS和ASR模块功能链路闭环完成。") else: print("\n结论: ❌ ASR输出为空字符,闭环失败。") sys.exit(1) except Exception as e: import traceback traceback.print_exc() print(f"-> ASR 分析阶段失败: {str(e)}") sys.exit(1) if __name__ == "__main__": asyncio.run(verify_tts_asr_cross())