feat: add migrations, test scripts, and utility tools
- Add database migrations (006-028) for face recognition, identity, file_uuid - Add test scripts for ASR, face, search, processing - Add portal frontend (Tauri) - Add config, benchmark, and monitoring utilities - Add model checkpoints and pretrained model references
This commit is contained in:
134
test_large_video_asr.py
Normal file
134
test_large_video_asr.py
Normal file
@@ -0,0 +1,134 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test ASR processor on a single large video file.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
import json
|
||||
import tempfile
|
||||
import time
|
||||
import signal
|
||||
from pathlib import Path
|
||||
|
||||
# Add scripts directory to path
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "scripts"))
|
||||
|
||||
|
||||
def test_large_video(video_path, output_dir="test_large_output"):
|
||||
"""Test ASR on a large video file."""
|
||||
if not os.path.exists(video_path):
|
||||
print(f"Video file not found: {video_path}")
|
||||
return False
|
||||
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
|
||||
# Create output file path
|
||||
video_name = os.path.splitext(os.path.basename(video_path))[0]
|
||||
output_file = os.path.join(output_dir, f"{video_name}.asr.json")
|
||||
|
||||
print(f"Testing ASR on: {os.path.basename(video_path)}")
|
||||
print(f"Output: {output_file}")
|
||||
|
||||
# Run ASR processor with timeout
|
||||
# Use the script directly
|
||||
script_path = os.path.join(os.path.dirname(__file__), "scripts", "asr_processor.py")
|
||||
|
||||
cmd = [
|
||||
"/opt/homebrew/bin/python3.11",
|
||||
script_path,
|
||||
"--video",
|
||||
video_path,
|
||||
"--output",
|
||||
output_file,
|
||||
"--model-size",
|
||||
"tiny", # Use smallest for testing
|
||||
"--progress",
|
||||
]
|
||||
|
||||
print(f"Command: {' '.join(cmd)}")
|
||||
|
||||
start_time = time.time()
|
||||
|
||||
try:
|
||||
# Run with timeout (2 hours for 2GB file)
|
||||
timeout = 7200 # 2 hours
|
||||
|
||||
# Create a process
|
||||
proc = subprocess.Popen(
|
||||
cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
|
||||
)
|
||||
|
||||
# Wait with timeout
|
||||
try:
|
||||
stdout, stderr = proc.communicate(timeout=timeout)
|
||||
returncode = proc.returncode
|
||||
except subprocess.TimeoutExpired:
|
||||
print(f"Process timed out after {timeout} seconds")
|
||||
proc.kill()
|
||||
stdout, stderr = proc.communicate()
|
||||
returncode = -1
|
||||
|
||||
elapsed = time.time() - start_time
|
||||
|
||||
print(f"Elapsed time: {elapsed:.2f} seconds")
|
||||
print(f"Return code: {returncode}")
|
||||
|
||||
if stdout:
|
||||
print(f"STDOUT (last 10 lines):")
|
||||
for line in stdout.strip().split("\n")[-10:]:
|
||||
print(f" {line}")
|
||||
|
||||
if stderr:
|
||||
print(f"STDERR (last 20 lines):")
|
||||
for line in stderr.strip().split("\n")[-20:]:
|
||||
print(f" {line}")
|
||||
|
||||
# Check output file
|
||||
if os.path.exists(output_file):
|
||||
try:
|
||||
with open(output_file, "r") as f:
|
||||
data = json.load(f)
|
||||
print(
|
||||
f"Success! Output file created with {len(data.get('segments', []))} segments"
|
||||
)
|
||||
print(f"Processing mode: {data.get('processing_mode', 'unknown')}")
|
||||
print(f"Chunk count: {data.get('chunk_count', 1)}")
|
||||
return True
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"Output file is not valid JSON: {e}")
|
||||
return False
|
||||
else:
|
||||
print("Output file not created")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error running ASR: {e}")
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Test with a large video file
|
||||
video_path = "../test_video/1636719d-c31f-78ac-f1dd-8ab0b0b36c66.mov"
|
||||
|
||||
# Check if file exists
|
||||
if not os.path.exists(video_path):
|
||||
# Try absolute path
|
||||
video_path = (
|
||||
"/Users/accusys/test_video/1636719d-c31f-78ac-f1dd-8ab0b0b36c66.mov"
|
||||
)
|
||||
|
||||
if not os.path.exists(video_path):
|
||||
print(f"Large video file not found at {video_path}")
|
||||
print("Please specify a different video file path.")
|
||||
sys.exit(1)
|
||||
|
||||
success = test_large_video(video_path)
|
||||
|
||||
if success:
|
||||
print("\n✅ Large video ASR test PASSED")
|
||||
sys.exit(0)
|
||||
else:
|
||||
print("\n❌ Large video ASR test FAILED")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user