Comprensione della conversione e (de) compressione dell'audio lossless


12

Ho alcune domande sull'audio lossless. Sto pensando di convertire la mia intera collezione musicale in .flac senza perdita di dati, ma prima voglio capire alcune cose.

Se ho un file che è .flac e voglio trasformarlo in, diciamo, .wav, come posso fare questo per non avere alcuna perdita di qualità? Se lo decomprimo, so che non perderò la qualità. La conversione di .flac in .wav equivale alla decompressione?

Questo vale anche per il formato .ape? Ho alcune registrazioni di dominio pubblico che ho scaricato in .ape, ma voglio farlo .flac. Sarebbe possibile passare a .flac senza usare .wav come intermediario. Voglio assicurarmi che neanche un po 'si perda in alcun modo.

Inoltre, se ci sono guide che spiegano il mondo della perdita perfetta, qualcuno sarebbe disposto a condividere un link? :)

Risposte:


14

Primo:

Comprendi la differenza tra una codifica e un formato contenitore . http://en.wikipedia.org/wiki/Digital_container_format

Un formato contenitore è un formato dati che "incapsula" altri dati codificati. Spesso contiene "meta-informazioni" sui dati codificati o ha un modo per memorizzare più flussi separati di dati codificati, o qualcosa del genere.

Una codifica, prodotta da un codec, è la vera "carne" del flusso di dati.

L'esempio più comune che mi viene in mente è il formato "Ogg / Vorbis". Ogg è il formato contenitore e Vorbis è la codifica. Quindi hai un file formattato Ogg e all'interno ci sono questi piccoli secchi che contengono dati codificati. All'interno di ogni bucket è presente un flusso di dati con codifica Vorbis e nient'altro. Sul secchio potrebbe essere impresso il nome dell'artista e il titolo della canzone, per esempio.

Quindi torniamo alla tecnologia:

  1. Se hai già musica in un formato con perdita di dati, come mp3 o ogg / vorbis, convertirla in un formato senza perdita di dati consumerà solo (molto) spazio su disco e NON - assolutamente NON - migliorerà la qualità di l'audio di sorta. Non puoi creare fedeltà una volta che è già stata persa. A meno che tu non stia scrivendo un'interfaccia GUI in Visual Basic in alcuni show televisivi di successo chiamati CSI, ma questa è fantasia, non realtà.

  2. Se hai musica in altri formati senza perdita di dati e vuoi convertirla in FLAC, puoi farlo.

  3. Fai attenzione a lanciare il termine "WAV". Wav non DEVE essere senza perdita; in realtà, WAV è solo un contenitore per vari formati possibili. È un po 'come AVI in quel senso. PUOI avere un WAV senza perdita di dati se si tratta solo di dati PCM non elaborati, ma puoi anche incorporare i dati di livello III MPEG-1 (con perdita) in un file WAV.

  4. È possibile perdere i dati durante la conversione da un formato senza perdita di dati a un altro, se si riduce la fedeltà dei dati. Ad esempio, se si converte un flusso di dati PCM a 16 bit senza segno a 48000 Hz in un flusso di dati PCM a 8 bit a 44100 Hz, si perde la fedeltà in due modi: i campioni vengono uniti da 48000 a soli 44100 per secondo (con conseguente perdita di dati) e i dati devono essere mischiati per adattarli alle informazioni in soli 8 bit anziché 16 per campione, il che danneggerebbe notevolmente la qualità.

Ogni flusso audio digitale, anche quelli codificati da un codificatore di compressione (lossy o lossless), hanno le seguenti "Proprietà del formato del campione", che sono elementi essenziali che descrivono le proprietà del flusso:

  1. Larghezza e profondità del bit di esempio, ovvero 8 bit, 16 bit, ecc. La larghezza e la profondità del bit sono leggermente diverse, e c'è anche little-endian / big-endian (che non influisce sulla qualità) e con segno o senza segno (che inoltre non influisce sulla qualità, ma influisce sul modo in cui l'encoder / decodificatore gestisce i dati). Il punto chiave da ricordare è che "più bit è meglio". Quindi 32 bit è meglio di 16 bit, ecc.

  2. Frequenza, nota anche come frequenza di campionamento. Altro è meglio perché hai più "campioni" di audio riprodotti al secondo. Immagina di passare rapidamente il dito su un mazzo di carte e di vederle sfocate: è così che avviene essenzialmente l'audio digitale. Ogni campione è una carta e se hai più carte che volano al secondo, l'audio è più fluido. Ad esempio, noteresti davvero se stavi girando solo 5 carte al secondo, ma tutto si confonderebbe se stai lanciando migliaia di carte al secondo. Quindi di più è meglio, perché è più naturale e più vicino alla realtà, che è analogico e infinitamente divisibile (beh, fino alle unità Planck ma è discutibile e fuori tema).

