← back to AgentAbrams

media/transcript.py

63 lines

#!/usr/bin/env python3
"""
transcript.py — Generate transcript from audio using OpenAI Whisper.

Usage:
    python3 media/transcript.py <audio.mp3>

Requires: pip install openai-whisper
"""

import subprocess
import sys
from pathlib import Path


def generate_transcript(audio_file: str) -> Path:
    out_dir = Path("media/output")
    out_dir.mkdir(parents=True, exist_ok=True)

    try:
        subprocess.run(
            [
                "whisper",
                audio_file,
                "--model", "base",
                "--output_format", "txt",
                "--output_dir", str(out_dir),
            ],
            check=True,
            timeout=300,
        )
        stem = Path(audio_file).stem
        result = out_dir / f"{stem}.txt"
        if result.exists():
            # Rename to standard name
            final = out_dir / "transcript.txt"
            result.rename(final)
            print(f"Transcript generated: {final}")
            return final
        else:
            print(f"Whisper completed but output not found at {result}")
            return result
    except FileNotFoundError:
        print("WARNING: whisper not installed. Creating transcript from script instead.")
        # Fallback: if we have a script, use that
        fallback = out_dir / "transcript.txt"
        fallback.write_text(
            "(Transcript auto-generation requires whisper. Install: pip install openai-whisper)\n",
            encoding="utf-8",
        )
        return fallback


def main():
    if len(sys.argv) < 2:
        print("Usage: transcript.py <audio.mp3>", file=sys.stderr)
        sys.exit(2)
    generate_transcript(sys.argv[1])


if __name__ == "__main__":
    main()