用途:把视频或音频转成带时间戳与说话人标签的文字稿,适用于直播回放、会议录音、播客等场景。
依赖:ffmpeg 用于从视频提取音频;whisperX(pip install whisperx)负责识别、对齐与说话人分离;启用说话人分离需设置环境变量 HF_TOKEN。它直接调用 whisperX Python API,不使用本地 9876 端口的 Whisper HTTP server。
主要能力:脚本自动判断输入,音频直接转写,视频先提取为 16kHz mono WAV;输出两个文件——<name>.txt 按说话人分段并带 [MM:SS] 时间戳,<name>.json 为完整 whisperX 输出含词级时间戳。关键参数:--model(默认 large-v3,最准最慢)、--language(默认 zh)、--diarize(默认关闭,启用需 HF_TOKEN)、--device(默认 cpu,可选 cuda)、--batch-size(默认 8,内存不足可调低)。
使用方式:长音频必须用 nohup 后台执行,避免会话超时,例如 nohup python3 {skillDir}/scripts/transcribe.py /path/to/video.mp4 --output-dir /path/to/output --output-name transcript --diarize > /tmp/transcribe.log 2>&1 &。可先用 ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 <file> 获取时长;文件名含 CJK 字符时先建 symlink,如 ln -sf "<原路径>" /tmp/input-video.mp4,避免编码问题。长任务可用 cron watcher 每 5 分钟查进程状态。完成后可将 .txt 复制到 workspace/transcripts/ 并按 <原始文件名>.txt 命名。
限制与注意:说话人分离依赖 pyannote,首次运行需下载约 1GB 模型;CPU 转写占用 300-400%,避免并行重负载;性能参考为 CPU(M 系列)下 30 分钟约 15 分钟、1 小时约 30 分钟、2 小时约 60 分钟。关于收费、平台支持等资料暂未提供。