Introduzione alla codifica audio

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Una codifica audio si riferisce al modo in cui i dati audio vengono memorizzati e trasmessi. La documentazione riportata di seguito descrive il funzionamento di tali codifiche. Per le linee guida sulla scelta della codifica migliore per l'applicazione, consulta le best practice.

La codifica audio digitale è un argomento complesso e in genere non è necessario conoscere i dettagli per elaborare l'audio all'interno dell'API Speech. I concetti forniti qui sono solo una panoramica generale. Alcune di queste informazioni di base possono essere utili per capire il funzionamento dell'API e il modo in cui l'audio deve essere formulato ed elaborato nelle tue applicazioni.

Formati audio e codifiche

Tieni presente che un formato audio non equivale a una codifica audio. Un formato file popolare, ad esempio .WAV, definisce il formato dell'intestazione di un file audio, ma non è a sua volta una codifica audio. I file audio .WAV spesso, ma non sempre, utilizzano una codifica PCM lineare. Non dare per scontato che un file .WAV abbia una codifica particolare finché non ne controlli l'intestazione.

FLAC, tuttavia, è sia un formato file che una codifica, che a volte crea confusione. Per poter essere inviato all'API Speech-to-Text, un file FLAC deve contenere la frequenza di campionamento nell'intestazione FLAC. FLAC è l'unica codifica che richiede l'inserimento di dati audio per includere un'intestazione; tutte le altre codifiche audio specificano dati audio senza intestazione. Quando si fa riferimento a FLAC all'interno dell'API Speech-to-Text, si fa sempre riferimento al codec. Quando si fa riferimento a un formato file FLAC, viene utilizzato il formato "un file .FLAC".

Non è necessario specificare la codifica e la frequenza di campionamento per i file FLAV o FLAC. Se omesso, Speech-to-Text determina automaticamente la codifica e la frequenza di campionamento per i file WAV o FLAC in base all'intestazione del file. Se specifichi un valore di codifica o frequenza di campionamento che non corrisponde al valore nell'intestazione del file, Speech-to-Text restituisce un errore.

Codifiche audio supportate

L'API Speech-to-Text supporta una serie di codifiche. La tabella riportata di seguito elenca i codec audio supportati:

Codec Nome Senza perdita Note sull'utilizzo
MP3 Livello audio MPEG III No La codifica MP3 è una funzionalità beta ed è disponibile solo nella versione v1p1beta1. Per informazioni dettagliate, consulta la documentazione di riferimento di RecognitionConfig.
FLAC Codec audio Lossless gratuiti Per gli stream sono necessari 16 bit o 24 bit
LINEAR16 PCM lineare Codifica di modulazione di impulso lineare (PCM) a 16 bit. L'intestazione deve contenere la frequenza di campionamento.
MULAW -law No Codifica PCM a 8 bit
AMR Fascia a banda multipla adattiva No La frequenza di campionamento deve essere 8000 Hz
AMR_WB Banda larga adattiva multi-frequenza No La frequenza di campionamento deve essere 16000 Hz
OGG_OPUS Frame audio Opus codificati in un contenitore Ogg No La frequenza di campionamento deve essere 8000 Hz, 12000 Hz, 16000 Hz, 24000 Hz o 48000 Hz
SPEEX_WITH_HEADER_BYTE Banda larga Speex No La frequenza di campionamento deve essere 16000 Hz
WEBM_OPUS WebM Opus No La frequenza di campionamento deve essere 8000 Hz, 12000 Hz, 16000 Hz, 24000 Hz o 48000 Hz

Per ulteriori informazioni sui codec audio Speech-to-Text, consulta la documentazione di riferimento di AudioEncoding.

Se hai la scelta durante la codifica del materiale di origine, utilizza una codifica senza perdita di dati come FLAC o LINEAR16 per un migliore riconoscimento vocale. Per le linee guida sulla selezione del codec appropriato per la tua attività, consulta le best practice.

Perché effettuare la codifica?

L'audio è costituito da forme d'onda, costituite dall'interposizione di onde di diverse frequenze e ampiezze. Per rappresentare queste forme d'onda all'interno dei media digitali, le forme d'onda devono essere campionate a frequenze che possano rappresentare almeno i suoni della frequenza più elevata che vuoi replicare e devono anche memorizzare una profondità di bit sufficiente per rappresentare l'ampiezza corretta (intensità e morbidezza) delle forme d'onda nel campione di suono.

