Compreendendo a conversão e (des) compactação de áudio sem perdas

12

Eu tenho algumas perguntas sobre áudio sem perdas. Estou pensando em copiar toda a minha coleção de músicas para .flac sem perdas, mas quero entender algumas coisas primeiro.

Se eu tenho um arquivo .flac e quero transformá-lo em, digamos, .wav, como posso fazer isso para não ter perda de qualidade? Se eu descompactá-lo, sei que não vou perder qualidade. Converter .flac em .wav é o mesmo que descomprimir?

Isso também se aplica ao formato .ape? Tenho algumas gravações de domínio público que baixei em .ape, mas quero torná-lo .flac. O .ape para .flac seria possível sem usar o .wav como intermediário. Quero garantir que nem um pouco se perca.

Além disso, se houver algum guia que explique o mundo sem perdas, alguém estaria disposto a compartilhar um link? :)

Ryan McClure
fonte

Respostas:

14

Primeiro:

Entenda a diferença entre um formato de codificação e um contêiner . http://en.wikipedia.org/wiki/Digital_container_format

Um formato de contêiner é um formato de dados que "encapsula" outros dados codificados. Freqüentemente contém "meta-informações" sobre os dados codificados ou possui uma maneira de armazenar vários fluxos separados de dados codificados, ou algo assim.

Uma codificação, produzida por um codec, é a "carne" real do fluxo de dados.

O exemplo mais comum que consigo pensar é o formato "Ogg / Vorbis". Ogg é o formato do contêiner e Vorbis é a codificação. Então você tem um arquivo no formato Ogg e dentro dele existem esses pequenos baldes que contêm dados codificados. Dentro de cada bloco, há um fluxo de dados codificado em Vorbis e nada mais. No balde pode ser carimbado o nome do artista e o título da música, por exemplo.

Então, de volta à tecnologia:

  1. Se você já tem música em um formato com perdas, como mp3 ou ogg / vorbis, convertê-las em um formato sem perdas consumirá apenas (muito) espaço em disco e NÃO - absolutamente NÃO - melhorará a qualidade de o áudio seja qual for. Você não pode criar fidelidade uma vez que já esteja perdido. A menos que você esteja escrevendo uma interface gráfica no Visual Basic em algum programa de TV chamado CSI, mas isso é fantasia, não realidade.

  2. Se você possui músicas em outros formatos sem perdas e deseja convertê-las em FLAC, pode fazê-lo.

  3. Tenha cuidado ao usar o termo "WAV". Wav não precisa ficar sem perdas; na verdade, o WAV é apenas um contêiner para vários formatos possíveis. É como o AVI nesse sentido. Você PODE ter um WAV sem perdas se forem apenas dados PCM brutos, mas também pode incorporar dados MPEG-1 Camada III (com perdas) em um arquivo WAV.

  4. É possível perder dados ao converter de um formato sem perdas para outro, se você reduzir a fidelidade dos dados. Por exemplo, se você converter um fluxo de dados PCM de 16 bits não assinado a 48000 Hz em um fluxo de dados PCM de 8 bits a 44100 Hz, estará perdendo a fidelidade de duas maneiras: as amostras estão sendo mescladas de 48000 para apenas 44100 por segundo (resultando em perda de dados), e os dados devem ser misturados para ajustar as informações em apenas 8 bits em vez de 16 por amostra, o que prejudicará drasticamente a qualidade.

Todo fluxo de áudio digital, mesmo aqueles codificados por um codificador compactador (com ou sem perdas), possui as seguintes "Propriedades de formato de amostra", que são elementos essenciais que descrevem as propriedades do fluxo:

  1. Largura e profundidade de bits de amostra, ou seja, 8 bits, 16 bits, etc. A largura e a profundidade dos bits são sutilmente diferentes, e há também little-endian / big-endian (que não afeta a qualidade) e assinado ou não-assinado (o que também não afeta afeta a qualidade, mas afeta a maneira como o codificador / decodificador lida com os dados). O ponto principal a lembrar é que "mais bits é melhor". Então 32 bits é melhor que 16 bits, etc.

  2. Frequência, também conhecida como taxa de amostragem. Mais é melhor porque você tem mais "amostras" de áudio sendo reproduzidas por segundo. Imagine passar o dedo rapidamente sobre um baralho de cartas e assistir as cartas passarem desfocadas - é assim que o áudio digital basicamente acontece. Cada amostra é um cartão e, se você tiver mais cartões voando por segundo, o áudio será mais contínuo. Você realmente notaria se estivesse apenas lançando 5 cartas por segundo, mas tudo ficaria borrado se você estivesse lançando milhares de cartas por segundo. Então, mais é melhor, porque é mais natural e mais próximo da realidade, que é analógica e infinitamente divisível (bem, até as unidades de Planck, mas isso é discutível e fora de tópico).

