← 一覧に戻る

whosaid

GitHub ↗ Python 最終push: 2026/4/25 13:25

WIP(現在進行中)

Work In Progress

このプロジェクトで現在進行中の作業と、過去のスナップショットを記録する。

現在の状況

(以下、README / HIKITUGI.md / 直近コミット履歴からの推測。実際の進捗とずれていれば次回更新時に修正する)

プロジェクトの現在地

  • 目的: 動画ファイル → 文字起こし CLI whosaid
  • 2エンジン構成:
    • デフォルト: AssemblyAI(話者分離あり、$0.23/hr)
    • --no-diarize: Kotoba-Whisper v2.0 ローカル(無料、APIキー不要)
  • GitHub: https://github.com/ichirokisanuki/whosaid (Private)
  • ブランチ: main(origin と同期済み)

直近の作業の流れ

ローカル ASR の日本語ハルシネーション対策を段階的に進めてきた:

  1. Whisper turbo → 無音で「ご視聴ありがとうございました」を吐く問題
  2. large-v3 + Silero VAD 化(4d9f0b1
  3. faster_whisper の良性 RuntimeWarning を抑制(8777944
  4. HF Hub の未認証通知も抑制(ee48d36
  5. デフォルトを Kotoba-Whisper v2.0 に切替(1f9f1f9) ← 現在地

未コミットの変更

  • HIKITUGI.md(プロジェクト引き継ぎメモ、untracked)
  • .devnotes/(このファイル群、新規導入)

次にやりそうなこと(HIKITUGI.md §11 の候補メモより)

  • --model フラグで Whisper モデルを切替可能に(現状は kotoba-whisper-v2.0 ハードコード)
  • initial_prompt でドメインヒント注入(参加者名、専門用語など)
  • 16kHz mono WAV で抽出(Whisper のネイティブ入力に合わせる)
  • 句読点付与(LLM 後処理 or punctuators
  • ReazonSpeech v2 への乗り換え検討(NeMo 系)

詰まっていること

特になし。動作する状態。


過去のWIPアーカイブ

(新しい「現在の状況」を書く前に、古いものをここに追記でアーカイブする。新しいものが上)

DEVLOG(作業ログ)

開発日誌

このプロジェクトでの作業を時系列で記録する。 最新のエントリが上に来る。


最近のコミット

README

whosaid

動画ファイルを文字起こしする CLI。

  • デフォルト: AssemblyAI で話者分離付き文字起こし(話者A/B/C...のラベル付き)
  • --no-diarize: ローカルの Whisper (faster-whisper) で無料文字起こし(API キー不要)

セットアップ

# ffmpeg(未導入の場合)
brew install ffmpeg

# Python 環境
python -m venv .venv
source .venv/bin/activate
pip install -e .

# AssemblyAI を使う場合のみ必要
export ASSEMBLYAI_API_KEY=your_api_key_here

使い方

# 話者分離あり(AssemblyAI、有料)
whosaid sample.mp4 -o sample.json

# 話者分離なし(Whisper ローカル、無料)
whosaid sample.mp4 --no-diarize -o sample.json

# 話者数をヒントとして指定(精度向上)
whosaid sample.mp4 --speakers 5 -o sample.json

オプション

フラグ 説明
video_path (必須) 入力動画ファイル
-o, --output 出力 JSON パス。省略時は <動画名>.json
--no-diarize 話者分離せず、ローカル Whisper を使う(無料、APIキー不要)
--speakers N 想定話者数 (1-10)。--no-diarize のときは無視
--keep-audio 抽出した音声ファイルを残す(デバッグ用)

出力 JSON

engine: "assemblyai" (デフォルト)

{
  "engine": "assemblyai",
  "audio_duration": 123.45,
  "language_code": "ja",
  "full_text": "...",
  "utterances": [
    {
      "speaker": "A",
      "start": 1200,
      "end": 4500,
      "text": "こんにちは",
      "confidence": 0.96
    }
  ]
}

engine: "kotoba-whisper-v2.0" (--no-diarize)

{
  "engine": "kotoba-whisper-v2.0",
  "audio_duration": 123.45,
  "language_code": "ja",
  "full_text": "...",
  "utterances": [
    {
      "start": 1200,
      "end": 4500,
      "text": "こんにちは",
      "confidence": null
    }
  ]
}

speaker フィールドは含まれません。start / end はミリ秒。

注意

  • 初回 --no-diarize 実行時に Kotoba-Whisper v2.0 (約756MB) がダウンロードされます。~/.cache/huggingface/ にキャッシュされ、2回目以降は即起動。Whisper large-v3 を日本語 fine-tune した派生モデルで、日本語精度は本家 large-v3 より良好かつ軽量・高速。Silero VAD でハルシネーションも抑制。
  • AssemblyAI 利用時は $0.23/時間程度の課金(話者分離込み)。アカウント作成時に $50 分の無料クレジットあり。