- whisper.cpp base.en transcription on RTX 5060 Ti (GPU 1) - 25,439 videos indexed from /mnt/mediaserver/ - pipeline: ffmpeg extract -> whisper-server infer -> save SRT - thermal cycle: 45min work / 15min rest - fixes: curl quotes for spaces, --convert + WorkingDirectory=/tmp
40 lines
1.3 KiB
Python
Executable File
40 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import sys
|
|
import os
|
|
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "src"))
|
|
|
|
def main():
|
|
if len(sys.argv) < 2:
|
|
print("Usage: mt.py <scan|transcribe|continuous|status>")
|
|
sys.exit(1)
|
|
|
|
cmd = sys.argv[1]
|
|
if cmd == "scan":
|
|
import json
|
|
from indexer import scan
|
|
skip_dur = "--duration" not in sys.argv
|
|
idx = scan(skip_duration=skip_dur)
|
|
print(json.dumps({
|
|
"total": idx["total_videos"],
|
|
"transcribed": idx["transcribed"],
|
|
"pending": idx["total_videos"] - idx["transcribed"],
|
|
}, indent=2))
|
|
elif cmd in ("transcribe", "continuous"):
|
|
from worker import run_once, run_continuous
|
|
run_once() if cmd == "transcribe" else run_continuous()
|
|
elif cmd == "status":
|
|
import json
|
|
with open("/home/jarian/projects/media-transcriber/index.json") as f:
|
|
idx = json.load(f)
|
|
print(f"Total: {idx['total_videos']}")
|
|
print(f"Done: {idx['transcribed']}")
|
|
print(f"Pending: {idx['total_videos'] - idx['transcribed']}")
|
|
print(f"Updated: {idx['last_updated']}")
|
|
else:
|
|
print(f"Unknown command: {cmd}")
|
|
sys.exit(1)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|