ms-ai-architect/skills/ms-ai-engineering/references/azure-ai-services/speech-services-speech-to-text.md
Kjell Tore Guttormsen 712a143e58 fix(ms-ai-architect): RX-KB1 strip stale plain-Verified pipe-tails (87) + audit-deteksjon [skip-docs]
De 87 referansefilene bar en plain-text `| Verified: <dato>`-hale på **Last updated:**-linjen
i 500B-header-vinduet — usynlig for den bold-only kontrakt-stacken (kb-headers.mjs / audit
RE_VERIFIED), og claimet en verifisering judgen aldri gjorde (samme poison-klasse som de 14
bold **Verified:** MCP Spor 1 fjernet). Uhåndtert springer den også dual-Verified-fellen: R7s
insertVerifiedFields ville stemplet en bold-verdi ved siden av den plain → to motstridende
provenance-claims per fil.

- ny driver strip-stale-verified-pipe.mjs: frosset 87-manifest (18 advisor + 45 eng + 8 gov +
  16 sec), pure verdi-bevarende strip (kun ` | Verified: …`-halen; **Last updated:**-dato
  byte-eksakt), hard per-fil-invariant (linjeantall uendret, body byte-identisk, dato bevart),
  idempotent, atomicWriteSync (RX-OPS2 recovery-kontrakt).
- audit-corpus-headers.mjs: ny plain-Verified-deteksjon (RE_PLAIN_VERIFIED + plainVerifiedPipe)
  — gjør M4-blindheten synlig så en stale plain-hale ikke kan gjenoppstå stille (non-advisor scope).
- 87 filer strippet; plain Verified i vinduet 0/389; live-audit plainVerifiedPipe 0.

Mekanisme: +15 tester (12 strip + 3 audit). Suite 875→890 exit 0. validate-plugin.sh 250/0.

Utsatt → RX-KB1b: footer-dato-avvik + label-whitelist (annen dialekt, flag-to-human).
2026-07-16 20:04:52 +02:00

484 lines
20 KiB
Markdown

