Speech-to-Text Input
Feature Detail
Description
Speech-to-Text Input allows peer mentors to dictate activity notes, summaries, and report fields using the device microphone rather than typing. The feature is activated on demand within text input fields and operates as a post-interaction dictation tool - not live recording during a visit or call. Transcription is performed using the platform's native speech recognition APIs with a manual review step before the text is committed to the field. The feature is surfaced as an optional input method that supplements, rather than replaces, keyboard input.
Sources & reasoning
Lines 86-88 provide the precise use-case constraint (post-interaction dictation, not live recording). Line 347 places it in Fase 2, which maps to v1.0 by ordinal. Two organizations (Blindeforbundet + HLF) endorsed it, making it a "should have" cross-org feature.
-
docs/source/likeperson.md · line 86-88Begge organisasjoner ønsker mulighet for å snakke inn rapporter fremfor å skrive. Blindeforbundet understreker at opptak under selve samtalen er uønsket - tale-til-tekst er for etterpå, ved rapportskriving.
-
docs/source/likeperson.md · line 347Tale-til-tekst
Analysis
Both Blindeforbundet and HLF identified speech-to-text as a meaningful accessibility and efficiency improvement for peer mentors who find typing burdensome, have motor impairments, or regularly produce longer narrative reports. Blindeforbundet explicitly stated that recording during a home visit is unwanted - dictation is for the reporting phase afterward. For peer mentors logging detailed home-visit reports (Blindeforbundet's formalized structure) or complex activity summaries, voice input can reduce the time required to complete a report by an order of magnitude. This directly addresses the underreporting problem by lowering the effort barrier.
Use the speech_to_text Flutter plugin which wraps AVSpeechRecognizer (iOS) and SpeechRecognizer (Android). SpeechPermissionHandler manages microphone permission with a rationale dialog explaining dictation-only use (no live recording during visits). SpeechToTextService abstracts the plugin interface and emits a stream of interim and final transcription results to the SpeechInputWidget. The widget shows a visual recording indicator with an accessible announcement for screen reader users. Transcription results are editable before commit. The feature is implemented as a composable widget that can be attached to any AppTextField in the app. Background recording is explicitly disabled.
Quality Assurance
Peer Mentor (primary) · Coordinator (same flow)Peer Mentor
Quick UAT
- Logg inn i appen som Likeperson. Åpne Aktiviteter og start en ny aktivitet via +-knappen.
- Naviger til fritekstfeltet for sammendrag. Bekreft at mikrofon-ikonet vises inne i feltet (SpeechInputWidget).
- Trykk på mikrofon-ikonet. Godkjenn mikrofonrettigheten hvis appen ber om det. Bekreft at opptaksindikatoren vises.
- Dikter en setning høyt, f.eks. 'Hjemmebesøk gjennomført, brukeren har det bra og ønsker oppfølging neste måned.'
- Bekreft at transkripsjonen vises i forhåndsvisningspanelet under mikrofon-ikonet.
- Trykk Bekreft. Bekreft at teksten overføres til sammendrags-feltet og mikrofon-widgeten lukkes.
Quick UAT — Accessibility
-
Logg inn i appen som Likeperson. Åpne Aktiviteter og start en ny aktivitet via +-knappen.
- Screen reader Sideoverskrift 'Aktiviteter' annonseres; +-knappen har label 'Legg til aktivitet'.
- Keyboard / focus Tab-rekkefølge: bunnavigasjon → innholdsliste → +-knapp.
- Touch target ≥ 24×24 CSS px på +-knappen.
-
Naviger til fritekstfeltet for sammendrag. Bekreft at mikrofon-ikonet vises inne i feltet (SpeechInputWidget).
- Screen reader Tekstfelt annonsert som 'Sammendrag, redigerbart'. Mikrofon-ikon annonsert som 'Dikter tekst, knapp'.
- Focus visibility Synlig fokusring på tekstfelt; mikrofon-ikon har aria-label.
- Touch target ≥ 24×24 CSS px på mikrofon-ikonet.
-
Trykk på mikrofon-ikonet. Godkjenn mikrofonrettigheten hvis appen ber om det. Bekreft at opptaksindikatoren vises.
- Screen reader Systemdialog for mikrofonrettighet annonseres av OS. Opptaksindikator annonsert som 'Opptak pågår'.
- Focus visibility Fokus flyttes til opptaksindikator eller Avbryt-knapp etter rettighetsdialogens OK.
- Live region 'Mikrofon aktivert. Snakk nå.' via polite live region.
-
Dikter en setning høyt, f.eks. 'Hjemmebesøk gjennomført, brukeren har det bra og ønsker oppfølging neste måned.'
- Screen reader Ingen annonsering under diktering for å unngå forstyrrelse; Avbryt-knapp forblir fokusbar.
- Keyboard / focus Escape avbryter opptaket og returnerer fokus til tekstfeltet.
-
Bekreft at transkripsjonen vises i forhåndsvisningspanelet under mikrofon-ikonet.
- Screen reader Transkripsjonstekst annonseres automatisk via polite live region når den er klar.
- Live region 'Transkripsjon klar: [transkribert tekst]' via polite live region.
- Zoom Forhåndsvisningspanel er lesbart og ikke avklippet ved 200 % zoom.
- Contrast 4.5:1 kontrast på transkripsjonstekst mot bakgrunn.
-
Trykk Bekreft. Bekreft at teksten overføres til sammendrags-feltet og mikrofon-widgeten lukkes.
- Screen reader Bekreft-knapp annonsert som 'Bekreft transkripsjon, knapp'. Etter trykk: 'Tekst lagt til i sammendrag'.
- Focus visibility Fokus returnerer til sammendrags-tekstfeltet etter bekreftelse.
- Live region 'Tekst lagt til i sammendrag.' via polite live region.
Role Boundaries
2 role(s) must NOT access this feature-
Global Administrator
Global Administrator har ikke tilgang til mobilappen; alle tale-til-tekst-skjermbilder er utilgjengelige. Forsøk på deep-link til aktivitetsregistrering returnerer 403.
-
Prospective Organization Representative
Ingen brukerkonto i operativ del av plattformen; innlogging til mobilappen er ikke mulig.
Expected End State
Den dikterte teksten er bekreftet og vises i det valgte fritekstfeltet i aktivitetsskjemaet. Mikrofon-widgeten er lukket. Feltet kan redigeres videre med tastatur før aktiviteten lagres.
Components (21)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.