# Codificador de veu

La codificació de veu és el procés que permet transformar un senyal de veu analògic (combinació de múltiples ones sonores) en un conjunt de dígits binaris o senyal digital. El seu objectiu principal és aconseguir una bona qualitat final del senyal digital utilitzant el menor nombre de bits possibles per a representar-lo. Prèviament a la mateixa codificació, el senyal ha passat pels dos primers blocs bàsics de qualsevol cadena de conversió analògica-digital, que són el mostratge i la quantificació.
El procés de codificació pot tenir diferents finalitats (transmissió, emmagatzematge, processat, etc.), i des de fa molt temps s'aplica en diferents camps de les telecomunicacions, com per exemple en telefonia (per cable, sense fils i mòbil), seguretat, criptografia, bústies de veu, contestadors, radiodifusió (DAB), televisió (HDTV), videoconferència, emmagatzematge (MD, DVD), entre d'altres.
En l'actualitat existeix una gran varietat de codificadors de veu, que aprofiten les característiques intrínseques del senyal de veu analògic per poder reduir la informació a transmetre sense que el senyal digital obtingut presenti diferències apreciables per l'oïda humana. Les característiques fonamentals del senyal de veu són la redundància, l'ample marge dinàmic i la no estacionarietat, de manera que els codificadors analitzen el senyal d'entrada, n'intenten eliminar o minimitzar les redundàncies, i codifiquen eficientment la part no redundant de manera perceptualment acceptable. Com a valor afegit al procés, la codificació de veu permet incorporar algorismes de xifrat per establir comunicacions privades segures o realitzar gravacions indesxifrables per a terceres persones.

## Tipus de codificadors de veu

Els codificadors de veu es poden classificar en 3 grans grups:
   * Els vocoders (VOice CODER)
   * Els codificadors de forma d'ona (waveform coders)
   * Codificadors híbrids

## Vocoders

A diferència dels codificadors de forma d'ona, que no tenen en compte la naturalesa del senyal a codificar, els vocoders n'aprofiten les característiques intrínseques perquè la codificació sigui més eficient. Intenten produir un senyal que soni com la veu original, independentment de si la forma d'ona s'hi assembla o no. Al transmissor s'analitza la veu i s'extreuen els paràmetres del model i l'excitació, i aquesta informació s'envia al receptor, on a través d'un model simplificat de producció de veu aquesta és sintetitzada. El resultat obtingut és un senyal de veu intel·ligible amb una taxa de bits molt baixa, però té el problema que sona bastant sintètic (poc natural).

### Vocoder per predicció lineal

Aquest vocoder utilitza un model de producció semblant al d'altres vocoders però difereix en la determinació del model del tracte vocal. Suposa que aquest es pot descriure per un filtre tot pols de resposta impulsiva infinita (filtre IIR), H(z). Aquest filtre s'anomena LPC (Linear Predictive Coding).
Se suposa que cada mostra és una combinació lineal de les mostres anteriors. Els coeficients del filtre es calculen per minimitzar l'error entre la mostra actual i la seva predicció.
La popularitat d'aquest vocoder prové del fet que el model tot pols del tracte vocal funciona molt bé i és possible aconseguir un senyal de veu sintetitzat molt intel·ligible a taxes de bit de l'ordre de 2,4 Kbps. En concret a aquesta velocitat es coneix com a LPC-10, ja que s'utilitzen 10 coeficients per a definir el filtre.

## Codificadors de forma d'ona

Aquest tipus de codificadors de veu intenten reproduir la forma d'ona del senyal sense tenir en compte la naturalesa d'aquest. Aprofiten la redundància del senyal aplicant predicció lineal i permeten codificar qualsevol senyal d'àudio. Presenten una degradació acceptable en presència de soroll i errors de transmissió. Això no obstant, perquè siguin efectius, s'han d'utilitzar a taxes de bits mitges. La codificació es pot dur a terme tant en el domini temporal com en el freqüencial.

### Codificadors en el domini temporal

Dins d'aquest grup trobem els següents codificadors de veu:
      * PCM
      * DPCM
      * ADPCM

#### Modulació per codificació d'impulsos (PCM, Pulse Code Modulation)

La modulació por codificació d'impulsos és la codificació de forma d'ona més senzilla. Bàsicament consisteix en el procés de quantificació uniforme. Cada mostra que entra al codificador es quantifica amb un determinat nivell d'entre un conjunt finit de nivells de reconstrucció. Cadascun d'aquests nivells es fa correspondre amb una seqüència de dígits binaris, que és la que s'envia al receptor. Es poden utilitzar diferents criteris per a dur a terme la quantificació, essent la quantificació logarítmica la tècnica més utilitzada. En aquest cas el pas de quantificació segueix una funció de tipus logarítmic, que equival a aplicar una compressió/expansió de les amplituds i una quantificació uniforme. Un exemple d'aquest tipus de quantificació és la llei Mu.

#### Modulació per codificació d'impulsos diferencial (DPCM, Differential PCM)

