## Goal: The "Dictation Session" Model ### Unser Ziel(german): Die "Diktier-Sitzung" Ein einziger Trigger startet eine **"Diktier-Sitzung"**, die aus drei Phasen besteht: 1. **Startphase (Warten auf Sprache):** * Nach dem Trigger lauscht das System. * Wenn **keine** Spracheingabe erfolgt, endet die gesamte Sitzung nach `PRE_RECORDING_TIMEOUT` (z.B. 12s). 2. **Aktivphase (Kontinuierliches Diktieren):** * Sobald die erste Spracheingabe erkannt wird, wechselt die Sitzung in den aktiven Modus. * Immer wenn VOSK eine Sprechpause erkennt und einen Textblock liefert (z.B. einen Satz), wird dieser Block **sofort** zur Verarbeitung (LanguageTool, etc.) weitergegeben und als Text ausgegeben. * Die Aufnahme läuft währenddessen **nahtlos weiter**. Die Sitzung wartet auf den nächsten Satz. 3. **Endphase (Ende der Sitzung):** * Die gesamte Sitzung endet nur, wenn eine dieser beiden Bedingungen erfüllt ist: * Der Nutzer bleibt für die Dauer des `SPEECH_PAUSE_TIMEOUT` (z.B. 1-2s) komplett still. * Der Nutzer stoppt die Sitzung manuell per Trigger. **Zusammengefasst:** Eine Sitzung, viele sofortige Textausgaben. Die Sitzung bleibt aktiv, bis der Nutzer eine längere Pause macht oder sie manuell beendet. ### **Goal: The "Dictation Session" Model** A single trigger initiates a **"Dictation Session"**, which consists of three phases: 1. **Startup Phase (Waiting for Speech):** * After the trigger, the system starts listening. * If **no speech** is detected, the entire session terminates after the `PRE_RECORDING_TIMEOUT` (e.g., 12s). 2. **Active Phase (Continuous Dictation):** * As soon as the first speech input is detected, the session switches to active mode. * Whenever VOSK detects a pause and delivers a text chunk (e.g., a sentence), this chunk is **immediately** passed to the processing pipeline (LanguageTool, etc.) and output as text. * The recording continues **seamlessly** in the background, waiting for the next utterance. 3. **Termination Phase (Ending the Session):** * The entire session terminates only when one of two conditions is met: * The user remains completely silent for the duration of the `SPEECH_PAUSE_TIMEOUT` (e.g., 1-2s). * The user manually stops the session via the trigger. **In short:** One session, multiple immediate text outputs. The session remains active until the user takes a long pause or manually terminates it.