Wprowadzanie głosowe

Status: Działa od Phase 62 (2026-06-05). Self-hosted whisper.cpp na Contabo — bez zależności od OpenAI, żadne audio nie opuszcza Twojego serwera.

Arc OS obsługuje dwie warstwy wprowadzania głosowego w composerze czatu:

Warstwa Wymaga Działa w
L1 — Web Speech API Chrome lub Edge (Chromium) Wszystkie plany Arc
L2 — Self-hosted whisper Dowolna przeglądarka (MediaRecorder WebM/WAV) Arc Standard Cloud, On-premise

Obie warstwy zasilają to samo pole tekstowe composera i są transparentne dla workera AI.


Używanie głosu w czacie

  1. Otwórz workspace dowolnego projektu i ustaw fokus na composerze czatu.
  2. Kliknij przycisk mikrofonu (lewy dolny róg composera) lub naciśnij Ctrl+Shift+V (działa na każdym układzie klawiatury — skrót odpowiada fizycznemu klawiszowi V, nie znakowi układu).
  3. Mów. Animacja fali dźwiękowej + pomarańczowa ramka sygnalizują nagrywanie.
  4. Kliknij przycisk mikrofonu ponownie (lub naciśnij skrót), aby zatrzymać.
  5. Transkrybowany tekst pojawia się w composerze — w razie potrzeby edytuj, potem Send.

Tryb ciągły: L1 słucha, dopóki nie zatrzymasz; L2 nagrywa pojedynczy klip i wysyła go do transkrypcji.


L1 — Web Speech API (Chrome/Edge)

Używa wbudowanego w przeglądarkę API rozpoznawania mowy. Działa natychmiast, bez podróży na serwer.

Locale: Ustawiane automatycznie na podstawie Twojej preferencji językowej w Arc. Obsługiwane kody BCP-47: uk-UA, en-US, de-DE, es-ES, fr-FR, pl-PL, ru-RU, pt-BR.

Uprawnienia: Przeglądarka prosi o dostęp do mikrofonu przy pierwszym użyciu. Jeśli przypadkowo go zablokowałeś, przejdź do Site settings → Microphone → Allow dla arc-os.co. Nagłówek Permissions-Policy na arc-os.co używa microphone=(self) — dostęp same-origin jest dozwolony, a osadzenia cross-origin są zablokowane.

Ograniczenia:


L2 — Self-hosted whisper.cpp

Arc OS uruchamia trwały serwis arc-whisper.service na Contabo z preładowanym modelem ggml-base (142 MB). Gdy przeglądarka nie obsługuje Web Speech API, composer automatycznie przechodzi na tę warstwę:

  1. Przeglądarka nagrywa klip WebM przez MediaRecorder.
  2. Po zatrzymaniu klip jest wysyłany POST-em do /api/crm/voice/transcribe (multipart, maks. 25 MB).
  3. Serwer przekazuje go do lokalnego whisper-servera pod 127.0.0.1:19214 — bajty audio nigdy nie opuszczają Contabo.
  4. Transkrybowany tekst wraca i jest wstawiany do composera.

Opóźnienie: ~3.4 s dla 11-sekundowego klipu (rozgrzany model, 3.1× realtime na obecnej maszynie 6-vCPU EPYC).

Współbieżność: Whisper-server ma semafor z 2 slotami. Jeśli oba sloty są zajęte, API zwraca 429 („server busy"), a UI pokazuje toast — spróbuj ponownie za kilka sekund.


Dzienny limit

Każdy użytkownik ma miękki limit 60 min/dzień dla transkrypcji L2. Serwer szacuje długość klipu na podstawie rozmiaru uploadu (założenie kodeka głosowego ~32 kbps, dokładność ±30%). Po osiągnięciu limitu:

L1 (Web Speech API) nie podlega temu limitowi — używa własnej usługi przeglądarki.


Rozwiązywanie problemów

Objaw Prawdopodobna przyczyna Rozwiązanie
Przycisk mikrofonu wyszarzony Osiągnięto dzienny limit Poczekaj do północy UTC
„Microphone access blocked" Przeglądarka zablokowała mikrofon Site settings → Microphone → Allow dla arc-os.co
L1 nie działa w Firefoksie Firefox nie obsługuje Web Speech API Automatycznie przechodzi na L2
429 „server busy" Dwóch innych użytkowników transkrybuje Spróbuj ponownie za ~5 s
Słaba jakość transkryptu Hałas w tle / model base w L2 Mów wyraźnie; transkrypcja Pro (większy model) to przyszła phase
Ctrl+Shift+V nic nie robi Fokus poza composerem Najpierw kliknij wewnątrz pola tekstowego composera

Odniesienia