La capacità di un dispositivo di elaborazione dei suoni di ricreare le frequenze è nota come risposta di frequenza e la capacità di creare un volume e una morbidezza appropriati è nota come intervallo dinamico. Questi termini nel complesso sono definiti fidelità dei dispositivi audio. Nella sua forma più semplice, la codifica è un mezzo per ricostruire l'audio sulla base di questi due principi, oltre ad essere in grado di archiviare e trasportare tali dati in modo efficiente.

Frequenze di campionamento

Il suono esiste come forma d'onda analogica. Un segmento di audio digitale approssima questa onda analogica campionando l'ampiezza dell'onda analogica a una velocità sufficiente per simulare le frequenze intrinseche dell'onda. La frequenza di campionamento di un segmento audio digitale specifica il numero di campioni da prelevare dal materiale di origine audio (al secondo); una frequenza di campionamento elevata aumenta la capacità dell'audio digitale di rappresentare fedelmente le alte frequenze.

Come conseguenza del teorema di Nyquist-Shannon, di solito è necessario campionare più del doppio della frequenza più elevata di qualsiasi onda audio che vuoi acquisire in digitale. Per rappresentare l'audio compreso nell'intervallo di udito umano (20-20000 Hz), ad esempio, un formato audio digitale deve campionare almeno 40.000 volte al secondo (il che fa parte della ragione per cui l'audio CD utilizza una frequenza di campionamento di 44100 Hz).

Profondità di bit

La profondità di bit influisce sulla gamma dinamica di un dato campione audio. Una profondità di bit maggiore consente di rappresentare ampiezze più precise. Se all'interno dello stesso campione audio sono presenti molti suoni forti e lievi, avrai bisogno di una maggiore profondità di bit per rappresentare correttamente tali suoni.

Profondità di bit più elevate riducono anche il rapporto segnale/rumore all'interno dei campioni audio. L'audio musicale del CD viene fornito con una profondità di 16 bit. L'audio DVD utilizza 24 bit di profondità di bit, mentre la maggior parte delle apparecchiature di telefonia utilizza 8 bit di profondità di bit. Alcune tecniche di compressione possono compensare piccole profondità dei bit, ma tendono a essere perditebili.

Audio non compresso

La maggior parte dell'elaborazione audio digitale utilizza queste due tecniche, la frequenza di campionamento e la profondità di bit, per archiviare i dati audio in modo semplice. Una delle tecniche audio digitali più popolari (in uso il Compact Disc) è nota come Pulse Code Modulation (o PCM). L'audio viene campionato a intervalli prestabiliti e l'ampiezza dell'onda campionata in quel punto viene archiviata come valore digitale utilizzando la profondità di bit del campione.

Il PCM lineare (che indica che la risposta dell'ampiezza è lineare in modo uniforme in tutto il campione) è lo standard utilizzato all'interno dei CD e all'interno della codifica LINEAR16 dell'API Speech-to-Text. Entrambe le codifiche producono uno stream non compresso di byte corrispondenti direttamente ai dati audio ed entrambi gli standard contengono 16 bit di profondità. Il PCM lineare utilizza una frequenza di campionamento a 44.100 Hz all'interno dei CD,che è appropriata per la ricomposizione della musica; tuttavia, una frequenza di campionamento pari a 16000 Hz è più appropriata per la ricomposizione del parlato.

L'elemento PCM lineare (LINEAR16) è un esempio di audio non compresso in quanto i dati digitali vengono archiviati esattamente come previsto dagli standard precedenti. Leggendo un flusso a un canale di byte codificati utilizzando la tecnologia PCM lineare, potresti eseguire il conteggio di ogni 16 bit (2 byte), ad esempio, per ottenere un altro valore di ampiezza della forma d'onda. Quasi tutti i dispositivi possono manipolare i dati digitali in modo nativo, ma è possibile anche ritagliare i file audio lineari PCM utilizzando un editor di testo, ma ovviamente non l'audio non compresso non è il modo più efficiente per trasportare o archiviare l'audio digitale. Per questo motivo, la maggior parte dell'audio utilizza tecniche di compressione digitale.

Audio compresso

I dati audio, come tutti i dati, vengono spesso compressi per semplificare l'archiviazione e il trasporto. La compressione all'interno della codifica audio potrebbe essere perdita o perdita. È possibile decomprimere i dati digitali per ripristinarne la forma originale. La compressione con perdita di dati rimuove necessariamente alcune di queste informazioni durante la compressione e la decompressione ed è parametrizzata per indicare il livello di tolleranza da dare alla tecnica di compressione per rimuovere i dati.

Compressione senza perdita di dati

La compressione senza perdita di dati comprime i dati audio digitali utilizzando complesse disposizioni riordinate dei dati archiviati, ma non genera un peggioramento della qualità del campione digitale originale. Grazie alla compressione senza perdita di dati, una volta pacchettizzati i dati nella loro forma digitale originale, nessuna informazione andrà persa.

Perché a volte le tecniche di compressione senza perdita di dati presentano parametri di ottimizzazione? Questi parametri spesso scambiano le dimensioni dei file per i tempi di decompressione. Ad esempio, FLAC utilizza un parametro del livello di compressione da 0 (più veloce) a 8 (dimensione del file più piccolo). La compressione FLAC di livello superiore non comporterà la perdita di informazioni rispetto alla compressione di livello inferiore. L'algoritmo di compressione dovrà semplicemente investire più energia di calcolo durante la creazione o la decostruzione dell'audio digitale originale.

L'API Speech-to-Text supporta due codifiche senza perdita: FLAC e LINEAR16. Tecnicamente, LINEAR16 non è una compressione senza perdita di dati, perché in primo luogo viene coinvolta nessuna compressione. Se è importante per te la dimensione del file o la trasmissione dati, scegli FLAC come scelta per la codifica audio.

Compressione discontinua

La compressione lenta, invece, comprime i dati audio eliminando o riducendo alcuni tipi di informazioni durante la creazione dei dati compressi. L'API Speech-to-Text supporta vari formati con perdita di dati, anche se è consigliabile evitarli se hai il controllo sull'audio, perché la perdita di dati potrebbe influire sulla precisione del riconoscimento.

Il popolare codec MP3 è un esempio di tecnica di codifica con perdita di dati. Tutte le tecniche di compressione MP3 rimuovono l'audio al di fuori di un normale intervallo audio umano e regolano la quantità di compressione regolando la frequenza di bit effettiva del codec MP3 o la quantità di bit al secondo per memorizzare la data audio.

Ad esempio, un CD stereo che utilizza un PCM lineare di 16 bit ha una velocità in bit effettiva pari a:

44100 * 2 channels * 16 bits = 1411200 bits per second (bps) = 1411 kbps

La compressione MP3 rimuove tali dati digitali utilizzando frequenze di bit come 320 kbps, 128 kbps o 96 kbps, ad esempio, con conseguente riduzione della qualità audio. Il formato MP3 supporta anche la velocità in bit variabile, che può comprimere ulteriormente l'audio. Entrambe le tecniche perdono informazioni e possono influire sulla qualità. La maggior parte delle persone è in grado di distinguere, ad esempio, tra 96 kbps e 128 kbps con musica MP3.

Altre forme di compressione parametrizzano alcuni altri vincoli.

MULAW è una codifica PCM a 8 bit, in cui l'ampiezza del campione viene modulata logaritmicamente anziché in modo lineare. Di conseguenza, uLaw riduce l'intervallo dinamico effettivo dell'audio compresso. Sebbene uLaw sia stato introdotto per ottimizzare in modo specifico la codifica del parlato rispetto ad altri tipi di audio, LINEAR16 a 16 bit (PCM non compresso) è comunque di gran lunga superiore a quello per l'audio compresso a 8 bit.

AMR e AMR_WB modulano il campione audio codificato introducendo una frequenza bit variabile nel campione audio di origine.

Sebbene l'API Speech-to-Text supporti diversi formati con perdita di dati, è consigliabile evitarli se hai il controllo sull'audio di origine. Sebbene la rimozione di tali dati tramite la compressione con perdita, non possa influenzare in modo evidente l'audio rilevato dall'orecchio umano, la perdita di tali dati da parte di un motore di riconoscimento vocale potrebbe ridurre notevolmente la precisione di quest'ultimo.