Spracheingabe
Status: Live seit Phase 62 (2026-06-05). Selbst-gehostetes whisper.cpp auf Contabo — keine OpenAI-Abhängigkeit, kein Audio verlässt Ihren Server.
Arc OS unterstützt zwei Ebenen der Spracheingabe im Chat-Composer:
| Ebene | Erfordert | Funktioniert in |
|---|---|---|
| L1 — Web Speech API | Chrome oder Edge (Chromium) | Allen Arc-Tarifen |
| L2 — Selbst-gehostetes whisper | Jedem Browser (WebM/WAV MediaRecorder) | Arc Standard Cloud, On-Premise |
Beide Ebenen speisen in dasselbe Composer-Textfeld ein und sind für den AI-Worker transparent.
Sprache im Chat nutzen
- Öffnen Sie einen beliebigen Projekt-Workspace und fokussieren Sie den Chat-Composer.
- Klicken Sie auf den Mikrofon-Button (unten links im Composer) oder drücken Sie Strg+Umschalt+V (funktioniert mit jedem Tastaturlayout — der Shortcut entspricht der physischen V-Taste, nicht dem Layout-Zeichen).
- Sprechen Sie. Eine Wellenform-Animation + ein oranger Rahmen zeigen die Aufnahme an.
- Klicken Sie erneut auf den Mikrofon-Button (oder drücken Sie den Shortcut), um zu stoppen.
- Der transkribierte Text erscheint im Composer — bei Bedarf bearbeiten, dann senden.
Kontinuierlicher Modus: L1 hört weiter zu, bis Sie stoppen; L2 nimmt einen einzelnen Clip auf und sendet ihn zur Transkription.
L1 — Web Speech API (Chrome/Edge)
Nutzt die eingebaute Spracherkennungs-API des Browsers. Funktioniert sofort, ohne Server-Roundtrip.
Locale: Wird automatisch aus Ihrer Arc-Spracheinstellung übernommen. Unterstützte BCP-47-Codes: uk-UA, en-US, de-DE, es-ES, fr-FR, pl-PL, ru-RU, pt-BR.
Berechtigungen: Der Browser fragt bei der ersten Nutzung nach Mikrofonzugriff. Falls Sie ihn versehentlich blockiert haben, gehen Sie zu Site-Einstellungen → Mikrofon → Zulassen für arc-os.co. Der Permissions-Policy-Header auf arc-os.co verwendet microphone=(self) — Same-Origin-Zugriff ist erlaubt, während Cross-Origin-Einbettungen ausgesperrt werden.
Einschränkungen:
- Erfordert Chrome oder Edge (Chromium-basiert). Firefox und Safari fallen automatisch auf L2 zurück.
- Die Transkriptionsqualität hängt von Googles Servern ab (vom Browser aufgerufen, nicht von Arc OS).
L2 — Selbst-gehostetes whisper.cpp
Arc OS betreibt einen persistenten arc-whisper.service auf Contabo mit dem vorgeladenen ggml-base-Modell (142 MB). Wenn der Browser die Web Speech API nicht unterstützt, fällt der Composer automatisch auf diese Ebene zurück:
- Der Browser nimmt einen WebM-Clip via
MediaRecorderauf. - Beim Stoppen wird der Clip per
POSTan/api/crm/voice/transcribegesendet (multipart, max. 25 MB). - Der Server leitet ihn an den lokalen whisper-server unter
127.0.0.1:19214weiter — die Audio-Bytes verlassen Contabo nie. - Der transkribierte Text kommt zurück und wird in den Composer eingefügt.
Latenz: ~3,4 s für einen 11-Sekunden-Clip (Modell warm, 3,1× Echtzeit auf der aktuellen 6-vCPU-EPYC-Maschine).
Parallelität: Der whisper-server hat einen 2-Slot-Semaphor. Sind beide Slots belegt, liefert die API 429 („server busy") und die UI zeigt einen Toast — versuchen Sie es in ein paar Sekunden erneut.
Tageskontingent
Jeder Benutzer hat ein weiches Limit von 60 Min./Tag über alle L2-Transkriptionen hinweg. Der Server schätzt die Clip-Dauer anhand der Upload-Größe (Annahme: ~32-kbps-Sprachcodec, ±30 % Genauigkeit). Wenn das Limit erreicht ist:
- Die API liefert
429mit{ "error": "Daily voice quota reached (60 min/day)", "used": <seconds>, "cap": 3600 } - Der Mikrofon-Button ist für den Rest des Tages deaktiviert
- Das Kontingent wird um Mitternacht UTC zurückgesetzt
L1 (Web Speech API) unterliegt diesem Limit nicht — sie nutzt den browsereigenen Dienst.
Troubleshooting
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Mikrofon-Button ausgegraut | Tageskontingent erreicht | Bis Mitternacht UTC warten |
| „Microphone access blocked" | Browser hat Mikrofon blockiert | Site-Einstellungen → Mikrofon → Zulassen für arc-os.co |
| L1 funktioniert nicht in Firefox | Firefox unterstützt die Web Speech API nicht | Fällt automatisch auf L2 zurück |
| 429 „server busy" | Zwei andere Benutzer transkribieren gerade | Nach ~5 s erneut versuchen |
| Schlechte Transkriptqualität | Hintergrundgeräusche / L2-Base-Modell | Deutlich sprechen; Pro-Transkription (größeres Modell) ist eine zukünftige Phase |
| Strg+Umschalt+V tut nichts | Fokus liegt nicht im Composer | Zuerst in die Composer-Textarea klicken |
Referenzen
shared/routes/voice.ts— Endpunkt-Handler (Phase 62.4, #373)shared/migrations/051_voice_usage.ts—voice_usage_log-Kontingenttabellefrontend/src/crm/pages/workspace/Composer.jsx— MicButton-Komponentearc-whisper.serviceauf Contabo — whisper.cpp-Daemon-Konfiguration- API-Endpunkt:
POST /api/crm/voice/transcribe