"Lossless" significa solo che se si utilizza lo stesso o migliore formato di esempio nell'output utilizzato nell'input, non si perderanno i dati.

Quindi, se passi dal formato di esempio da 16 bit a 32 bit, non perdi i dati. Ma se passi da 32 bit a 16 bit, perdi i dati.

Quindi la risposta alla tua domanda se l'uso di FLAC ha senso dipende dai dati di origine: se hai file WAV a 64 bit che sono stati originariamente registrati in quel formato di esempio, con 192000 Hz (aka 192KHz) e li converti in un " standard "formato di esempio FLAC di 16 bit e 44,1 KHz, perderai una tonnellata di dati. Ma se il tuo file WAV è a 8 bit con solo 22100 campioni al secondo e lo converti in un FLAC a 16 bit con 44100 campioni al secondo, non perderai dati. E potresti anche finire per aumentare le dimensioni del file, a seconda che vinca la compressione senza perdita o il formato di esempio più piccolo.

Il formato del campione influenzerà lo spazio occupato dal file, quindi i bit "più grandi" e le frequenze di campionamento "più veloci" occuperanno più spazio.

Per quanto riguarda le questioni pratiche e l'orecchio umano: non noterai davvero se converti originali ad alta fedeltà fino a FLAC a 44,1 KHz a 16 bit. Ma non noterai alcun miglioramento se converti un MP3 in FLAC. Quindi è necessario valutare in quale formato di esempio sono i dati di origine prima di decidere cosa fare.

Ora che ti ho fornito tutte queste informazioni, ecco le mie risposte dirette e senza risposta, a spiegazione zero alle tue domande:

Ho alcune domande sull'audio lossless. Sto pensando di convertire la mia intera collezione musicale in .flac senza perdita di dati, ma prima voglio capire alcune cose.

Se la tua raccolta musicale è su CD e vuoi copiarla su FLAC, secondo me è un'ottima scelta. L'audio di qualità CD sarà a 44,1 KHz e a 16 bit per campione. Ciò corrisponde esattamente alle impostazioni predefinite di FLAC (almeno, le impostazioni predefinite negli encoder che utilizzo). Pertanto non perderai alcun dato e sarà matematicamente identico ai dati di input quando decodificato.

Se ho un file che è .flac e voglio trasformarlo in, diciamo, .wav, come posso fare questo per non avere alcuna perdita di qualità? Se lo decomprimo, so che non perderò la qualità. La conversione di .flac in .wav equivale alla decompressione?

Puoi convertirlo in un file .wav con lo stesso o un formato di esempio più ampio rispetto ai dati di input e non avrai alcuna perdita di qualità.

Quando un lettore multimediale riproduce l'audio nel file flac, essenzialmente decodifica i dati flac in un formato PCM prima di inviare tali dati PCM alla scheda audio. Lo decomprimerà con gli stessi dati che sono stati inseriti; quindi se i dati PCM a 16,1 KHz a 16 bit sono entrati, è quello che uscirà e andrà ai tuoi altoparlanti.

L'unica differenza tra questa attività e la conversione dell'audio in un file WAV è che, quando lo converti in un file WAV, deve creare un contenitore WAV con i bit di riempimento appropriati, ecc. E ti consente anche di scegliere il formato di esempio del file WAV. Ma supponendo che il formato di esempio sia lo stesso, l'unica differenza tra i file FLAC e WAV sarà la dimensione del file: i file WAV saranno sostanzialmente più grandi.

Questo vale anche per il formato .ape? Ho alcune registrazioni di dominio pubblico che ho scaricato in .ape, ma voglio farlo .flac. Sarebbe possibile passare a .flac senza usare .wav come intermediario. Voglio assicurarmi che neanche un po 'si perda in alcun modo.

No, non è possibile farlo senza utilizzare un formato PCM come intermediario. Sì, è possibile farlo senza utilizzare un file WAV. Nota la differenza. Datastream PCM. File WAV. Se la distinzione non ti è chiara, rileggi l'inizio del mio post. Se vuoi assicurarti che "neanche un po '" vada perso, allora devi esaminare i tuoi file APE e capire in che formato di esempio sono, e assicurarti che il tuo codificatore FLAC sia impostato per codificare per le stesse impostazioni.

Internamente, qualsiasi programma di conversione audio decodificherà dal formato sorgente in una sorta di formato di esempio PCM lossless, quindi prenderà quei campioni PCM e li ricodificherà nel formato di destinazione.

Inoltre, se ci sono guide che spiegano il mondo della perdita perfetta, qualcuno sarebbe disposto a condividere un link? :)

Secondo me, il modo migliore per imparare è fare. Se ti prendi del tempo per imparare il framework Gstreamer, come usarlo e i significati dei vari parametri sintonizzabili del formato di esempio e come costruire una pipeline, otterrai una comprensione davvero forte dell'audio digitale. Controlla. http://gstreamer.freedesktop.org/ Puoi anche prendere l'SDK Gstreamer da http://code.entropywave.com/gstreamer-sdk/ (Windows è supportato) e sperimentare gst-launch-0.10 senza dover compilare nulla dalla fonte.