"Sem perdas" significa apenas que, se você usar o mesmo ou melhor formato de amostra na saída usado na entrada, não perderá nenhum dado.

Portanto, se você passar do formato de amostra de 16 para 32 bits, não perderá dados. Mas se você passa de 32 para 16 bits, perde dados.

Portanto, a resposta à sua pergunta sobre se o uso do FLAC faz sentido depende dos dados de origem: se você possui arquivos WAV de 64 bits que foram originalmente gravados no formato de amostra, com 192000 Hz (também conhecido como 192KHz), e os converte em " formato de amostra FLAC padrão de 16 bits e 44,1 KHz, você perderá uma tonelada de dados. Mas se o seu arquivo WAV for de 8 bits com apenas 22100 amostras por segundo e você o converter em um FLAC de 16 bits com 44100 amostras por segundo, você não perderá dados. E você pode até aumentar o tamanho do arquivo, dependendo se a compactação sem perdas ou o formato de amostra menor vence.

O formato de amostra afetará a quantidade de espaço que o arquivo ocupa, portanto, os bits "maiores" e as taxas de amostragem "mais rápidas" ocuparão mais espaço.

No que diz respeito às preocupações práticas e ao ouvido humano: você realmente não notará se converter originais realmente de alta fidelidade em FLAC de 44.1KHz a 44 bits. Mas você também não notará uma melhoria se converter um MP3 em FLAC. Portanto, você precisa avaliar em qual formato de amostra seus dados de origem estão antes de decidir o que fazer.

Agora que forneci todas essas informações, aqui estão minhas respostas diretas, à queima-roupa e com explicações zero para suas perguntas:

Eu tenho algumas perguntas sobre áudio sem perdas. Estou pensando em copiar toda a minha coleção de músicas para .flac sem perdas, mas quero entender algumas coisas primeiro.

Se a sua coleção de músicas está em CDs e você deseja copiá-la para o FLAC, isso é muito bom na minha opinião. O áudio com qualidade de CD será de 44,1 KHz e 16 bits por amostra. Isso corresponde exatamente às configurações padrão do FLAC (pelo menos, os padrões nos codificadores que eu uso). Portanto, você não perderá nenhum dado e ele será matematicamente idêntico aos dados de entrada quando decodificado.

Se eu tenho um arquivo .flac e quero transformá-lo em, digamos, .wav, como posso fazer isso para não ter perda de qualidade? Se eu descompactá-lo, sei que não vou perder qualidade. Converter .flac em .wav é o mesmo que descomprimir?

Você pode convertê-lo em um arquivo .wav com o mesmo formato de amostra ou mais amplo que os dados de entrada e não terá perda de qualidade.

Quando um media player reproduz o áudio em seu arquivo flac, ele basicamente decodifica os dados flac para um formato PCM antes de enviar esses dados PCM para a placa de som. Ele descompactará exatamente os mesmos dados inseridos; por isso, se os dados PCM de 44,1 KHz de 16 bits forem recebidos, é isso que sairá e será direcionado para os alto-falantes.

A única diferença entre essa atividade e a conversão do áudio em um arquivo WAV é que, quando você o converte em um arquivo WAV, é necessário criar um contêiner WAV com os bits de preenchimento apropriados etc. e também permite escolher o formato de amostra do arquivo WAV. Mas, supondo que o formato de amostra seja o mesmo, a única diferença entre os arquivos FLAC e WAV será o tamanho do arquivo: os arquivos WAV serão substancialmente maiores.

Isso também se aplica ao formato .ape? Tenho algumas gravações de domínio público que baixei em .ape, mas quero torná-lo .flac. O .ape para .flac seria possível sem usar o .wav como intermediário. Quero garantir que nem um pouco se perca.

Não, não é possível fazer isso sem usar algum formato PCM como intermediário. Mas sim, é possível fazê-lo sem usar um arquivo WAV. Observe a diferença. Fluxo de dados PCM. Arquivo WAV. Se a distinção não estiver clara para você, releia o início do meu post. Se você deseja garantir que "nem um pouco" seja perdido, é necessário examinar os arquivos do APE e entender em que formato de amostra eles estão. Verifique se o codificador FLAC está definido para codificar para as mesmas configurações.

Internamente, qualquer programa de conversão de áudio será decodificado do formato de origem para algum tipo de formato de amostra PCM sem perdas e, depois, pegará essas amostras de PCM e as recodificará no formato de destino.

Além disso, se houver algum guia que explique o mundo sem perdas, alguém estaria disposto a compartilhar um link? :)

