電話と会話のトランスクリプター(Raspberry Pi)

AI/ML

概要

このリポジトリは、難聴の高齢者向けに作られた「電話と部屋の会話をほぼリアルタイムに文字化して表示する」装置のソフトウェア部分をまとめたものです。ハードウェアはRaspberry Piと10インチのタッチスクリーン、固定電話ラインにはUSB電話レコーダを接続し、部屋の音声はUSB会議用マイクで拾います。収音した音声はローカルプロセスまたは外部の音声認識サービスへ送り、変換された文字列を大きなフォントで表示することで視覚的に会話を伝えます。Pythonで実装されたシンプルなアプリケーション構成で、設定ファイルや資格情報のサンプルが含まれており、実用を優先した設計が特徴です(約300字)。

GitHub

リポジトリの統計情報

  • スター数: 14
  • フォーク数: 0
  • ウォッチャー数: 14
  • コミット数: 4
  • ファイル数: 9
  • メインの言語: Python

主な特徴

  • 固定電話と室内会話の二系統の音声入力を同時に扱える
  • Raspberry Pi + 10” タッチスクリーンでローカルに字幕を表示
  • Python製のシンプルなアプリ(caption_app.py)で容易に導入可能
  • 外部音声認識サービス用の資格情報テンプレートを用意(credentials.py.example)

技術的なポイント

このプロジェクトは「実用性」と「低コストなハードウェアでの稼働」を重視した設計になっています。中心となるのはcaption_app.pyで、ここが音声の取り込み、認識リクエストの送信、受け取ったテキストの表示を担当します。システムは次の要素で構成されることが想定されます。

  1. 音声入力の取り込み
    • 固定電話用にはUSB電話レコーダが物理的に電話線へタップされ、USB経由でPiに音声を渡します。部屋の会話はUSB会議マイク(あるいはコンデンサーマイク)で収音します。Raspberry Pi上ではALSAやPulseAudioを使って複数のUSBオーディオデバイスを扱い、個別のストリームまたはミックスしたストリームを用意する設計が考えられます。
  2. 低遅延の処理パイプライン
    • 「ほぼリアルタイム」を達成するためには、音声を小さなチャンクでバッファしつつ逐次的に音声認識APIへ送るストリーミング処理が重要です。ローカルでのVAD(Voice Activity Detection)や簡易ノイズ除去(門限フィルタやスペクトル減衰)を入れることで無音区間の無駄な送信を避け、APIコストと遅延を削減します。
  3. 音声認識エンジンとの接続
    • リポジトリにcredentials.py.exampleが含まれていることから、外部の音声認識サービス(クラウドAPIやSaaS)を利用する想定です。APIキーやエンドポイント情報はこのファイルをコピーして設定する流れになります。一方でRaspberry Piの処理能力に応じて、オフラインのSTT(例: Whisper系のローカル推論)を試す選択肢も現実的です。どちらを使うかでプライバシー、遅延、コストのトレードオフが変わります。
  4. UIと表示
    • 10インチのタッチスクリーン上に大きな文字で字幕を表示することが主目的なので、UIは読みやすさを最優先にしたシンプル設計です。フォントサイズや表示領域の切り替え、改行や発話区切りの視覚化など、ユーザビリティに直結する部分が重要です。タッチ操作で設定を切り替えられると実運用で便利になります。
  5. 実運用上の配慮
    • 電話と部屋会話を同時に扱う場合、音源の切り替え(どちらを優先するか)、エコーやハウリング対策、話者分離(発話者タグ付け)などの課題があります。簡易的には通話検出で切り替え、もしくは両方を独立に表示するUIで運用リスクを減らします。さらに、認識誤りが多い場合に備えたログ保存や、後で見返せる履歴機能があると実務的です。

全体としてこのリポジトリは「ハードウェアとクラウド(またはローカル推論)の連携で実際に使えるキャプション装置を素早く組める」ことを狙った実装例になっています。詳しいチューニング(サンプリング周波数、バッファ長、APIのストリーミング設定、エラーハンドリング)は実際の環境に応じて調整が必要ですし、プライバシーを重視する場合はクラウド送信を避ける設計を検討してください。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • LICENSE: file
  • README.md: file
  • caption_app.py: file
  • credentials.py.example: file

その他のファイル(例):設定やユーティリティ、起動スクリプト、実装の補助ファイルなど計9ファイル構成。シンプルな構成で入り口がわかりやすく、実機に持っていって試すまでの敷居が低いのが特徴です。

まとめ

Raspberry Pi上で動く実用的なリアルタイム字幕装置のリファレンス実装。導入とカスタマイズが容易。

リポジトリ情報:

READMEの抜粋:

Telephone and Conversation Transcriber

My elderly father is extremely deaf and struggles to hear people, particularly on the landline phone. So I built this — a Raspberry Pi with a 10” touchscreen that sits next to his phone and transcribes conversations in near real-time, so he can read what people are saying.

It picks up both phone calls (via a USB telephone recorder tapped into the landline) and in-room conversation (via a USB conference microphone), and displays live captions in large, c…