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.
This commit is contained in:
misyaguziya
2025-10-09 13:11:59 +09:00
parent b0fd63afbd
commit 5efa9c37d6
23 changed files with 2147 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
# device_manager.py — デバイス検出と監視overwrite
目的: システムのマイク/スピーカー(主に Windows の WASAPIを列挙し、変更を監視してコールバックで通知する `DeviceManager` シングルトンを提供します。
主要コンポーネント:
- class Client(MMNotificationClient)
- オーディオデバイスのシステムイベント(追加/削除/デフォルト変更)を受け取り、監視ループの再起動をトリガーします。
- class DeviceManager
- シングルトンインスタンス: `device_manager`
- 主要プロパティ:
- `mic_devices` (dict): {host_name: [device_info, ...]}
- `default_mic_device` (dict): {'host': {...}, 'device': {...}}
- `speaker_devices` (list): [device_info, ...]
- `default_speaker_device` (dict)
- 各種 prev_/update_flag_: 差分検出用
- callback 関連プロパティ: `callback_default_mic_device`, `callback_mic_device_list`, など多数
- 主要メソッド (抜粋):
- `update()` -> None: PyAudio を利用してホスト毎の入力デバイスとループバック(スピーカー)を列挙し内部状態を更新します。
- `checkUpdate()` -> bool: 前回値との差分を計算して変更フラグを返します。
- `monitoring()` -> None: pycaw/MMNotificationClient を使った長時間監視ループ。変化を検出すると各コールバックを呼び出す。
- `startMonitoring()` / `stopMonitoring()`
- `getMicDevices()` / `getDefaultMicDevice()` / `getSpeakerDevices()` / `getDefaultSpeakerDevice()`
- `forceUpdateAndSetMicDevices()` / `forceUpdateAndSetSpeakerDevices()`
コールバックAPI:
- `setCallbackMicDeviceList(callback)` — マイクデバイスリスト変更時に呼ばれる
- `setCallbackDefaultMicDevice(callback)` — デフォルトマイク変更時に呼ばれる
- `setCallbackProcessBeforeUpdateMicDevices(callback)` / `setCallbackProcessAfterUpdateMicDevices(callback)` — 更新前後のフック
例:
```python
from device_manager import device_manager
def on_default_mic(host_name, device_name):
print('Default mic changed:', host_name, device_name)
device_manager.setCallbackDefaultMicDevice(on_default_mic)
device_manager.forceUpdateAndSetMicDevices()
```
注意点:
- Windows 固有のモジュールPyAudio paWASAPI, pycawに依存します。クロスプラットフォーム対応が必要な場合は別実装が必要です。
- 監視スレッドは永続的に動作するため、アプリケーション終了時は `stopMonitoring()` を呼んで安全に停止してください。
## 詳細設計
目的: ローカルの入力マイクと出力ループバックから抽出されたスピーカーデバイスを列挙し、変更を監視してコールバックで通知する。Windows の WASAPI 等に依存。
主要クラス/関数:
- class Client(MMNotificationClient)
- Audio デバイスの変更イベントを受けると `loop = False` にして監視ループを再起動させる設計。
- class DeviceManager
- シングルトン: `device_manager = DeviceManager()`
- 主要属性:
- mic_devices: {host: [device_info...]}
- default_mic_device: {host, device}
- speaker_devices: [device_info...]
- default_speaker_device: {device}
- 各種 prev_*, update_flag_*: 差分検出のために保持
- コールバック属性: callback_default_mic_device, callback_host_list など
- 主要メソッド:
- update(): PyAudio を使ってホストごとにデバイス列挙。Loopback デバイスを speaker_devices に集める。
- monitoring(): MMNotificationClient と組み合わせてデバイスの変化を検出し、コールバックを発行
- set/clear Callback 系: UI や Controller が登録して自動選択や再起動をトリガーできる
- forceUpdateAndSetMicDevices / forceUpdateAndSetSpeakerDevices: 即時更新とコールバック通知
注意点:
- Windows 固有の処理paWASAPI, pycawに依存する。
- デバイス取得はリソースに依存するので try/except で例外を吸収し errorLogging() を呼ぶ。