Azure AI Speech è il servizio della piattaforma Azure AI che espone in un unico resource le capacità di riconoscimento e sintesi vocale. Come architetto della soluzione, la prima scelta non è “quale codice scrivere”, ma quale modalità usare in base a latenza, dimensione dell’audio e requisiti di personalizzazione.
Speech-to-text: real-time, batch e custom
Il riconoscimento vocale converte l’audio in testo. Esistono tre approcci che l’esame ti chiede di distinguere con precisione.
- Real-time (streaming) via Speech SDK: usa un flusso continuo dal microfono o da uno stream per ottenere trascrizioni a bassa latenza, con risultati parziali (
recognizing) prima di quelli finali (recognized). È la scelta per scenari interattivi — call center live, sottotitolazione, comandi vocali. Richiede una connessione persistente per tutta la durata dell’audio. - Batch transcription: è un’API REST asincrona che elabora file audio già archiviati (tipicamente su Azure Blob Storage, indicati tramite URL o SAS). Sottometti un job, ricevi un ID e recuperi il risultato quando è pronto. È la scelta per grandi volumi, registrazioni lunghe e processing offline dove la latenza non conta ma il throughput sì. Supporta funzioni utili come diarization (attribuzione delle frasi ai diversi speaker) e word-level timestamps.
- Custom Speech: quando il modello base sbaglia su termini di dominio, accenti o rumore ambientale, addestri un modello personalizzato con audio + trascrizioni o con dati testuali (frasi e pronunce). Lo pubblichi su un endpoint dedicato e lo richiami tramite il suo endpoint ID sia in real-time sia in batch.
Configurazione tipica
Nel Speech SDK definisci sempre SpeechConfig (chiave/regione o token Entra ID) e la lingua di riconoscimento. Per audio non standard usi un AudioConfig:
speechConfig.SpeechRecognitionLanguage = "it-IT";
Text-to-speech: neural voice, custom neural voice e SSML
La sintesi vocale genera audio a partire dal testo usando neural voice prebuilt, voci prosodicamente naturali disponibili in molte lingue e stili. La configurazione minima richiede solo di impostare la voce (SpeechSynthesisVoiceName) e il formato audio di output.
Il Custom Neural Voice (CNV) permette di creare una voce di brand unica addestrandola su registrazioni di uno speaker. Punto chiave d’esame: è una funzione ad accesso limitato (Limited Access / gated), per motivi di uso responsabile — devi richiedere l’abilitazione e ottenere il consenso dello speaker; non la attivi liberamente come le neural voice standard.
SSML: controllo fine della sintesi
SSML (Speech Synthesis Markup Language) è XML che avvolge il testo per controllare l’output in modo granulare, e i suoi valori sovrascrivono i default della voce:
<prosody>per pitch, rate e volume;<break>per inserire pause di durata definita;<phoneme>e i custom lexicon per correggere la pronuncia di termini tecnici, sigle o nomi propri;<mstts:express-as>per applicare stili e ruoli (es.cheerful,newscast,customerservice), disponibili solo su voci che li supportano.
<voice name="it-IT-ElsaNeural">
<prosody rate="-10%"><break time="300ms"/> Benvenuto.</prosody>
</voice>
Translation e speaker features
Oltre a STT/TTS, il servizio offre la Speech translation via SDK (TranslationRecognizer): riconosce il parlato in una lingua sorgente e restituisce trascrizione + traduzioni in una o più lingue target in un’unica pipeline, opzionalmente sintetizzando l’audio tradotto. Attenzione a non confonderla con il servizio testuale Azure AI Translator: per speech-to-speech / speech-to-text translation la risposta corretta è Speech translation. Le speaker features (Speaker Recognition — identificazione e verifica del parlante) sono anch’esse gated e servono a scenari di autenticazione vocale, distinte dalla semplice diarization della batch transcription.
Trappole tipiche d’esame
- File audio grandi, non interattivi, in Blob Storage → batch transcription (REST asincrona), non lo streaming SDK. Lo streaming è per il real-time a bassa latenza.
- Serve una voce personalizzata del brand → Custom Neural Voice, ma ricorda che è Limited Access: va richiesta l’abilitazione e serve il consenso dello speaker.
- La voce pronuncia male una sigla o applica il tono sbagliato → correggi con SSML (
<phoneme>/lexicon per la pronuncia,<prosody>e<mstts:express-as>per tono e stile); SSML prevale sui default della voce. - Termini di dominio riconosciuti male in STT → Custom Speech con endpoint dedicato, non un cambio di lingua o di voce.
- Tradurre il parlato in un’altra lingua → Speech translation (Speech SDK); l’API testuale Translator vale solo per testo già trascritto.