Introduzione alla codifica audio per Speech-to-Text

Per codifica audio si intende il modo in cui i dati audio vengono archiviati e vengono trasmessi. La documentazione seguente descrive come funzionano queste codifiche in 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 deve essere formulato ed elaborato l'audio nelle tue applicazioni.

Formati audio e codifiche

Tieni presente che un formato audio non è equivalente 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. 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 ispezioni l'intestazione.

FLAC, tuttavia, è sia un formato file che una codifica, il che a volte porta a confusione. Un file FLAC deve contenere la frequenza di campionamento nell'elemento FLAC per essere inviato all'API Speech-to-Text. FLAC è l'unica codifica che richiede che i dati audio includano un'intestazione; tutte le altre codifiche audio specificano 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 di file FLAC, utilizzerà 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 l'intestazione del file. Se specifichi un valore di codifica o di 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 una serie di codifiche diverse. La tabella seguente elenca 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 (Linear Pulse Code Modulation) a 16 bit. L'intestazione deve contenere la frequenza di campionamento.
MULAW Legge di μ No Codifica PCM a 8 bit
AMR Narrowband multi-rate adattivo No La frequenza di campionamento deve essere 8000 Hz
AMR_WB Adaptive Multi-Rate Wideband No La frequenza di campionamento deve essere 16000 Hz
OGG_OPUS Frame audio Opus codificati in un container Ogg No La frequenza di campionamento deve essere 8000 Hz, 12000 Hz, 16000 Hz, 24000 Hz, o 48000 Hz
SPEEX_WITH_HEADER_BYTE Speex wideband No La frequenza di campionamento deve essere 16000 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 Speech-to-Text, consulta il AudioEncoding documentazione di riferimento.

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

Perché codificare?

L'audio è composto da forme d'onda, che sono l'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 audio di ricreare le frequenze è nota come risposta in frequenza, mentre la sua capacità di creare un volume e una dolcezza adeguati è nota come gamma dinamica. Insieme, questi termini spesso definita 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 come forma d'onda analogica. Un segmento di audio digitale approssima questa onda analogica campionando l'ampiezza di questa onda analogica a una frequenza sufficientemente elevata da 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 sull'intervallo dinamico di un determinato campione audio. Una profondità di bit più elevata consente di rappresentare ampiezze più precise. Se hai molti suoni forti e deboli nello stesso sample audio, avrai bisogno di una maggiore profondità di bit per rappresentarli correttamente.

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 bit 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 profondità di bit inferiori, ma tendono a presentare una perdita di dati.

Audio non compresso

La maggior parte dell'elaborazione dell'audio digitale utilizza queste due tecniche: frequenza di campionamento e 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 previsto dagli standard di cui sopra. 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 senza perdita di dati o con perdita di dati. La compressione senza perdita di dati può essere scompattata per ripristinare i dati digitali nella loro forma originale. La compressione con perdita di dati rimuove necessariamente alcune di queste informazioni durante la compressione e la decompressione ed è parametrizzata per indicare la tolleranza da concedere 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 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 decompressi 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 alla 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

La compressione con perdita, invece, comprime i dati audio eliminando o riducendo alcuni tipi di informazioni durante la costruzione del modello e i dati di Google Cloud. 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. Tutti gli MP3 le tecniche di compressione rimuovono l'audio al di fuori del normale intervallo audio di un essere umano. e la quantità di compressione regolando l'effetto velocità in bit o quantità di bit al secondo per archiviare la data audio.

Ad esempio, un CD stereo che utilizza un 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 tali dati digitali utilizzando velocità in bit quali 320 Kbps, 128 kbps o 96 kbps, ad esempio, con un conseguente peggioramento della qualità audio. L'MP3 supporta anche le velocità in bit variabili, che possono comprimere ulteriormente l'audio. Entrambi 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 parametrizzeranno altri vincoli.

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 Modulare AMR_WB il campione audio codificato introducendo una velocità in bit variabile sull'audio di origine campione.

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 tali dati la compressione con perdita di dati potrebbe non influire in modo significativo sull'audio percepito dall'utente orecchio, la perdita di questi dati a favore di un motore di riconoscimento vocale può peggiorare significativamente la precisione.