Introduzione alla codifica audio per Speech-to-Text

La codifica audio si riferisce al modo in cui i dati audio vengono archiviati e trasmessi. La documentazione riportata di seguito descrive il funzionamento di queste codifiche in relazione all'API Speech-to-Text.

Per le linee guida sulla scelta della codifica migliore per la tua applicazione, vedi 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 hanno solo lo scopo di fornire una panoramica generale. Alcune di queste informazioni di base possono essere utili per comprendere il funzionamento dell'API e come 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 di file popolare come .WAV, ad esempio, definisce il formato dell'intestazione di un file audio, ma non è una codifica audio. .WAV file audio spesso, ma non usa sempre una codifica PCM lineare; non dare per scontato che un file .WAV abbia particolari fino a quando non ispezionirai l'intestazione.

Tuttavia, FLAC è sia un formato file sia una codifica, che a volte portano con un po' di confusione. Un file FLAC deve contenere la frequenza di campionamento nell'attributo FLAC per essere inviato all'API Speech-to-Text. FLAC è l'unico una codifica che richiede che i dati audio includano un'intestazione; Tutte le altre codifiche audio e specificare dati audio senza intestazione. Quando facciamo riferimento a FLAC all'interno dell'API Speech-to-Text, ci riferiamo sempre al codec. Quando facciamo riferimento a un formato file FLAC, utilizzeremo il formato "un file .FLAC".

Non è necessario specificare la codifica e la frequenza di campionamento per WAV 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 per Speech-to-Text

L'API Speech-to-Text supporta diverse codifiche. Nella tabella che segue sono elencati i codec audio supportati:

Codec Nome Senza perdita Note sull'utilizzo
MP3 MPEG Audio Layer III No La codifica MP3 è una funzione Beta ed è disponibile solo nella versione v1p1beta1. Per informazioni dettagliate, consulta la documentazione di riferimento di RecognitionConfig.
FLAC Codec audio senza perdita di dati 16 bit o 24 bit obbligatori per gli stream
LINEAR16 PCM lineare Codifica PCM (Pulse Code Modulation) lineare a 16 bit. L'intestazione deve contenere la frequenza di campionamento.
MULAW Legge di μ No Codifica PCM a 8 bit
AMR Banda stretta multi-frequenza adattiva No La frequenza di campionamento deve essere 8000 Hz
AMR_WB Adaptive Multi-Rate Wideband No La frequenza di campionamento deve essere 16.000 Hz
OGG_OPUS Frame audio codificati in Opus in un contenitore Ogg No La frequenza di campionamento deve essere una delle seguenti: 8000 Hz, 12000 Hz, 16000 Hz, 24000 Hz o 48000 Hz
SPEEX_WITH_HEADER_BYTE Speex wideband No La frequenza di campionamento deve essere 16.000 Hz
WEBM_OPUS Opus WebM No La frequenza di campionamento deve essere una delle seguenti: 8000 Hz, 12000 Hz, 16000 Hz, 24000 Hz o 48000 Hz

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

Se puoi scegliere di codificare il materiale di origine, utilizza una codifica senza perdita di dati come FLAC o LINEAR16 per migliorare il riconoscimento vocale. Per le linee guida su selezionando il codec appropriato per la tua attività, consulta Best practice.

Perché codificare?

L'audio è costituito da forme d'onda, costituite dall'interposizione di onde di frequenze e ampiezze diverse. Per rappresentare queste forme d'onda, nei media digitali, le forme d'onda devono essere campionate a velocità che possono (almeno) rappresentano i suoni alla frequenza massima che desideri replicare e devono anche archiviare una profondità di bit sufficiente per rappresentare ampiezza adeguata (volume e morbidezza) delle forme d'onda del suono campione.

La capacità di un dispositivo di elaborazione del suono di ricreare le frequenze è nota come la sua risposta in frequenza e la capacità di creare un volume e la morbidezza è nota come intervallo dinamico. Insieme, questi termini sono spesso indicati come fedeltà di un dispositivo audio. Una codifica, nella sua forma più semplice, è un mezzo per ricostruire il suono utilizzando questi due principi di base, nonché per archiviare e trasportare questi dati in modo efficiente.

Frequenze di campionamento

Il suono esiste sotto forma di forma d'onda analogica. Un segmento di audio digitale è simile a questa onda analogica campionando l'ampiezza dell'onda analogica a velocità una frequenza sufficiente a imitare le frequenze intrinseche dell'onda. Un segmento audio digitale La frequenza di campionamento specifica il numero di campioni da prendere dalla sorgente di un audio materiale (al secondo); una frequenza di campionamento elevata aumenta la capacità dell'audio per rappresentare fedelmente le alte frequenze.

