【要約】ローカルで完結する音声入力ツール「Koe」を作った(faster-whisper + Ollama、全部オフライン) [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者は、既存の音声入力サービスがクラウド依存であることや、サブスクリプション費用が発生することに課題を感じた。特に、機密情報を扱う現場では音声データの外部送信が許されない。実装過程では、以下の技術的課題に直面した。
- ・Windows環境におけるlocalhost解決に伴う約2.2秒の通信遅延。
- ・Whisperがノイズに対して特定のトークンを繰り返す「幻聴」現象。
- ・マイクドライバの起動遅延による、音声冒頭の欠落問題。
- ・ローカルLLMが意図せず入力を翻訳・言い換えてしまう挙動。
- ・PyInstallerを用いたCUDA同梱時のDLL管理とファイルサイズの肥大化。
// Approach
開発者は、プライバシーと低コストを両立するため、全ての処理をローカルのGPUで完結させる構成を採用した。発生した諸問題に対し、以下の具体的な手法で解決を図った。
- ・通信遅延対策:接続先を127.0.0.1に固定し、Sessionを使い回すことで高速化。
- ・幻聴対策:同じ短い単位が6回以上連続した場合に畳む、確定的な後処理ガードの実装。
- ・頭欠け対策:リングバッファを用い、録音開始時に直前0.3秒を前置するプリロール処理。
- ・LLM制御:入力と出力の言語(CJK)を比較し、不一致時に結果を破棄する言語ガードの導入。
- ・配布最適化:DLLの配置場所をルートに指定し、PyInstallerの重複収集を削ることで軽量化。
// Result
開発者は、プライバシーを完全に担保しつつ、実用的な速度を持つ音声入力ツールを完成させた。主な成果は以下の通りである。
- ・通信遅延を約2.6秒から0.3〜0.5秒へと大幅に削減。
- ・Python未導入環境でも動作する、1.2GBのスタンドアロン配布を実現。
- ・今後はWASAPIループバック録音を用いた、会議の同時通訳機能への拡張を計画中。
Senior Engineer Insight
> 本プロジェクトは、エッジAI実装における「実用的なレイテンシ」の重要性を突いている。特にlocalhostの解決遅延や、LLMの予測不能な挙動への対策は、現場でのデプロイ時に必ず直面する問題だ。セキュリティ要件が極めて厳しい環境において、この「完全オフライン」という設計思想は強力な武器となる。ただし、GPUリソースへの依存度が高いため、ハードウェアスペックに制約がある環境でのスケーラビリティには注意が必要である。