whosaid
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 の日本語ハルシネーション対策を段階的に進めてきた:
- Whisper turbo → 無音で「ご視聴ありがとうございました」を吐く問題
- large-v3 + Silero VAD 化(
4d9f0b1) - faster_whisper の良性 RuntimeWarning を抑制(
8777944) - HF Hub の未認証通知も抑制(
ee48d36) - デフォルトを 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(作業ログ)
開発日誌
このプロジェクトでの作業を時系列で記録する。 最新のエントリが上に来る。
最近のコミット
- d728521 ドキュメント内の WhoSaid 表記を whosaid に統一(リポジトリ名リネームに合わせて) 2026/4/25
- 5ed03c0 .devnotes 運用を導入(DEVLOG.md, WIP.md) 2026/4/25
- 6068efd プロジェクト引き継ぎメモ HIKITUGI.md を追加 2026/4/25
- 1f9f1f9 Switch default local ASR to Kotoba-Whisper v2.0 for Japanese 2026/4/23
- ee48d36 Suppress HF Hub unauthenticated-request notice during model load 2026/4/23
- 4d9f0b1 Use large-v3 + Silero VAD to curb Japanese Whisper hallucinations 2026/4/23
- 8777944 Suppress benign faster-whisper feature_extractor RuntimeWarnings 2026/4/23
- 660e16e Add --no-diarize flag for free local Whisper transcription 2026/4/23
- f102c2f Initial commit: WhoSaid speaker-diarized transcription CLI 2026/4/23
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 分の無料クレジットあり。