Per effetto del Teorema di Nyquist-Shannon, solitamente devi campionare oltre il doppio della frequenza più alta di qualsiasi suono dell'immagine che desideri acquisire digitalmente. Per rappresentare l'audio nell'intervallo di frequenza udibile dall'orecchio umano (20-20000 Hz), ad esempio, un formato audio digitale deve campionare almeno 40000 volte al secondo (questo è uno dei motivi per cui l'audio dei CD utilizza una frequenza di campionamento di 44100 Hz).

Profondità di bit

La profondità di bit influisce sulla gamma dinamica di un determinato campione audio. Un po' più alto profondità consente di rappresentare ampiezze più precise. Se hai molti suoni forti e morbidi all'interno dello stesso campione audio, occorre una maggiore profondità di bit per rappresentare correttamente i suoni.

Profondità di bit più elevate riducono anche il rapporto segnale/rumore all'interno dei sample audio. L'audio musicale dei 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à. (Alcuni Le tecniche di compressione possono compensare le piccole profondità di bit, ma tendono può essere con perdita di dati.)

Audio non compresso

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

PCM lineare (che indica che la risposta di ampiezza è linearmente uniforme sul campione) è lo standard utilizzato nei CD e all'interno LINEAR16 dell'API Speech-to-Text. Entrambe le codifiche producono un flusso non compresso di byte corrispondenti direttamente ai dati audio ed entrambi gli standard contengono 16 frammenti di profondità. Il PCM lineare utilizza una frequenza di campionamento di 44.100 Hz all'interno dei CD, che è appropriati per la ricomposizione di musica; tuttavia, una frequenza di campionamento di 16000 Hz più appropriati per la ricomposizione del parlato.

Il PCM lineare (LINEAR16) è un esempio di audio non compresso in quanto i dati digitali vengono archiviati esattamente come implicano gli standard precedenti. Lettura di un un flusso a un canale di byte codificati tramite PCM lineare, potresti contare ogni 16 bit (2 byte), per esempio, per ottenere un altro valore di ampiezza della forma d'onda. Quasi tutti i dispositivi possono manipolare questi dati digitali in modo nativo, puoi persino ritagliare i file audio PCM lineari utilizzando un editor di testo, ma (ovviamente) l'audio non compresso non è il modo più efficiente per trasportare o memorizzare l'audio digitale. Per questo motivo, la maggior parte degli audio utilizza tecniche di compressione digitale.

Audio compresso

I dati audio, come tutti i dati, vengono spesso compressi per facilitarne l'archiviazione trasporto pubblico. La compressione all'interno della codifica audio può essere lossless o con perdita di dati. La compressione senza perdita di dati può essere decompressa per ripristinare i dati digitali formato originale. La compressione con perdita rimuove necessariamente alcune di queste informazioni durante la compressione e la decompressione ed è parametrizzata per indicare la tolleranza per assegnare alla tecnica di compressione la rimozione dei dati.

Compressione senza perdita di dati

La compressione senza perdita di dati comprime i dati audio digitali utilizzando riorganizzazioni complesse dei dati archiviati, ma non comporta un peggioramento della qualità dell'originale campione digitale. Con la compressione senza perdita di dati, quando i dati vengono scompattati nella forma digitale originale, non viene persa alcuna informazione.

Perché a volte le tecniche di compressione senza perdita di dati parametri? Questi parametri spesso scambiano le dimensioni del file con il tempo di decompressione. Ad esempio, FLAC utilizza un parametro di livello di compressione da 0 (più veloce) a 8 (dimensioni file più piccole). La compressione FLAC di livello superiore non perde informazioni. rispetto a una compressione di livello inferiore. Al contrario, l'algoritmo di compressione dovrà spendere più energia di calcolo per costruire o scomporre l'audio digitale originale.

L'API Speech-to-Text supporta due codifiche senza perdita di dati: FLAC e LINEAR16. Tecnicamente, LINEAR16 non è una "compressione senza perdita di dati" perché nessuna compressione è coinvolti in primo luogo. Se le dimensioni del file o la trasmissione dei dati sono tu, scegli FLAC come scelta di codifica audio.

Compressione con perdita di dati

La compressione con perdita, invece, comprime i dati audio eliminando o riducendo determinati tipi di informazioni durante la creazione dei dati compressi. L'API Speech-to-Text supporta diversi formati con perdita di dati, anche se dovresti evitarli se hai il controllo sull'audio, perché la perdita di dati potrebbe influire sull'accuratezza 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 dell'intervallo audio di una persona normale e regolano la quantità di compressione modificando il bitrate effettivo del codec MP3 o la quantità di bit al secondo per memorizzare i dati audio.

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

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

La compressione MP3 rimuove questi dati digitali utilizzando velocità in bit come 320 kbps, 128 kbps o 96 kbps, ad esempio, con un conseguente peggioramento della qualità audio. MP3 supporta anche velocità in bit variabili, che possono comprimere ulteriormente l'audio. Entrambe le tecniche perdono informazioni e possono influire sulla qualità. La maggior parte delle persone, ad esempio, riesce a distinguere la differenza tra musica MP3 codificata a 96 Kbps o 128 Kbps.

Altre forme di compressione parametrizzano un altro vincolo.

MULAW è un PCM a 8 bit codifica, in cui l'ampiezza del campione è modulata logaritmicamente anziché in modo lineare. Di conseguenza, uLaw riduce l'effettivo intervallo dinamico dell'audio così compresso. Sebbene uLaw sia stato introdotto per ottimizzare specificamente la codifica della voce rispetto ad altri tipi di audio, LINEAR16 a 16 bit (PCM non compresso) è ancora di gran lunga superiore all'audio compresso uLaw a 8 bit.

AMR e AMR_WB modulano il campione audio codificato introducendo una velocità in bit variabile sul campione audio di origine.

Sebbene l'API Speech-to-Text supporti diversi formati con perdita di dati, dovresti evitarli se puoi controllare l'audio sorgente. Sebbene la rimozione di questi dati tramite compressione con perdita non possa influire in modo significativo sull'audio ascoltato dall'orecchio umano, la perdita di questi dati per un motore di riconoscimento vocale può ridurre notevolmente l'accuratezza.