alesaccoia/VoiceStreamAI

Near-Realtime audio transcription using self-hosted Whisper and WebSocket in Python/JS

解決する課題

VoiceStreamAI は、Web ブラウザからサーバーへオーディオをストリーミングすることで、ニアリアルタイムのオーディオ文字起こしを実行する方法を提供します。音声活動検知 (VAD) を使用して実際の音声のみを文字起こしすることで、計算負荷とネットワーク帯域幅を削減し、連続的なオーディオストリームを効率的に処理するという課題に対処します。

仕組み

このシステムは、WebSockets を介して通信する Python ベースのサーバーと JavaScript クライアントで構成されています。クライアントはオーディオをキャプチャし、チャンクとしてサーバーに送信します。サーバーはモジュール式のパイプラインを使用してこのオーディオを処理します:

  1. 音声活動検知 (VAD): Silero や Pyannote などのモデルを使用して、サーバーは音声が含まれるオーディオセグメントを特定します。
  2. 文字起こし: システムは自動音声認識 (ASR) モデルを使用し、デフォルトでは faster-whisper(OpenAI の Whisper の高性能版)を使用して、検出された音声をテキストに変換します。
  3. バッファリング戦略: チャンクの境界で単語が途切れるのを防ぐため、システムは「SilenceAtEndOfChunk」戦略を採用しており、文字起こしを開始する前に音声の休止を待ちます。

対象者

異なる VAD および ASR モデルの入れ替えを可能にする、柔軟でモジュール式のアーキテクチャを備えたリアルタイム音声文字起こし機能が必要なアプリケーションを構築しようとしている開発者。

ハイライト

  • モジュール設計: Factory パターンと Strategy パターンを使用して、新しい VAD および ASR 技術を簡単に統合できます。
  • リアルタイムストリーミング: WebSockets を活用して、クライアントとサーバー間の低遅延通信を実現します。
  • 効率的な処理: VAD の統合により、音声以外のオーディオ処理を最小限に抑え、GPU/CPU リソースを節約します。
  • カスタマイズ可能: クライアントは JSON メッセージを介して、言語、チャンクの長さ、および処理戦略を動的に構成できます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト