#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 专业提取工具测试脚本 演示如何使用SenseVoice和OCR工具 """ import os import time from pathlib import Path def test_sensevoice(): """测试SenseVoice语音识别""" print("🎤 测试SenseVoice语音识别...") # 检查音频文件 audio_dir = Path("../video2audio") audio_files = list(audio_dir.glob("*.wav")) if not audio_files: print("❌ 未找到音频文件,请先运行video2audio.py提取音频") return # 选择第一个音频文件测试 test_audio = audio_files[0] print(f"📁 测试文件: {test_audio}") # 构建命令 cmd = f"""python sensevoice_transcribe.py "{test_audio}" \ --language zh \ --output sensevoice_test_results \ --format json""" print(f"🚀 执行命令: {cmd}") try: os.system(cmd) print("✅ SenseVoice测试完成") except Exception as e: print(f"❌ SenseVoice测试失败: {e}") def test_ocr_extractor(): """测试OCR字幕提取""" print("\n📝 测试OCR字幕提取...") # 检查视频文件 video_dir = Path("../video2audio") video_files = list(video_dir.glob("*.mp4")) if not video_files: print("❌ 未找到视频文件") return # 选择第一个视频文件测试 test_video = video_files[0] print(f"📁 测试文件: {test_video}") # 构建命令 cmd = f"""python ocr_subtitle_extractor.py "{test_video}" \ --engine paddleocr \ --language ch \ --confidence 0.5 \ --output ocr_test_results \ --format json""" print(f"🚀 执行命令: {cmd}") try: os.system(cmd) print("✅ OCR测试完成") except Exception as e: print(f"❌ OCR测试失败: {e}") def test_whisper_comparison(): """测试Whisper对比""" print("\n🎯 测试Whisper对比...") audio_dir = Path("../video2audio") audio_files = list(audio_dir.glob("*.wav")) if not audio_files: print("❌ 未找到音频文件") return test_audio = audio_files[0] # 使用Whisper cmd = f"""python whisper_audio_transcribe.py "{audio_dir}" \ --model base \ --output whisper_test_results""" print(f"🚀 执行Whisper命令: {cmd}") try: os.system(cmd) print("✅ Whisper测试完成") except Exception as e: print(f"❌ Whisper测试失败: {e}") def compare_results(): """对比结果""" print("\n📊 对比测试结果...") # 检查输出目录 sensevoice_dir = Path("sensevoice_test_results") ocr_dir = Path("ocr_test_results") whisper_dir = Path("whisper_test_results") print("📂 输出目录检查:") print(f" SenseVoice: {'✅' if sensevoice_dir.exists() else '❌'} {sensevoice_dir}") print(f" OCR提取器: {'✅' if ocr_dir.exists() else '❌'} {ocr_dir}") print(f" Whisper: {'✅' if whisper_dir.exists() else '❌'} {whisper_dir}") # 显示文件列表 for name, dir_path in [("SenseVoice", sensevoice_dir), ("OCR", ocr_dir), ("Whisper", whisper_dir)]: if dir_path.exists(): files = list(dir_path.glob("*")) print(f"\n{name} 输出文件 ({len(files)}个):") for file in files[:3]: # 只显示前3个 file_size = file.stat().st_size if file.is_file() else 0 print(f" 📄 {file.name} ({file_size} bytes)") def main(): """主函数""" print("🔧 专业提取工具测试套件") print("=" * 50) start_time = time.time() # 检查依赖 print("\n📋 检查依赖安装...") dependencies = [ ("funasr", "SenseVoice语音识别"), ("paddleocr", "PaddleOCR字幕识别"), ("cv2", "OpenCV图像处理"), ("whisper", "Whisper语音识别") ] for module, desc in dependencies: try: __import__(module) print(f" ✅ {desc} - 已安装") except ImportError: print(f" ❌ {desc} - 未安装") print("\n" + "=" * 50) # 运行测试 try: # 测试语音识别 test_sensevoice() # 测试OCR提取 test_ocr_extractor() # 测试Whisper对比 test_whisper_comparison() # 对比结果 compare_results() except KeyboardInterrupt: print("\n⏹️ 测试被用户中断") except Exception as e: print(f"\n❌ 测试过程中出错: {e}") total_time = time.time() - start_time print(f"\n⏱️ 总测试时间: {total_time:.2f} 秒") print("🎉 测试完成!") if __name__ == "__main__": main()