# 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)