transcribe-video について
transcribe-videoは、ローカル動画から文字起こしを作成するスキルです。埋め込み字幕を優先し、字幕がない場合はAPIで音声認識を行い、整形したテキストを動画と同じ場所に保存します。
主な機能
- 01埋め込み字幕トラックの検出
- 02字幕の抽出とテキスト整形
- 03必要に応じたAPI音声文字起こし
- 04動画と同じ場所へのテキスト保存
活用シーン
- 01字幕付き動画からテキストを抽出
- 02埋め込み字幕のない動画を文字起こし
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ feiskyer/ video-skills --skill transcribe-videoインストール後、Claude Code で/transcribe-videoを入力して読み込まれたか確認します。
同梱ファイルscripts/transcribe.py
詳細
動画の文字起こし
ローカルの動画ファイルから文字起こしテキストを抽出します。このスキルでは、まず埋め込み字幕を確認します(より高速で正確なため)。字幕が見つからない場合にのみ、API ベースの音声認識に切り替えます。
Step 1: 動画ファイルを特定する
ユーザーに動画ファイルのパスを確認します。対応形式:mp4、mkv、mov、avi、webm、および ffmpeg で処理できるすべての形式。
Step 2: 埋め込み字幕を確認する
ffprobe -v quiet -select_streams s -show_entries stream=index,codec_name:stream_tags=language,title -of json "<video_path>"
- 字幕ストリームがある場合 → Step 3a(埋め込み字幕を抽出)へ進みます
- 字幕ストリームがない場合 → Step 3b(API による文字起こし)へ進みます
Step 3a: 埋め込み字幕を抽出する
字幕トラックが複数ある場合は、動画の主な言語に一致するものを優先するか、ユーザーに使用するトラックを確認します。
# Extract as SRT (stream index 0 for first subtitle track; adjust if needed)
ffmpeg -i "<video_path>" -map 0:s:0 -c:s srt "<output_path>.srt" -y
抽出後、SRT を整形済みテキストに変換します:
- シーケンス番号を削除します
- タイムスタンプ行(
\d{2}:\d{2}:\d{2}に一致する行)を削除します - HTML のようなタグ(
<i>、</i>など)を削除します - 残った空でない行を結合します
整形済みの文字起こしを、動画ファイルと同じ場所に <video_name>.txt として保存します。これで完了です。Step 3b はスキップしてください。
Step 3b: API による文字起こし
同梱の文字起こしスクリプトを使用します。スクリプトは ~/.transcribe_video.env から認証情報を読み込みます。
前提条件の確認
-
環境設定ファイルが存在することを確認します:
test -f ~/.transcribe_video.env && echo "OK" || echo "MISSING" -
存在しない場合は、
~/.transcribe_video.envを作成し、次の内容を記述するようユーザーに伝えます:OPENAI_API_KEY=your-key-here # Optional Base URL: # OPENAI_API_BASE=https://<base-url>/v1/ # Optional Model Name: # TRANSCRIBE_MODEL=gpt-4o-transcribe続行する前に、ユーザーの確認を待ちます。
-
依存関係を確認します:
python3 -c "from openai import OpenAI; from dotenv import load_dotenv; print('OK')" 2>&1不足している場合:
pip install openai python-dotenv
文字起こしを実行する
python3 <skill_directory>/scripts/transcribe.py "<video_path>"
スクリプトは音声を抽出して(WAV、16kHz モノラル)、API に送信し、動画ファイルと同じ場所に <video_name>.txt として文字起こしを保存します。
Step 4: 結果を報告する
ユーザーに次の内容を伝えます:
- 文字起こしファイルの保存場所
- 行数/おおよその単語数
- 埋め込み字幕と API による文字起こしのどちらを使用したか
- プレビューとして冒頭の数行を表示します