7.6 KiB
7.6 KiB
controller.py - VRCTコントローラーモジュール
概要
VRCTアプリケーションのビジネスロジックを制御するコントローラークラスです。UI層とモデル層の間に位置し、ユーザーの入力を適切な処理に変換し、結果を UI に返す役割を担います。全ての機能制御、設定管理、状態管理を一元的に行います。
主要機能
機能制御
- 翻訳機能の有効化・無効化
- 音声認識機能の制御
- VRオーバーレイの管理
- WebSocketサーバーの制御
設定管理
- アプリケーション設定の取得・更新
- デバイス設定の管理
- 言語・エンジン設定の制御
状態管理
- システム状態の監視
- エラー状態の管理
- 初期化プロセスの制御
通信制御
- OSC通信の管理
- WebSocket通信の制御
- 外部アプリケーション連携
クラス構造
Controller クラス
class Controller:
def __init__(self) -> None
中核となるコントローラークラス
内部ヘルパークラス
DownloadCTranslate2 クラス
class DownloadCTranslate2:
def progressBar(self, progress) -> None
def downloaded(self) -> None
- 翻訳モデルのダウンロード進捗管理
DownloadWhisper クラス
class DownloadWhisper:
def progressBar(self, progress) -> None
def downloaded(self) -> None
- 音声認識モデルのダウンロード進捗管理
主要メソッド
初期化・設定
init() -> None
- コントローラーの初期化
- 各コンポーネントの起動
- 初期設定の適用
setInitMapping(init_mapping: dict) -> None
setRunMapping(run_mapping: dict) -> None
setRun(run: Callable) -> None
- エンドポイント・コールバック設定
翻訳機能制御
setEnableTranslation(data) -> dict
setDisableTranslation(data) -> dict
- 翻訳機能の有効化・無効化
setSelectedTranslationEngines(data) -> dict
getSelectedTranslationEngines(data) -> dict
- 翻訳エンジンの選択・取得
setSelectedYourLanguages(data) -> dict
setSelectedTargetLanguages(data) -> dict
- 送信・受信言語の設定
sendMessageBox(data) -> dict
- メッセージの翻訳・送信処理
音声認識機能制御
setEnableTranscriptionSend(data) -> dict
setEnableTranscriptionReceive(data) -> dict
- 音声認識機能の有効化
setSelectedTranscriptionEngine(data) -> dict
getSelectedTranscriptionEngine(data) -> dict
- 音声認識エンジンの選択・取得
setSelectedMicDevice(data) -> dict
setSelectedSpeakerDevice(data) -> dict
- 音声デバイスの選択
setMicThreshold(data) -> dict
setSpeakerThreshold(data) -> dict
- 音声しきい値の設定
VRオーバーレイ制御
setEnableOverlaySmallLog(data) -> dict
setEnableOverlayLargeLog(data) -> dict
- VRオーバーレイの有効化
setOverlaySmallLogSettings(data) -> dict
setOverlayLargeLogSettings(data) -> dict
- オーバーレイ設定の更新
WebSocket制御
setEnableWebSocketServer(data) -> dict
setDisableWebSocketServer(data) -> dict
- WebSocketサーバーの制御
setWebSocketHost(data) -> dict
setWebSocketPort(data) -> dict
- WebSocket接続設定
システム管理
updateSoftware(data) -> dict
updateCudaSoftware(data) -> dict
- ソフトウェアアップデート
downloadCtranslate2Weight(data) -> dict
downloadWhisperWeight(data) -> dict
- AIモデルのダウンロード
feedWatchdog(data) -> dict
- ウォッチドッグの生存シグナル送信
使用方法
基本的な使い方
from controller import Controller
# コントローラーの初期化
controller = Controller()
controller.init()
# 翻訳機能の有効化
result = controller.setEnableTranslation(None)
print(f"翻訳機能: {result}")
# メッセージ送信
message_data = {"id": "123", "message": "Hello World"}
result = controller.sendMessageBox(message_data)
エンドポイント設定
# マッピング設定
mapping = {
"/set/enable/translation": controller.setEnableTranslation,
"/get/data/version": controller.getVersion,
}
# 実行関数の設定
def run_callback(status, endpoint, result):
print(f"Status: {status}, Endpoint: {endpoint}, Result: {result}")
controller.setRun(run_callback)
音声認識の設定
# マイクデバイスの選択
host_data = "DirectSound"
result = controller.setSelectedMicHost(host_data)
device_data = "マイク (USB Audio Device)"
result = controller.setSelectedMicDevice(device_data)
# 音声認識の開始
result = controller.setEnableTranscriptionSend(None)
レスポンス形式
全てのメソッドは統一されたレスポンス形式を返します:
{
"status": int, # HTTPステータスコード(200, 400, 500等)
"result": any # 処理結果(成功時)または エラーメッセージ(失敗時)
}
成功レスポンス例
{
"status": 200,
"result": "翻訳機能が有効化されました"
}
エラーレスポンス例
{
"status": 400,
"result": "Invalid device selection"
}
状態管理
システム状態
- 各機能の有効・無効状態
- デバイスの接続状態
- ネットワーク接続状態
エラー状態
- デバイスエラー
- 翻訳エンジンエラー
- VRAMオーバーフローエラー
初期化状態
- 段階的な初期化プロセス
- 依存関係の解決状態
イベント処理
音声認識イベント
micMessage(result: dict) -> None
- マイク音声認識結果の処理
- 翻訳・フィルタリング・送信
speakerMessage(result: dict) -> None
- スピーカー音声認識結果の処理
ダウンロードイベント
- 進捗通知
- 完了通知
- エラー通知
デバイス変更イベント
- マイク・スピーカーの選択変更
- 計算デバイスの変更
依存関係
直接依存
config: 設定管理model: コアモデル機能device_manager: デバイス管理utils: ユーティリティ機能
間接依存
- 各種モデルモジュール(翻訳、音声認識等)
- VRオーバーレイモジュール
- 通信モジュール
エラーハンドリング
VRAM不足エラー
- 自動的にCTranslate2への切り替え
- ユーザーへの適切な通知
デバイスエラー
- デバイス接続状態の監視
- 自動復旧機能
ネットワークエラー
- 接続状態の定期確認
- オフライン機能への切り替え
設定エラー
- 設定値の妥当性チェック
- デフォルト値への復帰
パフォーマンス考慮事項
遅延初期化
- 必要な時点での機能初期化
- メモリ使用量の最適化
非同期処理
- バックグラウンドでの重い処理
- UI の応答性維持
キャッシュ機能
- 設定値のキャッシュ
- 翻訳結果のキャッシュ
注意事項
- すべてのメソッドは例外安全である
- 設定変更は即座に config に反映される
- 重い処理は別スレッドで実行される
- VR機能は適切な環境でのみ動作する
- ネットワーク機能はオフライン時に制限される
セキュリティ考慮事項
- 外部入力の適切な検証
- APIキーの安全な管理
- ファイルアクセスの制限
- ネットワーク通信の暗号化(該当する場合)