注目の機能: 切り替え可能なライブ翻訳モードの実装¶
当社のプラグイン可能な音声アシスタント フレームワークは、最大限の柔軟性を実現するように設計されています。このガイドでは、簡単な音声コマンドでオンとオフを切り替えることができるライブ翻訳モードという強力な機能を説明します。ドイツ語でアシスタントに話しかけ、ポルトガル語で出力され、すぐに通常の動作に戻ることを想像してください。
これは、コア エンジンを変更するのではなく、ルール設定ファイル自体を巧みに操作することで実現されます。
使用方法¶
これを設定するには、「FUZZY_MAP_pre.py」ファイルに 2 つのルールを追加し、対応するスクリプトを作成する必要があります。
1.トグル ルール: このルールは、変換モードをオンまたはオフにするコマンドをリッスンします。
# Rule to turn the translation mode on or off
('', r'^(portugiesisch|übersetzung|übersetzer) (aktivieren|aktiviert|aktiv|einschalten|deaktivieren|ausschalten|toggle|Dogge|doppelt)\b', 95, {
'command_flags': re.IGNORECASE,
'on_match_exec': [CONFIG_DIR / 'toggle_translation_mode.py']
}),
「Übersetzung einschalten」(翻訳をオンにする)と言うと、toggle_translation_mode.py スクリプトが実行されます。
2.翻訳ルール: これは「キャッチオール」ルールで、アクティブにすると、任意のテキストと一致し、翻訳スクリプトに送信されます。
# ANCHOR: The following line is controlled by the toggle script.
# TRANSLATION_RULE
('', r'.+', 5, {'command_flags': re.IGNORECASE,'on_match_exec': [CONFIG_DIR / 'translate_from_to.py']}),
ここで重要なのは「# TRANSLATION_RULE」コメントです。これは、トグル スクリプトがその下のルールを検索して変更するために使用する「アンカー」として機能します。
仕組み: カーテンの向こう側の魔法¶
このメソッドは、内部状態を使用する代わりに、ファイル システム上のルール マップを直接編集します。 「toggle_translation_mode.py」スクリプトは構成マネージャーとして機能します。
ルールを検索します: トリガーされると、スクリプトは
FUZZY_MAP_pre.pyの内容を読み取ります。固有のアンカー コメント# TRANSLATION_RULEを検索します。状態を切り替えます:
無効にするには: アンカーの下のルール行がアクティブな場合、スクリプトは行の先頭に「#」を追加し、事実上コメントアウトして無効にします。
有効にするには: ルール行がすでにコメントアウトされている場合、スクリプトは先頭の
#を慎重に削除し、ルールを再度有効にします。
保存して再ロード: スクリプトは、変更されたコンテンツを
FUZZY_MAP_pre.pyに保存します。次に、特別なトリガー ファイル (例:RELOAD_RULES.trigger) を作成します。メイン サービスは、このトリガー ファイルを常に監視します。これが表示されると、サービスはその構成が変更されたことを認識し、ディスクからルール マップ全体を再ロードし、変更を即座に適用します。
設計哲学: 利点と考慮事項¶
構成ファイルを直接変更するこのアプローチは、エンドユーザーにとっての明確さと単純さのために選択されました。
利点:¶
高い透明性: システムの現在の状態が常に表示されます。
FUZZY_MAP_pre.pyファイルをざっと見ると、変換ルールがアクティブであるかコメントアウトされているかがすぐにわかります。コア エンジンの変更なし: この強力な機能は、コア ルール処理エンジンの 1 行も変更することなく実装されました。これはプラグイン システムの柔軟性を示しています。
開発者にとって直感的: 構成の一部をコメントアウトして有効または無効にするという概念は、コードまたは構成ファイルを扱ったことのある人にとっては馴染みのある、シンプルで信頼できるパターンです。
考慮事項:¶
ファイル システムのアクセス許可: この方法が機能するには、アシスタントのプロセスが独自の構成ファイルへの書き込みアクセス許可を持っている必要があります。一部の高度なセキュリティ環境では、これが考慮される可能性があります。