Per codifica audio si intende il modo in cui i dati audio vengono archiviati e vengono trasmessi. La documentazione riportata di seguito descrive il funzionamento di queste codifiche. Per 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 devi 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. Alcuni di questi le informazioni di base possono essere utili per comprendere il funzionamento dell'API. al modo in cui l'audio deve essere formulato ed elaborato 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. .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.
Decodifica configurazione
I parametri necessari per decodificare l'audio trasmesso sono specificati in
decoding_config
oneof.
Se l'audio è in uno dei formati supportati da
AutoDetectDecodingConfig
ti consigliamo vivamente di impostare il
auto_decoding_config
campo per consentire a Speech-to-Text di determinare i parametri corretti per te.
In caso contrario, devi specificare esplicitamente i parametri di decodifica impostando il metodo
explicit_decoding_config
. Questi parametri sono generalmente disponibili osservando le impostazioni utilizzate per
registrare l'audio.
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 all'interno media digitali, le forme d'onda devono essere campionate a velocità che possono (almeno) rappresentano i suoni con la frequenza più alta che vuoi replicare e che Devi anche memorizzare una profondità di bit sufficiente per rappresentare l'ampiezza corretta (volume e morbidezza) delle forme d'onda nel campione sonoro.
La capacità di un dispositivo di elaborazione del suono di ricreare le frequenze è nota come 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, come oltre alla possibilità di 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 per imitare le frequenze intrinseche dell'onda. Il campione di un segmento audio digitale frequenza specifica il numero di campioni da prendere dal materiale di origine di un audio. (al secondo); una frequenza di campionamento elevata aumenta la capacità dell'audio digitale rappresentare fedelmente le alte frequenze.
Come conseguenza del teorema di Nyquist-Shannon, in genere è necessario campionare più del doppio della frequenza più alta di qualsiasi ampiezza di suono che vuoi 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. Profondità in bit più elevata ti consente di rappresentare ampiezze più precise. Se hai un volume elevato suoni deboli nello stesso campione audio, ti servirà una maggiore profondità di bit per per rappresentare correttamente i suoni.
Profondità di bit più elevate riducono anche il rapporto segnale/rumore all'interno dei sample audio. CD l'audio musicale viene fornito utilizzando una profondità di bit a 16 bit. L'audio DVD utilizza 24 bit di di bit, mentre la maggior parte delle apparecchiature di telefonia utilizza 8 bit di profondità. 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 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 dell'onda campionata a quel punto viene memorizzato come valore digitale utilizzando la profondità di bit del campione.
PCM lineare (che indica che la risposta di ampiezza è linearmente uniforme
attraverso il campione) è lo standard utilizzato nei CD e all'interno di 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 di 44.100 Hz nei CD, che è appropriata per la ricomposizione della musica. Tuttavia, una frequenza di campionamento di 16000 Hz è più appropriata per la ricomposizione della voce.
Il PCM lineare è un esempio di audio non compresso in quanto i dati digitali sono archiviati esattamente come previsto dagli standard precedenti. Se leggi uno stream di byte monocanale codificato utilizzando PCM lineare, puoi contare ogni 16 bit (2 byte), ad esempio, per ottenere un altro valore di ampiezza dell'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 dell'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 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
La compressione senza perdita di dati comprime i dati audio digitali utilizzando riordinamenti complessi degli stessi, ma non comporta alcun degrado della qualità del campione digitale originale. Con la compressione senza perdita di dati, quando i dati vengono decompressi originale, le informazioni non andranno perse.
Perché allora le tecniche di compressione senza perdita di dati a volte hanno parametri di ottimizzazione? Spesso questi parametri scambiano le dimensioni del file per il tempo di decompressione. Per
Ad esempio, FLAC
utilizza un parametro del livello di compressione da 0 (più veloce) a 8
(dimensione minima del file). 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 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. 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 il valore bit effettivo del codec MP3 velocità, o quantità di bit al secondo per memorizzare 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 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 la gamma dinamica effettiva dell'audio così compresso. Sebbene sia stato introdotto uLaw per ottimizzare specificamente la codifica
voce in contrasto con altri tipi di audio, LINEAR16
a 16 bit (PCM non compresso)
è comunque 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 hai il controllo sull'audio di origine. 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.