特定語彙に絞った読唇術AIの検証

はじめに

EdgeTech+ West 2026への出展に向けて、「特定の話題に限定した単語であれば、唇の映像のみから発話内容を予測できるのではないか」という仮説を立て、リアルタイム読唇術システムの開発に取り組みました。
システム開発の過程でデータセットの自動構築からモデル学習、リアルタイム推論まで一貫したパイプラインを構築し、様々な技術的工夫や知見が得られました。本コラムでは、その取り組み内容の一部についてご紹介したいと思います。

動作環境・使用技術

本システムの開発および動作確認は以下の環境・技術を用いて行いました。

  • 言語・フレームワーク
    • Python, PyTorch
  • モデル構造
    • LipNetベース(3D-CNN + Bi-GRU) + CTC Loss
  • データ前処理・ツール
    • WhisperX, MediaPipe Face Mesh, OpenCV, pyopenjtalk

読唇術モデルの仮説とアプローチ

一般的な読唇術(Lip Reading)は膨大なデータと計算リソースを必要とし、非常に難易度の高いタスクです。
特に「日本語」は、英語などの他言語と比較して読唇術の難易度が一段と高い言語だと言われています。
英語には多様な母音や、「f/v(下唇を噛む)」「th(舌を挟む)」といった視覚的に分かりやすい子音が多く存在し、表情筋を大きく使って発話されます。
一方で日本語は、母音が5つ(a, i, u, e, o)と少なく、全体的に口元の動きが控えめです。
喉の奥や舌先だけで発音を区別する子音(k, g, t, dなど)も多いため、映像上は唇の形が全く同じに見える同形異音が頻発してしまいます。

図1. 同形異音の例

このように、口元の映像だけで日本語の発話内容を特定するのは困難です。
しかし、展示会のデモ環境という前提のもと、特定の話題に関する単語(挨拶や専門用語など)に語彙を絞り込めば、同形異音の衝突を大幅に避けられ、軽量なモデルでも十分に推論可能ではないかと考えました。

そこで、本プロジェクトでは以下の2段階のアプローチを採用して単語の予測を行いました。

  1. ビゼーム(視覚音素)への分類

    まず、AIモデルを用いて唇の動きを日本語の母音(a, i, u, e, o)と閉唇(M)、無音(Blank)の合計7クラスのビゼーム時系列データとして予測させます。

  2. 辞書ベースの自動補完による単語予測

    予測されたビゼームの羅列と、予め登録しておいた特定の単語辞書(単語とその母音列のペア)をレーベンシュタイン距離(編集距離)で比較します。
    AIモデルの曖昧な推論結果を、最も類似度の高い単語へと補正することによって最終的な発話内容を決定する仕組みを構築しました。

図2. Lip Reading推論パイプライン

データセット構築パイプラインの工夫

  1. WhisperXによるアライメントと自動分割

    学習用の動画データから、高精度な音声認識エンジンであるWhisperXを用いて単語レベルでのアライメントを行います。
    無音区間を検知し、動画セグメントが最大5.0秒以内に収まるように自動分割するロジックを実装しました。

  2. MediaPipeによる口唇領域の抽出

    MediaPipe Face Meshを用いて顔のランドマークをトラッキングし、口元だけを高精度にクロップして88x88サイズの時系列データに変換します。

  3. 視覚的チェックツールの導入

    抽出したデータに不良データが含まれないよう、時系列データをグリッド画像として書き出すツールを作成し、目視での品質確認と除外を容易にしました。

モデルの学習とデータ拡張

学習モデルには、空間的な特徴を抽出するフロントエンド(3D-CNN)と、前後の時系列の文脈を推論するバックエンド(双方向GRU)を組み合わせた時空間モデルを採用しました。
未知データへの汎化性能を高めるため、学習時には以下のようなデータ拡張を各50%の確率で適用しました。

  • Random Rotation

    顔の傾きへの耐性を付与

  • Spatial Cutout

    口元の一部をランダムな四角形で黒塗りにし、部分的な隠れへの耐性を強化

  • Time Masking

    連続する数フレームを黒塗りにし、時間的な文脈推論を強化

  • Time Stretching

    再生速度を0.8〜1.2倍に変更し、発話速度の違いへ対応

実験結果と評価

開発したシステムを用いて、実際のカメラ映像を使ったリアルタイム推論精度の検証を行いました。

実験1:基本的な挨拶用語の認識
まず、日常的な挨拶に語彙を絞った場合の精度を検証しました。以下の6つの単語の母音構成をあらかじめ辞書に登録し、リアルタイムでの認識テストを行いました

  • さようなら
  • ありがとうございます
  • よろしくおねがいします
  • いってきます
  • ただいま
  • おかえりなさい

以下は全問正解した際の出力結果の画像です。予測されたビゼーム列と最終的に判定された単語が表示されています。
50%程度の母音正解率であっても単語の判定としては正しいものとなっていました。

3. 予測母音と判定結果

結果として、これらの単語に限定した場合の正解率はおよそ70%程度となりました。
限定された語彙であればある程度の推論は可能であることが確認できましたが、展示会デモとして不特定多数の環境で安定稼働させるには、まだ精度に不安が残る結果となりました。

実験2:語彙数を拡大した検証
続いて、同じく挨拶や日常会話に関する単語を30単語用意し、同様の認識テストを行いました。しかし、語彙の選択肢を増やした結果、正解率は20%にも満たないという厳しい結果に終わりました。

結果と考察

実験を通して一定の成果は得られたものの、総合的な精度が想定を大きく下回ったため、最終的にデモ採用は見送ることとなりました。
主な原因としては以下の点が考えられます。

  • 語彙増加に伴う類似母音列の衝突

    予測対象を30単語に増やしたことで、辞書内に母音構成が似通った単語群が増加しました。
    日本語の性質上、母音のみに情報を縮約してしまうと、語彙が増えるほどレーベンシュタイン距離による補完では区別が困難になるという限界が確認できました。

  • 発話の個人差に対する汎化性能の不足

    学習時に様々なデータ拡張を適用したものの、不特定多数の人々の口の開け方の大きさや発話スピード、口元の癖といった多様な発話スタイルを吸収しきれるほどのデータ多様性を、モデルに学習させきれなかったと推測されます。

本アプローチの強みと可能性
このような実験結果に終わりましたが、今回採用した「母音(ビゼーム)のみを学習し、辞書で単語と紐付ける」というアプローチ自体には大きな可能性を感じています。
AIに直接単語そのものを学習させる必要がなく、単語とその母音構成のペアを辞書に登録するだけで新しい語彙を追加・判定できるため、データ収集や再学習のコストを大幅に抑えつつ柔軟に拡張できる非常に強力な手法と言えます。

おわりに

今回は「特定の単語に絞れば読唇術デモが成立するのではないか」という仮説の検証を行いましたが、実用化の壁は想像以上に高いことが分かりました。
結果として今回研究した内容のデモ展示には至りませんでしたが、音声認識AIを活用したアライメントの自動化や、強力なデータ拡張を取り入れた学習ループ、ストリーミング映像に対するリアルタイムな辞書補正の仕組みなど、本プロジェクトで構築した技術基盤は他のAIプロジェクトにも十分に活かせるものです。
引き続き、新しいAI技術の検証にチャレンジしていきたいと思います。