メインコンテンツまでスキップ

技術的実現性

YouTube チャンネルの動画内で話された言葉を検索し、曖昧検索(表記ゆれ対応)でタイムスタンプ付きリンクを返すサービスの技術調査。

主要コンポーネント

1. 動画一覧の取得

  • YouTube Data API v3 でチャンネルの全動画リストを取得
  • 1日10,000ユニットのクォータ制限あり

2. 字幕(文字起こし)の取得

  • youtube-transcript-plus(TypeScript)で自動生成字幕を取得可能(タイムスタンプ付き)
  • YouTube の自動字幕は精度がそこそこだが、ほとんどの動画で利用可能
  • 字幕がない動画は Whisper(OpenAI の音声認識)で自前で文字起こしも可能
  • YouTube Data API v3 のクォータを消費しない非公式ライブラリ(YouTube の Innertube API を使用するため)

3. 曖昧検索(日本語の表記ゆれ対応)

  • pykakasi で漢字→ひらがな/カタカナ変換
    • 例:「最高」→「さいこう」
  • 長音変換:「さいこう」↔「さいこー」
  • 検索語とテキストの両方を正規化して比較

検索の流れ

ユーザー入力: 「最高」
↓ pykakasi で変換
正規化形: 「さいこう」「さいこー」「最高」「サイコー」
↓ DB内の正規化済み字幕テキストと照合
一致する動画 + タイムスタンプを返す

4. タイムスタンプ付きリンク

  • YouTube は https://youtu.be/VIDEO_ID?t=秒数 形式で特定時間にリンク可能
  • 字幕データにはタイムスタンプが含まれているのでそのまま使える

制約・注意点

項目詳細
自動字幕の精度話者の滑舌や専門用語で誤認識あり
字幕なし動画Whisper で補完できるが処理時間がかかる
YouTube API のクォータ1日10,000ユニットの制限(動画数が多いチャンネルは注意)
初回のデータ取得数百本の動画があるチャンネルだと字幕取得に時間がかかるので、事前にDB化が現実的

結論

十分実現可能なプロジェクト。 既存のOSSライブラリとAPIの組み合わせで主要機能はすべて構築できる。