← 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()