data-models.md 3.7 KB

Datenmodelle

Revision: r1 Source: CLAUDE.md, trixy_core/config/datasets/ Last updated: 2026-01-31 12:35


Konfigurationsstrukturen

ServerConfig

@dataclass
class ServerConfig:
    network: NetworkConfig
    security: SecurityConfig
    audio: AudioConfig
    wakeword: WakewordConfig
    voice_recognition: VoiceRecognitionConfig
    conversation: ConversationConfig
    plugins: PluginConfig
    logging: LoggingConfig
    satellites_directory: str = "satellites"
    assets_directory: str = "assets"
    models_directory: str = "models"
    profile: str = "default"

NetworkConfig

@dataclass
class NetworkConfig:
    command_port: int = 2101
    audio_input_port: int = 2102
    audio_output_port: int = 2103
    music_port: int = 2104
    bind_address: str = "0.0.0.0"
    max_connections: int = 100

ClientConfig

@dataclass
class ClientConfig:
    server: ServerConnectionConfig
    audio: ClientAudioConfig
    wakeword: ClientWakewordConfig
    identity: SatelliteIdentityConfig
    logging: ClientLoggingConfig
    assets_directory: str = "assets"
    profile: str = "default"

TrainerConfig

@dataclass
class TrainerConfig:
    wakeword: WakewordTrainerConfig
    voice_recognition: VoiceRecognitionTrainerConfig
    audio_processing: AudioProcessingConfig
    data: DataConfig
    output: OutputConfig
    device: str = "auto"  # auto, cpu, cuda, mps
    num_workers: int = 4
    seed: int = 42

Event-Daten

EventData (Basis)

@dataclass
class EventData:
    event_id: str          # UUID
    timestamp: datetime    # Erstellungszeitpunkt
    source: str            # Quelle (z.B. Service-Name)
    cancelled: bool        # Abbruch-Status
    metadata: dict[str, Any]

    def cancel() -> None
    def is_cancelled() -> bool
    @classmethod
    def event_name() -> str  # Klassenname in snake_case

Wichtige Event-Daten

Klasse Felder
WakewordReceived satellite_id, wakeword_model, confidence, audio_level
SpeechRecognized satellite_id, text, confidence, language, alternatives
IntentReceived satellite_id, intent, confidence, slots, original_text
RawAudioInputReceived satellite_id, audio_data, sample_rate, duration_seconds

Netzwerk-Befehle

CommandMessage (Basis)

@dataclass
class CommandMessage:
    message_id: str    # UUID
    timestamp: datetime

    def to_dict() -> dict[str, Any]
    @classmethod
    def from_dict(data: dict) -> CommandMessage

Satellite-Befehle

Klasse Felder Richtung
SatelliteConnect mac_address, room, alias, ip_address, version Client → Server
SatelliteAccepted satellite_id, session_key, ports... Server → Client
SatelliteDenied reason, retry_allowed, retry_after_seconds Server → Client

Wakeword-Befehle

Klasse Felder
WakewordDetected satellite_id, wakeword_model, confidence, audio_level
WakewordSelected conversation_id, start_streaming
WakewordAbort reason, resume_detection

Satellite-Daten

class Satellite:
    id: str
    room_id: str
    mac_address: str
    alias: str
    ip_address: str
    state: ConnectionState  # DISCONNECTED, CONNECTING, CONNECTED, AUTHENTICATED
    conversation_id: str | None
    connected_at: datetime | None
    last_heartbeat: datetime | None
    version: str

Registrierung (JSON-Datei):

{
    "id": "sat-uuid",
    "room_id": "wohnzimmer",
    "mac_address": "AA:BB:CC:DD:EE:FF",
    "alias": "Echo 1",
    "registered_at": "2026-01-31T12:00:00"
}

See also: apis.md, integrations.md