Files
VRCT/src-python/docs/modules/model.md
misyaguziya 5efa9c37d6 Add documentation for modules and runtime instructions
- Created detailed documentation for the device_manager, model, model_extra, osc, overlay, overlay_image, transcription, translation, transliteration, utils, watchdog, and websocket modules.
- Added a comprehensive run events payloads document outlining the payloads sent during various run events in the controller.
- Included runtime instructions and dependencies for setting up the project in a Windows environment.
- Introduced a mypy configuration file to manage type checking and ignore errors in specific modules temporarily.
2025-10-09 13:11:59 +09:00

106 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# model.py — クラスと主要メソッド
目的: アプリケーションの中核オーケストレータ。翻訳器 (Translator)、オーバーレイ、トランスクリプタ、OSC、WebSocket、Watchdog などのインスタンスを保持し、これらの起動/停止/操作を担います。`model``Model` のシングルトンインスタンスです。
主要クラスとシグネチャ:
- class threadFnc(Thread)
- __init__(self, fnc, end_fnc=None, daemon=True, *args, **kwargs)
- stop(self) -> None
- pause(self) -> None
- resume(self) -> None
- class Model
- __new__(cls) -> Model
- init(self) -> None
- checkTranslatorCTranslate2ModelWeight(self, weight_type: str) -> bool
- changeTranslatorCTranslate2Model(self) -> None
- downloadCTranslate2ModelWeight(self, weight_type, callback=None, end_callback=None) -> Any
- isLoadedCTranslate2Model(self) -> bool
- getListLanguageAndCountry(self) -> list
- getTranslate(self, translator_name, source_language, target_language, target_country, message) -> tuple
- getInputTranslate(self, message, source_language=None) -> (list, list)
- getOutputTranslate(self, message, source_language=None) -> (list, list)
- startMicTranscript(self, fnc) -> None
- stopMicTranscript(self) -> None
- startSpeakerTranscript(self, fnc: Optional[Callable[[dict], None]] = None) -> None
- stopSpeakerTranscript(self) -> None
- startWebSocketServer(self, host, port) -> None
- stopWebSocketServer(self) -> None
- websocketSendMessage(self, message_dict: dict) -> bool
変更点2025-10-09:
- startCheckMicEnergy(self, fnc: Optional[Callable[[float], None]] = None) -> None
- 説明: 進捗/エネルギー表示用のコールバックを受け取ります。fnc が None の場合は内部で no-op を使い、呼び出し前に callable チェックを行います。これにより呼び出し側が None を渡しても安全になりました。
- startCheckSpeakerEnergy(self, fnc: Optional[Callable[[float], None]] = None) -> None
- 説明: 同上fnc を Optional として受け取り、呼び出し時に callable を確認します)。内部では Queue を作成して録音データを受け取り、定期的にコールバックを呼びます。
- convertMessageToTransliteration(self, message: str, hiragana: bool = True, romaji: bool = True) -> list
- 説明: 以前は単一の文字列や別形を返す箇所がありましたが、現在は常にリスト(トークン単位の dict を要素とする listを返します。hiragana/romaji の両方が False の場合は空リストを返します。
- createOverlayImageLargeLog(self, message_type: str, message: Optional[str], your_language: Optional[str], translation: list, target_language: Optional[dict] = None) -> object
- 説明: `target_language` は辞書形式で渡される場合があり、内部で言語リストに正規化されますenabled な言語のみ抽出)。`message` / `your_language` は Optional となり、`None` を渡して翻訳のみのログを作ることが可能です。
使用例(簡易):
```python
from model import model
# 翻訳を呼び出す
translation, success = model.getTranslate('CTranslate2', 'Japanese', 'English', 'United States', 'こんにちは')
print(translation, success)
# マイク文字起こしの開始(コールバックで結果を受け取る)
def on_mic_transcript(result):
print('mic transcript:', result)
model.startMicTranscript(on_mic_transcript)
# WebSocket サーバー起動
model.startWebSocketServer('127.0.0.1', 2231)
```
注意点:
- `Model` は多くの外部リソースGPU、ファイル、ネットワークに依存するため、各操作は例外処理で保護されています。
- 大きなモデルのロードで VRAM OOM を検出する `detectVRAMError` を備え、Controller 側でのフォールバック処理に使われます。
## 詳細設計
目的: 各モデル(翻訳/転写/Overlay/Watchdog/OSC/WebSocket 等)のインスタンスを保持し、高レベルの操作を提供するファサード。
主要クラス/変数:
- class threadFnc(Thread)
- 説明: ループする関数をバックグラウンドで呼ぶヘルパ。pause/stop/end callback をサポート。
- class Model
- シングルトン: ファイル末で `model = Model()` として公開。
- 主な属性:
- translator (Translator)
- overlay (Overlay)
- overlay_image (OverlayImage)
- mic_audio_queue, mic_audio_recorder, mic_transcriber
- speaker_audio_queue, speaker_audio_recorder, speaker_transcriber
- watchdog (Watchdog)
- osc_handler (OSCHandler)
- websocket_server (WebSocketServer)
- 主なメソッド:
- start/stop logger, overlay, watchdog
- startMicTranscript / stopMicTranscript: 録音、transcriber の起動とキュー処理
- startSpeakerTranscript / stopSpeakerTranscript
- startCheckMicEnergy / stopCheckMicEnergy
- startCheckSpeakerEnergy / stopCheckSpeakerEnergy
- getTranslate / getInputTranslate / getOutputTranslate: Translator を利用する高レベル関数
- createOverlayImage* / updateOverlay* : OverlayImage と Overlay を結合して VR 表示を作成
- startWebSocketServer / stopWebSocketServer / websocketSendMessage
エラー処理:
- 音声認識や翻訳で VRAM エラーが発生した場合、detectVRAMError() で特殊な例外内容を検査し、Controller 経由で翻訳機能を OFF にする処理がある。
非同期/リソース:
- Recorder/Transcriber/Overlay/Watchdog/WebSocket はそれぞれ別スレッドで動作する。Model はそれらの開始/停止を管理する。
依存:
- models/translation, models/transcription, models/overlay, models/osc, models/websocket