音声文字起こし
音声ファイルをテキストに変換する。
絶対遵守事項
- 長時間処理(10分以上の音声)はPID・ログ・終了コードを保存し、親process groupから分離して実行
対話フロー
Step 1: ファイル指定
「文字起こしする音声ファイルのパスを指定してください」
対応形式: mp3, wav, m4a, ogg, flac
Step 2: モデル選択
「文字起こしモデルを選択してください」
| # | モデル | 速度 | 精度 | 用途 |
|---|---|---|---|---|
| 1 | tiny | 最高速 | 最低 | テスト用 |
| 2 | base | 高速 | 標準 | 推奨 |
| 3 | small | 中速 | 中精度 | バランス |
| 4 | medium | 低速 | 高精度 | 高品質 |
| 5 | large | 最低速 | 最高 | 最高品質 |
Step 3: 実行
出力先は音声ファイルと同じディレクトリに .txt 拡張子で保存。
# 短い音声(10分以下)はフォアグラウンド
uvx transcriber_tool transcribe "[音声ファイルパス]" --model-size [モデル] --output "[出力パス].txt"
# 長い音声(10分以上)はバックグラウンド
# 以下はLinux / WSLの例。macOSではlaunchdなどservice managerを使う
TRANSCRIPTION_STATE_DIR="$(mktemp -d)"
setsid bash -lc '
state_dir="$1"
input="$2"
model="$3"
output="$4"
echo $$ > "$state_dir/pid"
uvx transcriber_tool transcribe "$input" --model-size "$model" --output "$output" > "$state_dir/transcription.log" 2>&1
rc=$?
echo "$rc" > "$state_dir/exit"
exit "$rc"
' bash "$TRANSCRIPTION_STATE_DIR" "[音声ファイルパス]" "[モデル]" "[出力パス].txt" >/dev/null 2>&1 &
sleep 2
ps -o pid,ppid,sid,pgid,stat,etime,cmd -p "$(cat "$TRANSCRIPTION_STATE_DIR/pid")"
echo "State: $TRANSCRIPTION_STATE_DIR"
Step 4: 進行状況確認(バックグラウンド実行時)
# ログ確認
tail -f "$TRANSCRIPTION_STATE_DIR/transcription.log"
# 完了確認
cat "$TRANSCRIPTION_STATE_DIR/exit"
xangiでturnを跨ぐ場合は、処理の末尾で終了状態を保存した後に xangi tool trigger を呼ぶ。triggerを設定できない環境では、ログ・終了状態の確認をユーザーへ明示的に引き継ぎ、自動で戻ると約束しない。
Step 5: 完了報告
文字起こし完了後、以下を報告:
- 出力ファイルパス
- 文字数(概算)
- 処理時間
処理時間目安
| 音声長 | tiny | base | medium | large |
|---|---|---|---|---|
| 10分 | 30秒 | 1分 | 2-3分 | 5分 |
| 30分 | 1-2分 | 2-3分 | 5-8分 | 10-15分 |
| 60分 | 2-3分 | 4-6分 | 10-15分 | 20-30分 |
トラブルシューティング
- transcriber_tool未インストール: 初回実行時に自動インストールされる
- タイムアウト:
setsidで分離し、PID・ログ・終了コードを保存する - メモリ不足: より小さいモデル(tiny/base)を使用
- 日本語の精度が低い: モデルを large にする