このリポジトリで録画・音声ファイルから書き起こしを作るための手順です。
recap_0513 のMP4書き起こしで使った方式を、sessions の .m4a ファイルにも再利用します。
- macOS
- Homebrew
uvxgit-lfsffmpeg
未導入の場合は以下を実行します。
brew install ffmpeg git-lfs
git lfs installmlx-whisper を uvx 経由で実行し、テキスト、字幕、タイムスタンプ、JSONをまとめて出力します。
uvx --from mlx-whisper mlx_whisper \
"入力ファイルパス" \
--model mlx-community/whisper-large-v3-turbo \
--language ja \
--output-dir "出力ディレクトリ" \
--output-name "出力ファイル名" \
--output-format all \
--verbose False生成される主なファイルは以下です。
.txt: 読み物として扱いやすいプレーンテキスト.srt: 字幕ファイル.vtt: WebVTT字幕ファイル.tsv: 開始時刻、終了時刻、テキストを含む表形式.json: セグメント、トークン、タイムスタンプなどを含む詳細データ
たとえば sessions/Day1 keynote.m4a を書き起こす場合は以下です。
uvx --from mlx-whisper mlx_whisper \
"sessions/Day1 keynote.m4a" \
--model mlx-community/whisper-large-v3-turbo \
--language ja \
--output-dir sessions \
--output-name "Day1 keynote" \
--output-format all \
--verbose False既存の _original.txt を更新したい場合は、生成された .txt の内容を確認してからリネームまたは差し替えます。
mv "sessions/Day1 keynote.txt" "sessions/Day1 keynote_original.txt"複数ファイルを処理する場合も、まず1ファイルずつ実行して品質を確認します。固有名詞や製品名は誤認識されやすいため、セッション要約に使う前に必ず目視確認します。
生成ファイルに末尾空白や余分な空行が入ることがあるため、コミット前に整えます。
perl -0pi -e 's/\n+\z/\n/' sessions/*.srt sessions/*.vtt
perl -pi -e 's/[ \t]+$//' sessions/*.tsv
git diff --check対象ファイルが存在しない場合はシェルがエラーにすることがあります。その場合は存在する拡張子だけを指定して実行します。
MP4など大きな録画ファイルを追加する場合はGit LFSで管理します。
git lfs track "*.mp4"
git add .gitattributesコミット前に、動画本体が通常のGit差分ではなくLFSポインタになっていることを確認します。
git lfs ls-files
git diff --cached -- "対象の動画ファイル.mp4"差分に以下のような3行のポインタが表示されれば正常です。
version https://git-lfs.github.com/spec/v1
oid sha256:...
size ...
このリポジトリでは、ファイル変更後にRed Teamレビューを行ってからコミット・プッシュします。
最低限、以下を確認します。
- 書き起こしに明らかな固有名詞の誤りや誤解を招く箇所がないか
- セッション要約へ転記する場合、内容が発話と対応しているか
- 追加ファイルに意図しない一時ファイルや不要な生成物が含まれていないか
- 大容量ファイルがGit LFS管理になっているか
- 機密情報らしき文字列が含まれていないか
- Markdownや字幕ファイルのリンク、見出し、空白に問題がないか
確認用コマンド例です。
git status --short --branch
git diff --cached --stat
git diff --check
rg -n "(sk-[A-Za-z0-9]|AKIA[0-9A-Z]{16}|BEGIN (RSA|OPENSSH|EC|PRIVATE)|password|PASSWORD|api[_-]?key|secret)" sessions recap_0513 || truejson 内の tokens のようなWhisper由来のフィールド名は機密情報ではありません。ヒットした文字列は文脈を確認して判断します。
レビュー後、関連ファイルだけをステージしてコミットします。
git add 対象ファイル
git commit -m "Add session transcript"
git push origin main