Codifica della voce
In questa pagina 7
Il parlato digitalizzato in modo diretto occupa 64 kbit/s (Audio, immagini e video digitali non compressi e spazi di coloreIl parlato (banda 200-3400 Hz) si digitalizza con $F_c=8$ kHz e 8 bit per campione: 64 kbit/s (PCM, pacchetti di 20 ms = 160 campioni = 160 byte). La musica (banda fino a 20 kHz) con $F_c=44{,}1$ kHz, 16 bit, 2 canali: 1,411 Mbit/s. Un'immagine a colori RGB ha 3 canali da 8 bit (24 bit per pixel); nello spazio YCbCr, ottenuto con una rotazione dello spazio colore, l'occhio è molto meno sensibile alla crominanza e si scartano 3 campioni su 4 di Cb e Cr (4:2:0), dimezzando i dati: $1{,}5\cdot H\cdot W$ campioni per immagine. Un video non compresso costa $H,W,1{,}5,b,f$ bit/s (1080p a 50 Hz: 1,244 Gbit/s, 4K: 5,3 Gbit/s): serve la compressione.Audio, immagini e video digitali non compressi e spazi di colore →). Su un collegamento mobile o in una chiamata via Internet è tanto: si può scendere a un decimo, o meno, sfruttando il modo in cui la voce viene prodotta. Questa nota spiega le tre famiglie di codificatori vocali, lo schema didattico LPC10 con i suoi conti, e i problemi pratici (ritardo, errori, silenzi).
1. Il segnale vocale
Il segnale vocale non è stazionario, ma è localmente stazionario: per intervalli di circa 20 ms, durante la pronuncia di un fonema, le sue proprietà restano quasi costanti. Per questo i codificatori lavorano su finestre (frame) di 20 ms. A 8 kHz, 20 ms sono campioni.
Si distinguono:
- suoni vocali (voiced): segnali pseudo-periodici, come le vocali e le consonanti sonore (le slide citano anche "s" e "f", ma in fonetica sono consonanti sorde, quindi non vocali: probabile imprecisione). Hanno una frequenza fondamentale, il pitch (nell'esempio delle slide, 178 Hz), prodotta dalla vibrazione delle corde vocali;
- suoni non vocali (unvoiced): la maggior parte delle consonanti; somigliano a rumore bianco (flusso d'aria turbolento);
- transizioni tra fonemi e altri suoni.
2. Le tre famiglie di codificatori
| Famiglia | Idea | Pregi | Difetti |
|---|---|---|---|
| A forma d'onda | rappresentano il segnale, ignorandone la semantica; senza compressione è il PCM | bassa complessità, alta qualità, qualunque suono | bit-rate molto elevato (64 kbit/s) |
| Vocoder | non conservano la forma d'onda: modellano come il suono è prodotto e trasmettono i parametri del modello (stimati con la codifica predittiva lineare, LPC); il ricevitore sintetizza la voce | bit-rate bassissimo (2,4 kbit/s e meno) | qualità bassa, voce non naturale |
| Ibridi | vocoding per ricavare alcuni parametri, più codifica della forma d'onda del residuo tra parlato originale e sintetizzato | qualità buona (intelligibilità) a circa 10 kbit/s | complessità maggiore |
3. Standard principali
- G.711 (ITU-T): PCM non compresso, 8 kHz, quantizzazione non uniforme adattata alle statistiche dei campioni (i valori piccoli sono molto più probabili di quelli grandi, quindi si usano passi piccoli vicino a zero e grandi per le ampiezze alte: si guadagna qualità a parità di bit), 64 kbit/s.
- G.729 (CS-ACELP, algebraic code excited linear prediction): codificatore ibrido, 8 kHz, blocchi con 15 ms di ritardo di elaborazione, circa 8 kbit/s.
- GSM (full, half, enhanced, adaptive rate): ibrido con LPC; nella variante full-rate il tasso è 13 kbit/s.
- AMR-WB (G.722.2): lo standard dell'HD Voice nelle reti mobili 4G e 5G (VoLTE). Campionamento a 16 kHz (wideband) per una resa più naturale; banda audio 50 Hz-7 kHz; 9 tassi adattativi da 6,6 a 23,85 kbit/s scelti dinamicamente in base alla congestione: se il radio peggiora si sacrificano bit di sorgente per aumentare la protezione di canale, senza interrompere la chiamata.
- Opus (RFC 6716): il codec "universale" di Internet, ibrido, standard IETF libero e senza royalty; bit-rate adattativo 6-510 kbit/s, banda da 8 kHz (narrowband) a 48 kHz (fullband, hi-fi), ritardo algoritmico tipico 26,5 ms. Usato da WhatsApp, Zoom, Discord, WebRTC, YouTube.
Perché AMR-WB suona meglio. La telefonia classica taglia le alte frequenze: si perdono la brillantezza e la distinzione tra fonemi simili ("f" e "s"). L'estensione wideband cattura le armoniche superiori (più nitidezza, riconoscimento del parlatore), che vengono ricostruite come multipli del pitch estratto in banda base con ampiezza stimata dall'energia in banda bassa e dall'inviluppo LPC; abbassando la frequenza di taglio inferiore si elimina l'effetto "metallico", con un piccolo aumento di bit-rate. Risultato: più intelligibilità, meno affaticamento nelle chiamate lunghe.
Architettura di Opus. Due motori: SILK, basato sulla predizione lineare (adatto al parlato a basso bit-rate), e CELT, che non usa un modello del tratto vocale ma codifica la forma d'onda con trasformate di tipo Fourier, codificando solo le frequenze che "l'orecchio sente" (si attiva a bit-rate più alti o per segnali non vocali, come musica e rumori). La modalità ibrida li fa lavorare insieme su parti diverse dello spettro.
4. Un vocoder didattico: LPC10
Lo schema LPC10 (linear predictive coding, predizione lineare sui 10 campioni precedenti) è un vocoder di base, a validità puramente pedagogica, ma contiene tutti gli ingredienti.
4.1 Predizione lineare
Il segnale a 8 kHz è diviso in finestre di 20 ms (160 campioni). Per ogni finestra si vuole predire il campione corrente con una combinazione lineare dei 10 precedenti: I coefficienti si trovano minimizzando il valore quadratico medio dell'errore di predizione L'errore è l'uscita di un filtro a media mobile (FIR, filtro di predizione ) alimentato dal parlato. Il punto chiave: il filtro è invertibile. Noto si ricostruisce con l'equazione alle differenze (un filtro autoregressivo, che fa da "tratto vocale" sintetico).
Esempio minimo. Se con , cioè la sequenza , con un solo coefficiente si ha : l'errore è quasi nullo, mentre il segnale non lo è. Quando la predizione è accurata il residuo ha piccola potenza ed è poco più di rumore: ciò che resta da trasmettere è poca informazione.
Schema di codifica: un blocco LPC determina i coefficienti, il filtro calcola il residuo; coefficienti e residuo vanno quantizzati (c'è perdita) e trasmessi.
4.2 Perché non serve trasmettere il residuo
Se la predizione è buona, il residuo è praticamente rumore, in due possibili forme:
- rumore bianco (spettro piatto): è il caso dei suoni non vocali;
- rumore con una frequenza predominante, il pitch: è il caso dei suoni vocali (un treno di impulsi periodici).
Allora non c'è bisogno di trasmettere , ma solo i suoi parametri: se è bianco o no (1 bit), la potenza e, per i suoni vocali, il pitch (la fase non serve: il rumore di fase è inudibile). Si decide facilmente quale dei due casi vale con la stima dell'autocorrelazione (un picco periodico indica pitch). Il decodificatore genera l'eccitazione opportuna (rumore bianco oppure treno di impulsi) e, con i coefficienti del filtro, ricostruisce .
4.3 Quanti bit?
Ogni 20 ms si trasmettono:
- 36 bit per i 10 coefficienti del filtro;
- 1 bit per distinguere vocale/non vocale;
- per i suoni vocali 6 bit di potenza e 7 bit di pitch (periodo); per i non vocali solo i 6 bit di potenza.
Le slide indicano un tasso medio di 2400 bit/s. Attenzione: la media aritmetica dei due valori (metà del tempo vocale, metà no) è 2325 bit/s; si ottiene 2400 solo se i suoni vocali sono circa il del tempo (). Il numero 2400 è comunque l'ordine di grandezza corretto (e coincide con il tasso del codec LPC-10 reale). Rispetto al PCM, volte meno bit: da 8 bit per campione a circa bit per campione.
4.4 L'effetto "sussurrato" e i limiti
LPC10 dà una voce innaturale, un po' "soffiata", per quattro motivi:
- la decisione vocale/non vocale è binaria per frame: nessuno stato intermedio;
- se un tratto vocale è classificato come non vocale per errore, la struttura armonica sparisce a favore dell'eccitazione stocastica;
- molti fonemi reali sono misti (vibrazione delle corde vocali più turbolenza): LPC10 elimina la componente periodica;
- il rumore bianco sintetico ignora la pendenza spettrale e la coerenza di fase del residuo reale, dando un timbro artificiale.
5. Codificatori ibridi avanzati: ACELP
I codificatori moderni correggono i limiti di LPC con:
- modelli più sofisticati per il residuo: invece di impulsi o rumore, si cerca in un dizionario ampio (codebook) la forma del residuo che meglio descrive il frame;
- codifica ad anello chiuso (analysis by synthesis): il codificatore sintetizza davvero il parlato per ogni candidato e sceglie i parametri che minimizzano l'errore di codifica;
- un errore pesato secondo il mascheramento (conta di più dove l'orecchio sente di più).
Risultato: ottima intelligibilità a circa 10 kbit/s (da confrontare con i 64 del PCM).
6. Problemi pratici della codifica vocale
- Latenza. Il ritardo di codifica si somma al ritardo complessivo del servizio (per il real-time il limite è 150 ms). Ha una parte algoritmica (bufferizzare 20 ms di parlato per l'analisi, eventuale look-ahead) e una computazionale (tempo di calcolo).
- Resilienza. Le connessioni mobili soffrono errori casuali e a raffica (burst): la correzione d'errore (FEC, forward error correction) è fondamentale, ma richiede tempo (elaborazione e memorizzazione) e bit-rate aggiuntivo, in quantità dipendente dai requisiti di rivelazione e correzione (Metriche e prestazioni di rete per i servizi multimedialiUna rete è una pila di livelli: ogni livello offre un servizio al superiore tramite un'interfaccia e dialoga con il livello pari con un protocollo; il pacchetto di un livello è il payload del livello inferiore ($\mathrm{PDU}n=\mathrm{PCI}n+\mathrm{SDU}n$), con efficienza $\eta=\frac{|\mathrm{SDU}n|}{|\mathrm{PDU}n|}$. Metriche: bit-rate $R_0$ (livello fisico) $\ge$ throughput $S$ $\ge$ goodput (throughput a lungo termine a livello applicazione). Ritardo nodale $d=d{proc}+d{queue}+d{trans}+d{prop}$ con $d{trans}=\frac LR$ e $d_{prop}=\frac xc$; ritardo end-to-end = somma dei nodali; jitter = variabilità del ritardo; BDP $=S\cdot\mathrm{RTT}$ (con il bit-rate minimo del percorso). Affidabilità: nel canale binario simmetrico $\mathrm{PER}=1-(1-\varepsilon)^L$ e $P(\ell)=\binom L\ell\varepsilon^\ell(1-\varepsilon)^{L-\ell}$; codici di canale $R=\frac kn$, parità, Hamming, interleaving per i burst; perdite per errori o congestione, $\mathrm{PDR}=1-P_{\text{LOSS}}$.Metriche e prestazioni di rete per i servizi multimediali →).
- Soppressione del silenzio. Statisticamente il 50% di una conversazione è silenzio: non trasmettere i silenzi risparmia molta banda. Serve un rilevatore di attività vocale (VAD, voice activity detector) per distinguere voce e rumore di fondo; ma il VAD può causare clipping del parlato (inizio di parola tagliato) e una brusca soppressione del rumore di fondo, con degrado della qualità.
Domande d'esame
1. Qual è l'intuizione che consente di ridurre il bit-rate della voce nei sistemi basati su vocoder? Traccia: non si rappresenta la forma d'onda ma si modella come l'uomo produce il suono; in codifica si definisce un filtro invertibile di predizione; in decodifica i parametri dell'errore di predizione generano un segnale di eccitazione (rumore o treno di impulsi) che, filtrato con l'inverso del filtro di predizione, sintetizza il parlato; si trasmettono solo coefficienti del filtro e parametri dell'eccitazione.
2. Nel vocoder LPC10 con finestre di 20 ms, 36 bit di coefficienti, 1 bit voiced/unvoiced, 6 bit di potenza e 7 di pitch, quanti bit al secondo servono per un frame vocale e per uno non vocale? Traccia: bit/s; bit/s.
3. Quali sono le tre famiglie di codificatori vocali e in cosa differiscono per bit-rate e qualità? Traccia: forma d'onda (PCM, 64 kbit/s, alta qualità), vocoder (2,4 kbit/s, qualità bassa e innaturale), ibridi (circa 10 kbit/s, ottima intelligibilità).
Versione ripasso
Il segnale. Localmente stazionario su circa 20 ms (a 8 kHz: 160 campioni per frame). Suoni vocali: pseudo-periodici con pitch (corde vocali). Non vocali: simili a rumore bianco. Poi transizioni.
Tre famiglie.
- Forma d'onda (PCM, G.711 a 64 kbit/s con quantizzazione non uniforme): bassa complessità, alta qualità, bit-rate alto.
- Vocoder: modellano la produzione della voce (LPC), si trasmettono i parametri, il ricevitore sintetizza; 2,4 kbit/s e meno; voce innaturale.
- Ibridi: parametri LPC più codifica della forma d'onda del residuo; circa 10 kbit/s con ottima intelligibilità.
Standard. G.711 64 kbit/s, 8 kHz. G.729 ACELP, circa 8 kbit/s, 15 ms di ritardo. GSM full-rate 13 kbit/s. AMR-WB (G.722.2): 16 kHz, banda 50-7000 Hz, 9 tassi da 6,6 a 23,85 kbit/s, HD Voice 4G/5G; adattativo: toglie bit di sorgente per dare protezione di canale. Opus (RFC 6716): 6-510 kbit/s, 8-48 kHz, ritardo 26,5 ms, SILK (predizione lineare, parlato) + CELT (trasformata, musica) + modalità ibrida; WebRTC, WhatsApp, Zoom.
LPC10. Finestre da 20 ms, predizione sui 10 campioni precedenti: , , coefficienti scelti per minimo MSE. Filtro FIR invertibile: (autoregressivo). Esempio: dà residuo . Residuo quasi rumore: bianco (non vocale) o con pitch (vocale, treno di impulsi); non si trasmette, solo i parametri: bianco/non bianco (1 bit), potenza (6 bit), pitch (7 bit se vocale); fase inutile. L'autocorrelazione decide vocale o no.
- Bit ogni 20 ms: 36 (coefficienti) + 1 + 6 (+7 se vocale).
- bit/s; bit/s; le slide dicono media 2400 (la media 50-50 è 2325; 2400 richiede circa 71% di vocale).
- Rispetto al PCM: volte meno bit.
- Limiti ("sussurrato"): decisione vocale/non vocale binaria, errori di classificazione, nessuna eccitazione mista, rumore bianco sintetico senza coerenza di fase.
ACELP. Dizionario ampio per il residuo; analisi per sintesi (anello chiuso): si scelgono i parametri che minimizzano l'errore; errore pesato dal mascheramento.
Problemi pratici.
- Latenza (algoritmica: buffering e look-ahead; computazionale) che si somma al limite di 150 ms.
- Resilienza: errori casuali e a burst sui canali mobili, FEC necessaria ma costa tempo e bit-rate.
- Silenzio: circa 50% della conversazione; la soppressione con VAD risparmia banda, ma può tagliare l'inizio delle parole (clipping) e il rumore di fondo.
Errori tipici: dire che il vocoder trasmette il residuo (trasmette parametri del residuo e coefficienti); scambiare 36 bit (coefficienti) con 36 coefficienti; sommare 7 bit di pitch anche ai suoni non vocali; ritenere "2400 bit/s" la media aritmetica dei due tassi.
Collegamenti: Audio, immagini e video digitali non compressi e spazi di coloreIl parlato (banda 200-3400 Hz) si digitalizza con $F_c=8$ kHz e 8 bit per campione: 64 kbit/s (PCM, pacchetti di 20 ms = 160 campioni = 160 byte). La musica (banda fino a 20 kHz) con $F_c=44{,}1$ kHz, 16 bit, 2 canali: 1,411 Mbit/s. Un'immagine a colori RGB ha 3 canali da 8 bit (24 bit per pixel); nello spazio YCbCr, ottenuto con una rotazione dello spazio colore, l'occhio è molto meno sensibile alla crominanza e si scartano 3 campioni su 4 di Cb e Cr (4:2:0), dimezzando i dati: $1{,}5\cdot H\cdot W$ campioni per immagine. Un video non compresso costa $H,W,1{,}5,b,f$ bit/s (1080p a 50 Hz: 1,244 Gbit/s, 4K: 5,3 Gbit/s): serve la compressione.Audio, immagini e video digitali non compressi e spazi di colore →, Metriche e prestazioni di rete per i servizi multimedialiUna rete è una pila di livelli: ogni livello offre un servizio al superiore tramite un'interfaccia e dialoga con il livello pari con un protocollo; il pacchetto di un livello è il payload del livello inferiore ($\mathrm{PDU}n=\mathrm{PCI}n+\mathrm{SDU}n$), con efficienza $\eta=\frac{|\mathrm{SDU}n|}{|\mathrm{PDU}n|}$. Metriche: bit-rate $R_0$ (livello fisico) $\ge$ throughput $S$ $\ge$ goodput (throughput a lungo termine a livello applicazione). Ritardo nodale $d=d{proc}+d{queue}+d{trans}+d{prop}$ con $d{trans}=\frac LR$ e $d_{prop}=\frac xc$; ritardo end-to-end = somma dei nodali; jitter = variabilità del ritardo; BDP $=S\cdot\mathrm{RTT}$ (con il bit-rate minimo del percorso). Affidabilità: nel canale binario simmetrico $\mathrm{PER}=1-(1-\varepsilon)^L$ e $P(\ell)=\binom L\ell\varepsilon^\ell(1-\varepsilon)^{L-\ell}$; codici di canale $R=\frac kn$, parità, Hamming, interleaving per i burst; perdite per errori o congestione, $\mathrm{PDR}=1-P_{\text{LOSS}}$.Metriche e prestazioni di rete per i servizi multimediali →, Codifica lossless - entropia, Huffman e codifiche a dizionarioLa codifica lossless rappresenta i simboli di una sorgente con parole di codice a lunghezza variabile in modo invertibile; si usano codici a prefisso (istantanei). L'entropia $H(X)=\sum p_i\log_2\frac1{p_i}$ è il limite: $H(X)\le\mathcal L^*<H(X)+1$ (Shannon), con uguaglianza se le probabilità sono potenze di 1/2. Il codice di Huffman è ottimo ma lascia fino a 1 bit di overhead per simbolo; raggruppando $K$ simboli (codifica a blocchi) si tende al tasso entropico $\mathcal H(X)\le H(X)$, ma la complessità cresce come $M^K$; la codifica aritmetica ($\mathcal L<H+2$ per messaggio) ha complessità lineare. Altre tecniche: dizionario (LZ, DEFLATE di ZIP e PNG, ANS in Zstandard), Exp-Golomb e categoria/ampiezza (usati in JPEG e nei codec video) per interi con probabilità decrescente col modulo, codifica predittiva (si codifica l'errore di predizione, che ha entropia molto più bassa).Codifica lossless - entropia, Huffman e codifiche a dizionario →.