Transcriptie 16 — optionele eigen of externe ASR-server voor bestands- en eindtranscriptie #2524

Closed
opened 2026-10-22 19:59:36 +00:00 by brenno · 0 comments
Owner

Gebruikersdoel

Ik kan in Instellingen bewust een eigen of externe transcriptieserver kiezen, vooral wanneer mijn browser geen bruikbare lokale spraakengine heeft. Ik zie vóór verzending welke audio waarheen gaat.

Afhankelijkheden en basis

Bovenliggend epic: #2508
Afhankelijk van: #2509, #2510; integratie via #2514 en #2515.
De huidige AiClientService spreekt chat/completions, geen spraakherkenning. Zijn AiSecurityGate/network_guard levert een relevant patroon voor expliciete hostkeuze en netwerkgrenzen, maar is geen audio-API. De huidige web-CSP laat connect-src 'self' https: blob: toe; CORS en browsernetwerktoegang blijven afzonderlijke grenzen.

Concreet te toetsen servervoorbeeld

whisper.cpp whisper-server biedt volgens zijn documentatie een HTTP /inference-endpoint voor WAV-upload. Het is een batchvoorbeeld, geen bewezen live-server of veilig publiek endpoint. Onderzoek een eigen TLS-, authenticatie- en CORS-laag vóór gebruik buiten loopback. Bron: https://github.com/ggml-org/whisper.cpp/blob/master/examples/server/README.md .

Werk

  • Ontwerp een aparte, versieerbare ASR-serverinterface voor upload van een gekozen bestand of bewaarde opname, resultaat met tekst/segmenten/tijdcodes, taal, status, fout, limieten, annulering en optionele capability-probe. Een OpenAI-compatibele batch-adapter kan dienen als eerste implementatie na bewijs van het feitelijke contract; claim geen universele compatibiliteit.
  • Maak serverkeuze optioneel en standaard uit: URL, type/compatibiliteit, model indien relevant en capaciteit zichtbaar. Hergebruik de bestaande netwerkbeveiligingsprincipes; sta geen URL met ingebedde credentials, onveilige redirect, ongevraagde lokale netwerktoegang of stil doorsluizen via de OciDeck-host toe. Publieke remote endpoints gebruiken HTTPS. Voor loopback/LAN gelden aparte expliciete vertrouwenstap en browserproef.
  • Scheid een configuratie-/verbindingstest zonder audiobytes van een echte proef met door de gebruiker gekozen testaudio. Controleer bereikbaarheid, protocol, authenticatie, CORS, browserrechten, maximale upload/duur en servermodel waar aantoonbaar. Meld wat niet vóór een echte taak te weten is.
  • Vraag per taak expliciete toestemming met serverhost en te verzenden bestand/opname; toon verzend-/verwerkingsstatus en stop. Beschrijf serverbewaring en verwijdering als serverbeleid, niet als iets wat OciDeck kan garanderen. Geen automatische terugval van lokaal naar server.
  • Baken bron- en antwoordgrootte, timeouts, retries en idempotentie af; voorkom dubbele upload na fout of herstart. Behandel transcriptresultaat als onbetrouwbare inhoud en sla het als gewoon bewerkbaar Markdown op, met zichtbare herkomst zonder geheimen.

Acceptatie

  • Bestand en definitieve opname kunnen op macOS, Windows, Linux en ondersteunde browsers via een gekozen, werkende ASR-server tot hetzelfde Markdown-resultaat komen; zonder serverkeuze gaat geen audio naar buiten.
  • Geautomatiseerde tests bewijzen egress-toestemming, endpoint- en redirectcontrole, auth-geheimen buiten logs/URL/Markdown, limieten, annulering, foutpaden en geen automatische remote fallback.
  • Echte browsertest met een aparte HTTPS-server bewijst CORS inclusief preflight bij authenticatie; verbindingstest zonder audio geeft begrijpelijke diagnose.
  • Een incompatibele API, te groot bestand, verlopen sleutel, geweigerde browsertoegang en uitval laten bron/opname intact en geven een herstelbare uitkomst.

Bronnen

OciDeck lib/services/ai_client_service.dart, lib/services/ai_security_gate.dart, lib/services/secret_store.dart, web/index.html; CORS: https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS ; browser-LAN: https://developer.chrome.com/blog/local-network-access ; mixed content: https://developer.mozilla.org/en-US/docs/Web/Security/Defenses/Mixed_content .

