hot_video_analyse/code/test_professional_tools.py

173 lines
4.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()