# Speech Services - Speech-to-Text and Real-time Transcription

**Last updated:** 2026-04 | Verified: MCP 2026-04
**Status:** GA
**Category:** Azure AI Services (Foundry Tools)

---

## 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 < 2 timer, < 300 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 14 språk (de-DE, en-AU/CA/GB/IN/US, es-ES/MX, fr-CA/FR, it-IT, ja-JP, ko-KR, 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: < 2 timer, < 300 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 < 2h] → 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 2 timer audio, 300 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, < 2h 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

### Azure AI Foundry

Speech Services er en **Foundry Tool** i Azure AI 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 < 2h 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 (< 2h) eller Batch (> 2h)

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 < 2h filer, batch for > 2h
- **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-02 (basert på Microsoft Learn documentation per februar 2026)