Degut al fet que PCM no té en compte la forma d'ona del senyal a codificar, funciona bé per a senyals d'àudio genèrics, però quan es codifica un senyal de veu apareix una gran correlació (semblança) entre mostres consecutives del senyal. Aquesta correlació pot aprofitar-se per a reduir la taxa de bits, transmetent només el senyal diferència (anomenat residu) entre mostres. Aquest senyal diferència té un marge dinàmic molt per sota del marge dinàmic del senyal de veu original, per tant es podrà quantificar amb un nombre de nivells de reconstrucció menor. A més a més, el fet de tenir menys variància millora la relació senyal a soroll (SNR).

#### Modulació per codificació d'impulsos diferencial adaptativa (ADPCM, Adaptive DPCM)

En modulació per codificació d'impulsos diferencial (DPCM), tant el predictor com el quantificador romanen fixos en el temps. Per aconseguir una major eficiència d'aquest sistema, ADPCM utilitza quantificadors i predictors adaptatius que permeten adaptar-se dinàmicament a les variacions i característiques del senyal de veu. Això fa que l'error quadràtic de predicció es minimitzi contínuament, amb independència del senyal de veu i de l'emissor.
Hi ha dos mètodes per adaptar els quantificadors i els predictors, anomenats adaptació feedforward i adaptació feedbackward. En la feedforward, els nivells de reconstrucció i els coeficients de predicció es calculen a l'emissor, utilitzant un bloc de veu. Després són quantificats i transmesos al receptor com a informació lateral. Tant l'emissor com el receptor utilitzen aquests valors quantificats per fer prediccions i quantificar el residu.
En l'adaptació feedbackward els nivells de reconstrucció i els coeficients de predicció es calculen a partir del senyal codificat. Com que el senyal és conegut tant per l'emissor com pel receptor, no hi ha necessitat de transmetre informació lateral, així el predictor i el quantificador poden actualitzar-se per cada mostra. L'adaptació feedbackward pot obtenir taxes de bit menors, però és més sensible a errors de transmissió que l'adaptació feedforward.
ADPCM és molt útil per codificar veu a taxes de bits mitges. La ITU-T proposa un estàndard de codificació de veu telefònica a una velocitat de 32 Kbps, l'anomenat G.721. Utilitza un esquema d'adaptació feedbackward tant pel quantificador com pel predictor. Altres estàndards posteriors definits per la ITU-T com el G.722 i el G.726 també utilitzen el sistema de codificació ADPCM o derivats.

### Codificadors en el domini freqüencial

Aquests mètodes de codificació es basen en dos principis bàsics:
   * En el propi filtrat o transformació, que en ser en domini freqüencial permet l'obtenció de menys components correlats que generaran una codificació més eficient.
   * En el coneixement de la distorsió percebuda pels oients en el domini freqüencial, que pot ser utilitzat per millorar el rendiment subjectiu del codificador.
Dins d'aquest grup trobem dos tipus de codificadors:
   * Codificadors sub-banda (SBC, Sub-Band Coding)
   * Codificadors psicoacústics

#### Codificadors sub-banda (SBC, Sub-Band Coding)

El senyal d'entrada es filtra en diverses bandes de freqüència, cadascuna de les quals es modula per obtenir un senyal banda base, aquest es delma i posteriorment es codifica. El nombre de bits assignats a cada banda pot variar en funció de la seva importància.
Al receptor els senyals codificats per cada banda s'interpolen, recuperant la freqüència de mostreig original, i es modulen per tal de traslladar-los a la seva banda de freqüència original. Al final d'aquest procés, els components de cadascuna de les bandes se sumen per tal d'aconseguir el senyal de veu reconstruït.
El principal avantatge de la codificació en sub-bandes és que el soroll de quantificació que es produeix en cada banda queda confinat a aquesta.
Un estàndard de la ITU-T que utilitza aquesta codificació sub-banda combinada amb ADPCM és el G.722. Mostreja el senyal a una freqüència de 16 kHz i 14 bits per mostra, obtenint 224 Kbps de taxa de bits. Aquest estàndard codifica senyals d'àudio de fins a 8 kHz, els descompon en dues bandes de 4 kHz, i aplica ADPCM a cadascuna d'elles. S'obtenen taxes de bit finals de 48, 56 i 64 Kbps.

#### Codificadors psicoacústics

Aquest tipus de codificadors utilitzen un model basat en la percepció del sistema auditiu, i intenten explotar les seves imperfeccions analitzant aquelles freqüències que el sistema auditiu no percep, eliminant-les o reduint-ne la seva energia. Aquesta tècnica permet disminuir les taxes de bit dels senyals de veu sense que l'oient percebi cap diferència notable respecte al senyal original. El seu funcionament es basa en el concepte d'emmascarament freqüencial.
L'anàlisi freqüencial es pot fer amb un banc de filtres o amb transformades discretes (FFT, DCT, etc.). El llindar d'emmascarament proporciona els bits per a cada banda de freqüències. L'assignació de bits per banda pot fer-se amb quantificadors escalars o amb mètodes d'anàlisi i síntesi.