# Speech Services - Speech-to-Text and Real-time Transcription
**Last updated:** 2026-06-19
**Status:** GA
**Category:** Azure AI Services (Foundry Tools)
**Type:** reference
**Source:** https://learn.microsoft.com/azure/ai-services/speech-service/custom-speech-overview
---
## Innhold
- [Introduksjon](#introduksjon)
- [Kjernekomponenter / Nøkkelegenskaper](#kjernekomponenter--nøkkelegenskaper)
- [Arkitekturmønstre](#arkitekturmønstre)
- [Beslutningsveiledning](#beslutningsveiledning)
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
- [For arkitekten (Cosmo)](#for-arkitekten-cosmo)
- [Kilder og verifisering](#kilder-og-verifisering)
## Introduksjon
Azure Speech Services tilbyr avansert tale-til-tekst-funksjonalitet som konverterer talte ord til maskinlesbar tekst. Tjenesten støtter tre hovedmodi: **real-time transcription** for live-lyd fra mikrofon eller streaming, **fast transcription** for rask synkron transkripsjon med forutsigbar latens, og **batch transcription** for asynkron prosessering av store lydvolumer i lagring.
Speech-to-text bygger på Microsoft-eid Universal Language Model som er trent på store mengder data på tvers av dialekter, akustiske forhold og domener. For spesialiserte behov kan man fine-tune custom speech-modeller med egne data for å forbedre nøyaktigheten på domene-spesifikt vokabular eller spesifikke lydforhold. Tjenesten tilbyr også speaker diarization (identifisering av ulike talere), språkidentifikasjon, flerspråklig transkripsjon, og phrase list-optimalisering.
Azure Speech to text er en kritisk byggesten i AI-løsninger som krever talegjenkjenning — fra tilgjengelighetsverktøy og kundeservice til medieproduksjon og compliance-dokumentasjon.
## Kjernekomponenter / Nøkkelegenskaper
### Tre transkripsjonsmodi
| Modus | Bruksområde | Latens | Input | Output |
|-------|-------------|--------|-------|--------|
| **Real-time** | Live-lyd fra mikrofon/stream | ~sekunder (intermediate results) | Audio stream via SDK/REST | Tekst i real-time |
| **Fast transcription** | Raske transkripsjoner av filer | < real-time (synkron) | Lydfiler < 5 timer, < 500 MB | Display form (med punktum/caps) |
| **Batch transcription** | Store volumer prerecorded audio | Asynkron (30 min - 24 timer) | Flere filer via Blob Storage | JSON med lexical + display form |
### Custom Speech
Custom speech lar deg fine-tune base-modellen med:
- **Text data** → forbedrer gjenkjenning av domene-spesifikt vokabular (medisinsk, juridisk, teknisk)
- **Audio + transcripts** → forbedrer gjenkjenning under spesifikke lydforhold (bakgrunnsstøy, dialekter, akustikk)
- **Structured text** → spesifiserer uttale, custom profanity filtering, inverse text normalization
Custom-modeller krever deployment til et **custom endpoint** (bortsett fra ved batch transcription). Modeller utløper etter en definert periode (se Model Lifecycle).
### Speaker Diarization
Identifiserer og skiller mellom ulike talere i én lydkanal. Returnerer `speaker` ID (0, 1, 2...) per phrase.
```json
{
"channel": 0,
"speaker": 1,
"text": "Good afternoon. This is Sam.",
"confidence": 0.936
}
```
**Begrensninger:**
- Maksimalt 2 kanaler hvis diarization er aktivert
- Diarization støttes ikke på tvers av flere kanaler samtidig
### Language Identification
Fast transcription og real-time kan identifisere språk automatisk hvis du:
- Spesifiserer flere locales: `["en-US", "ja-JP"]` → tjenesten velger beste match
- Ikke spesifiserer locales: `[]` → multi-lingual model identifiserer og transkriberer kontinuerlig
**Multi-lingual transcription (preview):** Støtter 15 språk (de-DE, en-AU/CA/GB/IN/US, es-ES/MX, fr-CA/FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN) i én fil uten å spesifisere locale.
### Phrase List
Forbedrer gjenkjenning av spesifikke ord/fraser ved å øke deres vekt:
```json
{
"phraseList": {
"phrases": ["Contoso", "Jessie", "Rehaan"]
}
}
```
Tilgjengelig i fast transcription (API version 2025-10-15).
### Støttede lydformater
- WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW (WAV), MULAW (WAV), AMR, WebM, SPEEX
- Batch transcription: ubegrenset filstørrelse
- Fast transcription: < 5 timer, < 500 MB
- Real-time: streaming (ingen filstørrelsesbegrensning)
### Tilgangspunkter
| Metode | Bruksområde | API |
|--------|-------------|-----|
| **Speech SDK** | Real-time, programmatisk integrasjon | C#, Python, Java, JavaScript, C++, Go |
| **Speech CLI** | Kommandolinje, testing, scripting | `spx` |
| **REST API** | Batch, fast transcription, serverless | Speech to text REST API |
| **Speech Studio** | Web UI, testing, custom speech training | [speech.microsoft.com](https://speech.microsoft.com) |
## Arkitekturmønstre
### 1. Real-time Transcription for Live Events
**Bruksområde:** Tilgjengelighet (live captions), kundeservice, møtenotater
**Arkitektur:**
```
[Mikrofon/Stream] → Speech SDK → Azure Speech Service
Real-time text
[UI/Caption display/Agent dashboard]
```
**Fordeler:**
- Lav latens (intermediate results underveis)
- Støtter pronunciation assessment
- Fleksibel integrasjon via SDK
**Ulemper:**
- Krever kontinuerlig nettverksforbindelse
- Mindre kostnadseffektiv for store volumer
- Ikke optimalisert for batch-prosessering
**Når bruke:**
- Live events (webinars, møter)
- Interactive voice response (IVR)
- Accessibility (real-time captions)
---
### 2. Batch Transcription for High-Volume Processing
**Bruksområde:** Call center analytics, medieproduksjon, compliance-logging
**Arkitektur:**
```
[Lydfiler] → Azure Blob Storage → Batch Transcription API
Asynkron prosessering
[JSON results i Blob Storage]
[Analytics pipeline / Data lake]
```
**Fordeler:**
- Skalerer til tusenvis av filer
- Ingen deployment endpoint nødvendig for custom models
- Kan bruke Whisper model (via batch API)
- Kostnadseffektiv for store volumer
**Ulemper:**
- Asynkron (30 min - 24 timer ventetid)
- Best-effort scheduling (kan ta tid i peak hours)
- Krever polling for å sjekke status
**Best practices:**
- Send ~1000 filer per `Transcription_Create` request
- Distribuer requests over tid (ikke send alt på én gang)
- Poll status maks én gang per minutt (ideelt hvert 5-10 min)
- Vurder multi-region load balancing for global scale
**Når bruke:**
- Call center transkripsjoner (etterpå)
- Video subtitling for arkiv
- Compliance-dokumentasjon av opptak
---
### 3. Fast Transcription for Predictable Low-Latency
**Bruksområde:** Video editing, voicemail, meeting notes
**Arkitektur:**
```
[Lydfil < 5h] → Fast Transcription API → Synkron respons
JSON med display text
[App/Editor/Workflow]
```
**Fordeler:**
- Raskere enn real-time (synkron)
- Forutsigbar latens
- Støtter diarization, language ID, phrase list
- Ingen ventetid (ingen polling)
**Ulemper:**
- Kun display form (ikke lexical)
- Maksimalt 5 timer audio, 500 MB
- Ikke egnet for store volumer (throttling)
**Når bruke:**
- Quick video transcription
- Voicemail transcription
- Meeting notes med diarization
---
## Beslutningsveiledning
### Velg transkripsjonsmodus
| Scenario | Anbefaling | Hvorfor |
|----------|------------|---------|
| Live webinar med captions | **Real-time** | Krever intermediate results og lav latens |
| 500 call center-opptak per dag | **Batch** | Asynkron, kostnadseffektiv, skalerer godt |
| Video editing med rask turnaround | **Fast** | Synkron, < 5h fil, raskere enn real-time |
| IVR (interactive voice response) | **Real-time** | Må respondere umiddelbart på tale |
| Compliance-logging av møter | **Batch** | Ingen hastegrad, store volumer |
### Custom Speech vs. Base Model
| Bruk custom model hvis... | Bruk base model hvis... |
|----------------------------|-------------------------|
| Domene-spesifikt vokabular (medisinsk, juridisk) | Generell tale (møter, samtaler) |
| Spesifikke lydforhold (støy, dialekt) | Standard akustikk |
| WER > 10% med base model | WER < 5% med base model |
| Kan levere minimum 1-10 timer annotert audio | Ikke har treningsdata |
**Training cost:** Custom models bygget på base models fra okt 2023 eller senere koster penger å trene. Tidligere modeller er gratis å trene.
### Vanlige feil å unngå
| Feil | Konsekvens | Løsning |
|------|------------|---------|
| Ikke spesifisere `locales` i fast transcription | Langsamere, mindre nøyaktig | Alltid send `"locales": ["en-US"]` hvis du vet språket |
| Polle batch transcription hvert sekund | Unødvendig load, throttling | Poll maks 1 gang per minutt (ideelt 5-10 min) |
| Bruke real-time for batch processing | Dyrt, ineffektivt | Bruk batch transcription for > 10 filer |
| Deploye custom endpoint for batch-bruk | Unødvendig hosting-kostnad | Batch transcription trenger ikke endpoint |
| Sende 10 000 batch requests samtidig | Best-effort scheduling = lang ventetid | Send ~1000 filer per request, distribuer over tid |
### Røde flagg
- **429 error (too many requests):** Du treffer throttling limits. Implementer exponential backoff eller distribuer requests.
- **WER > 20% på base model:** Custom speech er nødvendig, eller audioqualitet er for dårlig.
- **Batch transcription venter > 24 timer:** Peak load eller region overbelastet. Vurder multi-region strategi.
## Integrasjon med Microsoft-stakken
### Microsoft Foundry
Speech Services er en **Foundry Tool** i Microsoft Foundry. Du kan:
- Koble eksisterende Speech resource til Foundry project
- Teste real-time og fast transcription i Foundry portal
- Bringe custom speech models fra Speech Studio til Foundry
- Integrere med Prompt Flow for multimodal AI-løsninger
### Copilot Studio
Kan integrere Speech to text for:
- Voice-enabled bots (tale-input til Copilot)
- Call center automation
- Accessibility features
**Merk:** Copilot Studio har innebygd speech, men Azure Speech gir mer kontroll (custom models, diarization, etc.)
### Power Platform
**Power Automate:** Batch Speech to text Connector (low-code) lar deg:
- Trigge batch transcription fra Flow
- Hente resultater automatisk
- Integrere med Dataverse/SharePoint
**Azure Logic Apps:** Samme connector som Power Automate.
### Azure OpenAI + Speech
Kombinasjon for voice-enabled AI assistants:
1. Speech to text → transkriberer brukerinput
2. Azure OpenAI (GPT-4) → genererer respons
3. Speech synthesis → konverterer respons til tale
**Whisper via Azure OpenAI:** Azure OpenAI tilbyr Whisper model for transcription, men med andre pricing og capabilities enn Azure Speech batch transcription.
### M365 Copilot
M365 Copilot bruker Microsoft Speech internt for:
- Teams meeting transcription
- Outlook voice commands
**Integrasjonspunkt:** Du kan supplere med custom speech models hvis M365 Copilot ikke gjenkjenner domene-spesifikke termer godt nok (krever Azure Speech resource).
## Offentlig sektor (Norge)
### GDPR og datasuverenitet
**Data residency:** Azure Speech støtter **West Europe** og **North Europe** regions. Audio og transkripsjondata kan lagres i EU.
**Data processing:**
- Audio sendes til Speech endpoint (real-time/fast transcription)
- Batch transcription leser fra og skriver til Blob Storage (kan være i Norway/EU)
- Custom speech training data lagres i Speech resource region
**Retention:**
- Microsoft-owned storage: Logging data slettes etter 30 dager
- Customer-owned storage: Du kontrollerer retention
### AI Act (EU)
Speech to text faller typisk under **begrenset risiko** (transparency obligations):
- **Krav:** Informer brukere om at tale blir transkribert av AI
- **Dokumentasjon:** Microsoft leverer transparency notes for Speech to text
- **High-risk:** Hvis brukt i rekruttering, rettssaker, eller biometric identification → strengere krav
### Schrems II
**Microsoft compliance:**
- EU Data Boundary commitment (data prosesseres i EU)
- Standard Contractual Clauses (SCCs)
- Ingen U.S. government data access for EU-lagrede data
**For offentlig sektor:** Bruk West Europe/North Europe regions og customer-managed keys (CMK) for ekstra kontroll.
### Forvaltningsloven (Norge)
Offentlige virksomheter må kunne:
- **Dokumentere beslutninger:** Batch transcription gir JSON med lexical + display form → arkiverbart
- **Innsyn:** Transkripsjondata er personopplysninger hvis det identifiserer personer
- **Kvalitetssikring:** Custom speech modeller må testes for bias (dialekter, kjønn, alder)
**Anbefaling:** Test custom models på representative norske dialekter (østlandsk, bergensk, trøndersk) for å unngå bias.
### Personvern og konfidensialitet
**Speaker diarization:** Identifiserer talere, men ikke *hvem* de er (kun "Speaker 1, Speaker 2"). Ingen biometric identification.
**Audio logging:**
- Deaktiver audio logging hvis personvern er kritisk
- Bruk customer-managed storage for full kontroll
- Implementer data retention policies (slett audio etter transkripsjon)
**Profanity filtering:** Bruk `profanityFilterMode: "Removed"` eller `"Masked"` i offentlige systemer for compliance.
## Kostnad og lisensiering
### Prismodell (per februar 2026)
**Real-time transcription:**
- Standard: ~$1 per audio hour
- Custom speech endpoint hosting: ~$0.05 per model per hour
**Fast transcription:**
- ~$0.50 per audio hour (raskere enn real-time)
**Batch transcription:**
- Standard: ~$1 per audio hour
- Custom model: Ingen ekstra kostnad (krever ikke endpoint)
**Custom speech training:**
- Base models fra okt 2023+: Betalt (~$20-50 per training run)
- Eldre base models: Gratis training
**Merk:** Priser er veiledende, sjekk [Azure Pricing Calculator](https://azure.microsoft.com/pricing/details/cognitive-services/speech-services/) for eksakte tall.
### Optimaliseringstips
| Strategi | Besparelse | Trade-off |
|----------|------------|-----------|
| Bruk batch i stedet for real-time for prerecorded audio | 30-50% | Asynkron (ventetid) |
| Deaktiver custom endpoint for batch-bruk | ~$35/måned per modell | Kan ikke bruke custom model i real-time |
| Bruk fast transcription for < 5h filer | Raskere = mindre compute-kostnad | Kun display form |
| Multi-region load balancing | Unngå throttling (indirekte besparelse) | Mer kompleks arkitektur |
| Audio compression (MP3 i stedet for WAV) | Mindre bandwidth-kostnad | Marginal besparelse |
### TCO-eksempel (call center med 10 000 timer/måned)
**Scenario:** Call center med 10 000 timer opptak per måned, behov for custom model (medisinsk/juridisk vokabular).
| Komponent | Kostnad/måned (USD) |
|-----------|---------------------|
| Batch transcription (10k timer) | $10 000 |
| Custom model training (1x per kvartal) | $17 (amortisert) |
| Blob Storage (audio + results) | $50 |
| **Total** | **~$10 067** |
**Vs. real-time:** $10 000 (transcription) + $35 (endpoint hosting) = $10 035 (men krever real-time streaming).
## For arkitekten (Cosmo)
### Spørsmål å stille kunden
1. **"Trenger dere transkripsjon i real-time, eller kan dere vente minutter/timer?"**
- Real-time → Speech SDK + real-time API
- Kan vente → Fast transcription (< 5h) eller Batch (> 5h)
2. **"Hvor mange timer audio prosesserer dere per måned, og hvor ofte?"**
- < 100 timer/måned → Real-time eller fast transcription
- > 1000 timer/måned → Batch transcription obligatorisk
3. **"Har dere domene-spesifikt vokabular (medisinsk, juridisk, teknisk)?"**
- Ja → Custom speech nødvendig (test base model først)
- Nei → Base model er trolig tilstrekkelig
4. **"Trenger dere å identifisere ulike talere?"**
- Ja → Diarization (maks 2 kanaler)
- Nei → Standard transcription
5. **"Hvilke språk snakkes i opptakene, og er det én eller flere språk per opptak?"**
- Én kjent språk → Spesifiser `locales: ["nb-NO"]`
- Ukjent språk → Language identification (`locales: ["nb-NO", "en-US"]`)
- Flere språk i samme opptak → Multi-lingual transcription (preview)
6. **"Hvor viktig er datasuverenitet og personvern?"**
- Kritisk → West Europe region, customer-managed keys, disable logging
- Viktig → West Europe region, standard encryption
- Mindre viktig → Hvilken som helst region
7. **"Har dere eksisterende lydfiler, eller er dette live audio?"**
- Prerecorded → Batch eller fast transcription
- Live → Real-time transcription
8. **"Hva er akseptabel Word Error Rate (WER)?"**
- < 5% → Base model kan fungere
- < 2% → Custom speech nødvendig
- < 1% → Krever betydelig training data og fine-tuning
### Fallgruver å unngå
1. **Over-engineering med custom speech:** Test alltid base model først. Custom speech krever tid, data, og løpende vedlikehold (model expiry).
2. **Ikke planlegge for throttling:** Azure Speech har rate limits. Implementer exponential backoff og retry logic.
3. **Ignorere model lifecycle:** Custom models og base models har expiry dates. Sett opp automatisk oppdatering eller notifications.
4. **Mikse real-time og batch i samme arkitektur:** Velg én primær modus. Hvis både live og prerecorded, bruk separate pipelines.
5. **Ikke teste på representative data:** Custom models trent på én dialekt kan feile på andre. Test på variert audio (bakgrunnsstøy, kjønn, alder, dialekter).
6. **Undervurdere batch transcription latency:** Best-effort scheduling = kan ta 24 timer i peak. Ikke bruk batch hvis du trenger resultater innen minutter.
### Anbefalinger per modenhetsnivå
#### Nivå 1: Proof of Concept
- **Bruk:** Speech Studio (web UI) eller Speech CLI
- **Modell:** Base model (ingen custom speech)
- **Modus:** Real-time eller fast transcription (< 100 timer)
- **Fokus:** Verifiser at speech to text fungerer for ditt domene
#### Nivå 2: Pilot / MVP
- **Bruk:** Speech SDK i app/service
- **Modell:** Base model, test custom speech hvis WER > 10%
- **Modus:** Fast transcription for < 5h filer, batch for > 5h
- **Fokus:** Implementer error handling, retry logic, cost tracking
#### Nivå 3: Production
- **Bruk:** Speech SDK + REST API (batch)
- **Modell:** Custom speech hvis nødvendig, automatiser model updates
- **Modus:** Batch transcription for scale, real-time for live use cases
- **Fokus:** Multi-region deployment, throttling mitigation, monitoring (WER, latency, cost)
- **Compliance:** Data residency, retention policies, transparency notes
#### Nivå 4: Enterprise Scale
- **Bruk:** Speech SDK + batch REST API + Power Automate connector
- **Modell:** Multiple custom models per domene/språk
- **Modus:** Batch transcription med multi-region load balancing
- **Fokus:** Cost optimization (reserved capacity), advanced analytics (sentiment, topic modeling), integration med data lake
- **Governance:** Automated model lifecycle, bias testing, compliance reporting
## Kilder og verifisering
**Microsoft Learn (Verified via MCP):**
- [What is speech to text?](https://learn.microsoft.com/en-us/azure/ai-services/speech-service/speech-to-text)
- [What is batch transcription?](https://learn.microsoft.com/en-us/azure/ai-services/speech-service/batch-transcription)
- [What is custom speech?](https://learn.microsoft.com/en-us/azure/ai-services/speech-service/custom-speech-overview)
- [Use the fast transcription API](https://learn.microsoft.com/en-us/azure/ai-services/speech-service/fast-transcription-create)
- [Quickstart: Recognize and convert speech to text](https://learn.microsoft.com/en-us/azure/ai-services/speech-service/get-started-speech-to-text)
- [Speech to text REST API reference](https://learn.microsoft.com/en-us/rest/api/speechtotext/transcriptions/transcribe)
**Confidence markers:**
- Real-time transcription, batch transcription, custom speech, diarization: **Verified** (Microsoft Learn)
- Fast transcription API, phrase list, multi-lingual transcription: **Verified** (Microsoft Learn)
- Pricing: **Baseline** (veiledende, sjekk Azure Pricing Calculator for eksakte tall)
- Norwegian compliance (Forvaltningsloven, dialekter): **Baseline** (generell kunnskap, ikke Microsoft-spesifikk)
**Sist oppdatert:** 2026-06-19 (basert på Microsoft Learn documentation per juni 2026)