## Gebruikersdoel Ik kan in Instellingen bewust een eigen of externe transcriptieserver kiezen, vooral wanneer mijn browser geen bruikbare lokale spraakengine heeft. Ik zie vóór verzending welke audio waarheen gaat. ## Afhankelijkheden en basis **Bovenliggend epic:** [#2508](https://pawprint.vigilis.online/LibreKAT/Ocideck/issues/2508) **Afhankelijk van:** [#2509](https://pawprint.vigilis.online/LibreKAT/Ocideck/issues/2509), [#2510](https://pawprint.vigilis.online/LibreKAT/Ocideck/issues/2510); integratie via [#2514](https://pawprint.vigilis.online/LibreKAT/Ocideck/issues/2514) en [#2515](https://pawprint.vigilis.online/LibreKAT/Ocideck/issues/2515). De huidige `AiClientService` spreekt `chat/completions`, geen spraakherkenning. Zijn `AiSecurityGate`/`network_guard` levert een relevant patroon voor expliciete hostkeuze en netwerkgrenzen, maar is geen audio-API. De huidige web-CSP laat `connect-src 'self' https: blob:` toe; CORS en browsernetwerktoegang blijven afzonderlijke grenzen. ## Concreet te toetsen servervoorbeeld whisper.cpp `whisper-server` biedt volgens zijn documentatie een HTTP `/inference`-endpoint voor WAV-upload. Het is een batchvoorbeeld, geen bewezen live-server of veilig publiek endpoint. Onderzoek een eigen TLS-, authenticatie- en CORS-laag vóór gebruik buiten loopback. Bron: https://github.com/ggml-org/whisper.cpp/blob/master/examples/server/README.md . ## Werk - Ontwerp een aparte, versieerbare ASR-serverinterface voor upload van een gekozen bestand of bewaarde opname, resultaat met tekst/segmenten/tijdcodes, taal, status, fout, limieten, annulering en optionele capability-probe. Een OpenAI-compatibele batch-adapter kan dienen als eerste implementatie na bewijs van het feitelijke contract; claim geen universele compatibiliteit. - Maak serverkeuze optioneel en standaard uit: URL, type/compatibiliteit, model indien relevant en capaciteit zichtbaar. Hergebruik de bestaande netwerkbeveiligingsprincipes; sta geen URL met ingebedde credentials, onveilige redirect, ongevraagde lokale netwerktoegang of stil doorsluizen via de OciDeck-host toe. Publieke remote endpoints gebruiken HTTPS. Voor loopback/LAN gelden aparte expliciete vertrouwenstap en browserproef. - Scheid een configuratie-/verbindingstest zonder audiobytes van een echte proef met door de gebruiker gekozen testaudio. Controleer bereikbaarheid, protocol, authenticatie, CORS, browserrechten, maximale upload/duur en servermodel waar aantoonbaar. Meld wat niet vóór een echte taak te weten is. - Vraag per taak expliciete toestemming met serverhost en te verzenden bestand/opname; toon verzend-/verwerkingsstatus en stop. Beschrijf serverbewaring en verwijdering als serverbeleid, niet als iets wat OciDeck kan garanderen. Geen automatische terugval van lokaal naar server. - Baken bron- en antwoordgrootte, timeouts, retries en idempotentie af; voorkom dubbele upload na fout of herstart. Behandel transcriptresultaat als onbetrouwbare inhoud en sla het als gewoon bewerkbaar Markdown op, met zichtbare herkomst zonder geheimen. ## Acceptatie - [ ] Bestand en definitieve opname kunnen op macOS, Windows, Linux en ondersteunde browsers via een gekozen, werkende ASR-server tot hetzelfde Markdown-resultaat komen; zonder serverkeuze gaat geen audio naar buiten. - [ ] Geautomatiseerde tests bewijzen egress-toestemming, endpoint- en redirectcontrole, auth-geheimen buiten logs/URL/Markdown, limieten, annulering, foutpaden en geen automatische remote fallback. - [ ] Echte browsertest met een aparte HTTPS-server bewijst CORS inclusief preflight bij authenticatie; verbindingstest zonder audio geeft begrijpelijke diagnose. - [ ] Een incompatibele API, te groot bestand, verlopen sleutel, geweigerde browsertoegang en uitval laten bron/opname intact en geven een herstelbare uitkomst. ## Bronnen OciDeck `lib/services/ai_client_service.dart`, `lib/services/ai_security_gate.dart`, `lib/services/secret_store.dart`, `web/index.html`; CORS: https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS ; browser-LAN: https://developer.chrome.com/blog/local-network-access ; mixed content: https://developer.mozilla.org/en-US/docs/Web/Security/Defenses/Mixed_content .
brenno 2026-10-23 13:54:13 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2524
No description provided.