## Codificadors híbrids

Els codificadors híbrids combinen les tècniques dels codificadors de forma d'ona amb les dels vocoders amb el propòsit d'obtenir una alta qualitat a taxes de bit baixes (inferiors a 8 Kbps). En aquests codificadors, les mostres del senyal d'entrada es divideixen en blocs de mostres (vectors) que són processats com si en fossin un de sol. L'emissor realitza una anàlisi que obté els paràmetres del senyal de veu per després sintetitzar-la i aconseguir la major semblança respecte a l'original. També es coneixen com a codificadors d'anàlisi-per-síntesi.
Els més coneguts són:
   * CELP
   * MPLPC
   * RELP

### Codificador CELP (Codebook Excited Linear Prediction)

Aquest codificador es basa en procediments de recerca d'anàlisi-per-síntesi, quantificació vectorial amb pesos (VQ) i predicció lineal (LP). Utilitza dos llibres de codis (codebook) o diccionari de diferents senyals d'excitació del qual tant codificador com descodificador disposen. Bàsicament el codificador busca el senyal d'excitació més adequat per al filtre LP dins un llibre de codis fix i un altre d'adaptatiu, i n'envia el corresponent índex al descodificador, que l'utilitza per reproduir el senyal de veu. El llibre de codis conté seqüències estocàstiques (mostres de soroll aleatori blanc gaussià). Hi ha múltiples variants del CELP que s'utilitzen en moltes aplicacions, com per exemple el CELP de retard curt (Low Delay CELP, LD-CELP) o el CELP algebraic (Algebraic CELP, ACELP), que s'utilitzen generalment en trucades de veu per Internet i en telefonia mòbil.

### Codificador MPLPC (Multi Pulse Linear Predictive Coding)

La predicció lineal multipols (MPLPC) va ser el primer dels esquemes d'anàlisi per síntesi. Tracta de corregir un dels principals problemes dels vocoders, que és la impossibilitat de considerar senyals de veu formats per sumes de son sonors i sons sords. No realitza cap suposició sobre el senyal d'excitació, sinó que l'especifica mitjançant un petit conjunt de polsos de diferents amplituds situats en intervals espaiats no uniformement. La codificació es basa a determinar la posició i les amplituds dels polsos que produeixen el mínim error. L'única informació que s'ha de fixar a priori és el nombre de polsos necessaris en l'anàlisi de cada bloc. Habitualment s'utilitza un pols cada 8 mostres.
El MPLPC seria equivalent a un CELP amb totes les combinacions possibles de nombres de polsos i els seus possibles valors d'amplituds quantificats. Una de les seves variants està implementada en l'estàndard de codificació europeu de telefonia mòbil GSM. Produeix un senyal de veu de bona qualitat a taxes de bit de l'ordre de 9,6 Kbps.
Una variant del MPLPC consisteix a escollir com a seqüència d'excitació uns patrons de polsos regularment espaiats, dels quals només es codifica el primer. Aquest codificador es coneix com a RPE (Regular Pulse Excitation).

### Codificador RELP (Residual-Excited Linear Prediction)

El residu conté tota la informació d'excitació i qualsevol que el filtre LPC no considera. La idea d'aquest tipus de codificadors és que una petita part del residu es transmeti i a partir d'aquesta reconstruir el residu complet al receptor.
Tot i ser un tipus de codificador de veu poc utilitzat en l'actualitat, proporciona una qualitat acceptable per a velocitats de transmissió de 9,6 Kbps.

## Comparació de diferents codificadors de veu

Codificació de veu en banda telefònica (3,4 kHz)
| Algorisme | Velocitat (Kbps) | Compressió | MIPS |
| PCM | 128 | 1 |
| PCM llei Mu | 64 | 2 |
| ADPCM | 32 | 4 | 1 |
| LD-CELP | 16 | 8 | 10 |
| RPE-LTD | 113 | 9,7 | 50 |
| CELP | 4,8 | 26,7 | 30 |
| LPC-10 | 2,4 | 53,3 | 15 |
Codificació de veu en banda ampla (7 kHz) :
| Algorisme | Velocitat (Kbps) | Compressió | MIPS |
| PCM | 256 | 1 |
| SBC | 64 | 4 | 10 |
| LD-CELP | 32 | 8 | 100 |
| LD-CELP | 16 | 16 | 400 |

## Vegeu també

* Codificació d'àudio de la telefonia IP
* PCM
* DPCM
* ADPCM

## Enllaços externs

* Current Capabilities in Speech Coding Arxivat 2008-10-06 a Wayback Machine. (anglès)
* Curso audiovisual interactivo de codificación de voz Arxivat 2009-12-14 a Wayback Machine. (castellà)
* Basics of speech coding Arxivat 2008-12-02 a Wayback Machine. (anglès)
* Speech coding course Arxivat 2008-10-01 a Wayback Machine. (anglès)
* Design of a CELP coder Arxivat 2006-09-20 a Wayback Machine. (anglès)