Na minha opinião, a melhor maneira de aprender é fazer. Se você dedicar algum tempo para aprender a estrutura do Gstreamer, como usá-la e os significados dos vários ajustes do formato de amostra e como construir um pipeline, você terá uma compreensão realmente forte do áudio digital. Confira. http://gstreamer.freedesktop.org/ Você também pode pegar o SDK do Gstreamer em http://code.entropywave.com/gstreamer-sdk/ (Windows é suportado) e experimentar o gst-launch-0.10 sem precisar compilar nada da fonte.

Algumas coisas reveladoras:

gst-inspecionar-0.10 vorbisenc gst-inspecionar-0.10 vorbisdec gst-inspecionar-0.10 audioconvert gst-inspecionar-0.10 amostra

Em seguida, aprenda sobre limites, construção de tubulações, etc. e você estará seguindo em frente.

* Nota: Sei que não expliquei o que é PCM. A Wikipedia faz um trabalho melhor do que eu: http://en.wikipedia.org/wiki/Pulse-code_modulation

allquixotic
fonte
Uau, isso é simplesmente incrível, com que clareza e excelência você explicou tudo isso. Nunca pensei em metade dessas coisas antes, boa comida para pensar. Obrigado pela resposta - e pelo tempo que você levou para digitar isso também! +1!
9139 Ryan McClure
Você deve sempre manter intactas as taxas de bits e taxas de amostragem, uma vez que a ausência de perdas implica, idealmente, dados PCM idênticos. Upsampling para algo que não seja o dobro da taxa de amostragem nunca será sem perdas (você não pode adicionar zeros uniformemente) e desperdiça espaço em disco. Em qualquer caso, isso não deve ser um problema com o FLAC, pois ele pode lidar com qualquer resolução de PCM de 4 a 32 bits por amostra, qualquer taxa de amostragem de 1 Hz a 655.350 Hz em incrementos de 1 Hz e qualquer número de canais de 1 a 8 ( en.wikipedia.org/wiki/FLAC#Design )
mtone
O WAV sempre contém PCM. Pode não ser um PCM com qualidade de CD (mas na prática, você geralmente pode assumir isso porque quase sempre é o caso), mas será PCM, não algo como MPEG 3 layer 2.
psusi
@ psusi: Desculpe, mas você está errado. Por favor, leia o artigo da wikipedia sobre WAV: en.wikipedia.org/wiki/WAV . Se você quiser, posso postar um link em um arquivo WAV contendo áudio MP3. O que você deve ter em mente sobre os arquivos WAV é que eles são apenas um arquivo RIFF, e um arquivo RIFF é uma revisão bastante primitiva de um formato de contêiner de mídia. Mas, pelo menos em sua finalidade fundamental, não é extremamente diferente de Ogg ou Matroska, além de oferecer apenas suporte a áudio e não a vídeo. Editar: não preciso criar um arquivo wav / mp3; yay! De fato, está vinculado à Wikipedia! nch.com.au/acm/8kmp316.wav
allquixotic
Existem algumas imprecisões nesta resposta. "Frequência, também conhecida como taxa de amostragem. Mais é melhor porque você tem mais" amostras "de áudio sendo reproduzidas por segundo." - Não é assim que as taxas de amostragem funcionam. Se a profundidade de bits não estivesse envolvida, os dados com taxa de amostragem de 48khz poderiam representar sinais de até 24khz sem perdas, e adicionar mais amostras não mudaria isso. Mais amostras influenciam apenas quais frequências você pode representar. A conversão de 44.1khz para 48khz também não é estritamente sem perdas, mesmo que o erro introduzido seja insanamente pequeno.
cooky451
1

Eu tenho que discordar da afirmação de allquixotic.

Se você já tem música em um formato com perdas, como mp3 ou ogg / vorbis, convertê-las em um formato sem perdas consumirá apenas (muito) espaço em disco e NÃO - absolutamente NÃO - melhorará a qualidade de o áudio seja qual for. Você não pode criar fidelidade uma vez que já esteja perdido. A menos que você esteja escrevendo uma interface gráfica no Visual Basic em algum programa de TV chamado CSI, mas isso é fantasia, não realidade.

Você não tem conhecimento de engenharia de áudio e alimenta as pessoas com a afirmação falsa.

  1. Ogg e Vorbis possuem contêineres que salvam as informações originais dos dados das ondas e podem ser convertidas em sem perdas com esses dados. Por favor, faça o google o suficiente.

  2. Mesmo a conversão de MP3 de baixa qualidade para perda sem perdas melhora bastante o som, não é tão perfeita quanto o original, mas pode ser corrigida com dinâmica e pontilhamento facilmente. https://www.izotope.com/en/products/master-and-deliver/ozone.html/OzoneDitheringGuide.pdf

O áudio não é um dado 10100110101001; portanto, um tamanho menor de arquivo não significa que ele perdeu a qualidade. Você pode ter experiência com 128kbps a 320kbps décadas atrás e acho que 128kbps a sem perdas é impossível. Teste esta tarefa simples e realize-a.

Seandex
fonte