【要約】AmiVoice リアルタイム認識 × レイヤー型 LLM で作る、完全ローカルの面接練習アプリ [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
面接対策を行うユーザーが、テキストでの準備と実際の口頭での回答能力の乖離に直面している。頭で理解していても、声に出すと詰まる、あるいは結論が後回しになるといった問題が発生する。
- ・「書ける」ことと「話せる」ことのギャップを埋める手段の欠如。
- ・言い淀みや話の長さといった、音声特有の課題を可視化できない。
- ・LLMに丸投げすると、質問が複雑化しすぎる等の制御不能な挙動が生じる。
// Approach
開発者は、自端末で完結する軽量な構成と、LLMの挙動を制御するレイヤー設計を採用した。APIキーの露出を防ぐため、FastAPIを中継層とした三段構成を構築している。
- ・レイヤー型LLM: 役割を4層(ThemePlanner, QuestionSelector, CombinedEvaluator, FeedbackGenerator)に分離。
- ・評価の二層化: 「思考(内容)」と「表現(伝え方)」を分けて評価。
- ・ラダリング制御: 深掘りの階層(Surface/Reason/Core)をPython側で決定。
- ・音声処理: AmiVoiceの
keepFillerToken=1を利用し、言い淀みを可視化。
// Result
開発者は、音声認識の誤りをLLMの文脈理解で補完し、実用的なフィードバックを実現した。これにより、ユーザーは自身の話し方の癖を客観的に把握できる。
- ・ASRの誤認識(例: ストラングラー・パターン)をLLMが文脈から補正。
- ・言い淀みの可視化により、簡潔な表現への改善を促す。
- ・ローカル完結型により、導入の容易さとセキュリティを両立。
Senior Engineer Insight
> 本設計の白眉は、LLMの非決定性をPython側のロジックで制御する「ガードレール設計」にある。LLMに全ての判断を委ねず、深掘りの階層や最大深度をコードで担保する手法は、実戦的なシステム開発において極めて重要だ。また、ASRの誤認識をLLMの文脈理解で補完する構成は、音声UIの堅牢性を高める優れたアプローチである。ただし、商用展開には認証やレート制限の実装が必須であり、現状はプロトタイプとしての評価が妥当だ。