Alcune cose rivelatrici:

gst-inspect-0.10 vorbisenc gst-inspect-0.10 vorbisdec gst-inspect-0.10 audio convertito gst-inspect-0.10 audioresample

Quindi scopri i tappi, la costruzione di condutture, ecc. E ti sposterai subito.

* Nota: mi rendo conto di non aver spiegato cos'è il PCM. Wikipedia fa un lavoro migliore di me: http://en.wikipedia.org/wiki/Pulse-code_modulation


Wow, questo è semplicemente incredibile quanto chiaramente e in che modo hai spiegato tutto questo. Non avevo mai pensato a metà di queste cose prima, un buon spunto di riflessione. Grazie per la risposta - e per il tempo impiegato a scrivere anche questo! +1!
Ryan McClure,

Dovresti sempre mirare a mantenere intatti i bitrate e le frequenze di campionamento, poiché la perdita senza perdita di dati implica idealmente dati PCM identici. Il campionamento a qualcosa di diverso dal doppio della frequenza di campionamento non sarà mai privo di perdite (non è possibile aggiungere gli zeri in modo uniforme) e spreca spazio su disco. In ogni caso, ciò non dovrebbe essere un problema con FLAC in quanto può gestire qualsiasi risoluzione di bit PCM da 4 a 32 bit per campione, qualsiasi frequenza di campionamento da 1 Hz a 655.350 Hz con incrementi di 1 Hz e qualsiasi numero di canali da 1 a 8 ( en.wikipedia.org/wiki/FLAC#Design )
mtone

WAV contiene sempre PCM. Potrebbe non essere un PCM di qualità cd (ma praticamente parlando, in genere si può presumere perché è quasi sempre il caso), ma sarà PCM, non qualcos'altro come mpeg 3 layer 2.
psusi

@psusi: scusa ma ti sbagli. Si prega di leggere l'articolo di Wikipedia su WAV: en.wikipedia.org/wiki/WAV . Se lo desideri, posso pubblicare un collegamento a un file WAV contenente audio MP3. La cosa da tenere a mente sui file WAV è che sono solo un file RIFF e un file RIFF è una revisione abbastanza primitiva di un formato contenitore multimediale. Ma almeno nel suo scopo fondamentale, non è estremamente diverso da Ogg o Matroska, oltre a supportare solo l'audio e non il video. Modifica: non devo creare un file wav / mp3; Sìì! In effetti è collegato da Wikipedia! nch.com.au/acm/8kmp316.wav
allquixotic

Ci sono alcune imprecisioni in questa risposta. "Frequenza, nota anche come frequenza di campionamento. Altro è meglio perché hai più" campioni "di audio riprodotti al secondo." - Non è così che funzionano le frequenze di campionamento. Se non fosse coinvolta la profondità di bit, i dati con una frequenza di campionamento di 48 kHz potrebbero rappresentare segnali fino a 24 kHz senza perdita di dati e l'aggiunta di più campioni non cambierebbe questo. Più campioni influenzano solo le frequenze che puoi rappresentare. Anche la conversione da 44,1 kHz a 48 kHz non è strettamente senza perdita di dati, anche se l'errore introdotto è insanamente piccolo.
cooky451,

1

Non sono d'accordo con l'affermazione di allquixotic.

Se hai già musica in un formato con perdita di dati, come mp3 o ogg / vorbis, convertirla in un formato senza perdita di dati consumerà solo (molto) spazio su disco e NON - assolutamente NON - migliorerà la qualità di l'audio di sorta. Non puoi creare fedeltà una volta che è già stata persa. A meno che tu non stia scrivendo un'interfaccia GUI in Visual Basic in alcuni show televisivi di successo chiamati CSI, ma questa è fantasia, non realtà.

Ti mancano le conoscenze sull'ingegneria audio e sull'alimentazione delle persone con la falsa dichiarazione.

  1. Ogg e Vorbis dispongono entrambi di contenitori che salvano le informazioni sui dati wave originali e possono essere convertiti in perdita con tali dati. Per favore, fai abbastanza google.

  2. anche la conversione da MP3 a bassa qualità senza perdita rende MOLTO un miglioramento del suono, non è perfetto come l'originale, ma può essere risolto facilmente con la dinamica e il dithering. https://www.izotope.com/en/products/master-and-deliver/ozone.html/OzoneDitheringGuide.pdf

L'audio non è un dato 10100110101001, quindi file di dimensioni inferiori non significa che abbia perso la qualità. Potresti avere esperienza con 128kbps a 320kbps decenni fa e indovinare 128kbps senza perdita di dati è impossibile. Per favore, prova tu questo semplice compito e realizzalo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.