Questão:
Qual é a maneira correta de reduzir a taxa de amostragem de áudio e a profundidade de bits?
shadowox8
2013-07-01 20:03:40 UTC
view on stackexchange narkive permalink

Quando apresentado a um arquivo de áudio sem perdas, qual é a maneira correta de reduzir a taxa de amostragem e a profundidade de bits?

Ao reduzir a profundidade de bits, entendo que devo aplicar o pontilhamento, mas não sei qual escala ou método usar. (Na verdade, li que devo usar um pontilhamento "triangular" ou "modelador", mas ainda não sei qual deles usar. Isso se resume à preferência pessoal?)

Quando reduzindo a taxa de amostragem, não tenho ideia se processamento adicional é necessário. (Evidentemente, a taxa de amostragem é muito mais complicada do que a profundidade de bits.) No momento, meu processo de conversão se parece com este:

  ffmpeg -i <input.file> -compression_level 12 [-ar 44100 -sample_fmt 16] <output.flac>  

Prefiro respostas gerais às específicas do aplicativo, mas aceitarei o que puder. Desde já agradeço!

Sou um consumidor, não um produtor. Nenhum processamento adicional será aplicado a esses arquivos.

Editar 0: Exemplo do mundo real: Eu tenho um arquivo 96/24 PCM (WAV). Eu quero que seja 44,1 / 16.

Editar 1: Outras pesquisas produziram esta fantástica comparação de conversores de taxa de amostragem (com gráficos)!

Eu encontrei [este vídeo] (http://xiph.org/video/vid2.shtml) em outra pergunta e achei muito informativo e fácil de seguir. É basicamente sobre a conversão A / D e D / A, mas há algumas boas informações sobre o dither e seus efeitos.
Consulte [FFmpeg and the SoX Resampler] (https://trac.ffmpeg.org/wiki/FFmpeg%20and%20the%20SoX%20Resampler) e [FFmpeg Resampler Documentation] (http://ffmpeg.org/ffmpeg-resampler. html).
Por fim, usei SoX (autônomo). O último link foi incluído na minha pergunta.
Um responda:
Bjorn Roche
2013-07-01 22:59:22 UTC
view on stackexchange narkive permalink

Vamos analisar um de cada vez, na ordem correta:

  1. Você está começando com um arquivo sem perdas. Isso é PCM ou compactado sem perdas (você não especificou). Se estiver compactado, deve ser convertido para PCM (ou descompactado) para fazer algo significativo. Isso geralmente é feito automaticamente por qualquer aplicativo que alega poder ler o formato, mas você deve estar ciente de que isso está ocorrendo. Visto que mais trabalho deve ser feito neste áudio, as amostras devem ser convertidas para o formato de ponto flutuante.

  2. Em seguida, vem a conversão da taxa de amostragem. Como você disse corretamente, a conversão SR é complexa. Uma abordagem ingênua para a conversão SR produzirá distorção de "aliasing". Por exemplo, pegar todas as outras amostras de um arquivo de 44100 Hz fornecerá um arquivo de 22050, mas qualquer material que não possa ser representado corretamente em 22050, em vez de ser eliminado, será incorretamente representado. Dependendo de quanto havia, a representação incorreta pode soar extremamente ruim. A solução é filtrar essas coisas primeiro, então a conversão SR consiste em filtrar, seguida por reamostragem (embora haja um truque que permite fazer as duas coisas em uma única etapa, conceitualmente são duas etapas, nessa ordem). Normalmente a filtragem é feita automaticamente pelo software de conversão sr, mas você deve estar ciente disso porque isso faz a maior diferença para a qualidade. Não economize na qualidade do filtro se você se importar.

  3. Finalmente, você reduz a profundidade de bits. Tal como acontece com a conversão SR, uma abordagem ingênua à redução de profundidade de bits resulta em um tipo de distorção, mas esse tipo de distorção é geralmente considerado menos desagradável. A solução para essa distorção é adicionar "dither", que é uma pequena quantidade de ruído. Você deve adicionar o pontilhamento antes da redução da profundidade de bits. Adicionar pontilhamento após a redução não terá outro efeito além de adicionar ruído. Para a maioria dos softwares, o pontilhamento é uma opção (se estiver disponível) e não é executado automaticamente. O pontilhamento que você usa, e mesmo que seja, é, em grande parte, uma questão de preferência e o material de origem. Existem grandes estúdios de masterização que não se incomodam mais em hesitar, embora, matematicamente falando, seja a única maneira de eliminar a distorção. [1] Quanto ao pontilhamento triangular vs "em forma" [2], a regra é esta: o pontilhamento em forma é usado para a última etapa, o pontilhamento triangular é usado para outras etapas. Portanto, no seu caso, você provavelmente deve usar um pontilhamento em forma. No entanto, você pode preferir o pontilhamento triangular padrão como sua última etapa se um pontilhamento em forma já tiver sido aplicado. Você tem que deixar seus ouvidos decidirem aquele, mas espero que a diferença seja tão sutil que você realmente não notará de qualquer maneira.

[1] Eles não incomodar porque o pontilhamento de distorção é projetado para proteger contra é efetivamente eliminado simplesmente por causa da falta de faixa dinâmica na música que estão produzindo. Se a faixa dinâmica da música (o pop moderno tem uma faixa dinâmica de cerca de 6 a 10 dB) é muito pequena em comparação com a faixa dinâmica do meio (os CDs têm uma faixa dinâmica de cerca de 96 dB), você realmente não precisa dither.

[2] a diferença entre os dois é que um pontilhamento "triangular" é o ruído branco. Uma tentativa de pontilhamento "em forma" torna-se menos audível, mudando a frequência do ruído para fora do nosso alcance auditivo. Isso funciona muito bem, mas se você fizer isso repetidamente, pode resultar em algum aumento de alta frequência, especialmente se você estiver usando um pontilhamento de formato realmente agressivo como POW-R.

1. Eu geralmente lido apenas com WAV (PCM) e FLAC (que decodifica para PCM, sim) .2. Vou dar uma olhada no algoritmo padrão do FFmpeg, ou talvez recompilar com SoX habilitado, já que seu algoritmo parece bem considerado. [Página de reamostragem do Hydrogenaudio] (http://wiki.hydrogenaudio.org/index.php?title=Resampling) também parece ter várias referências.3. Parece que me lembro de ter lido que o pontilhamento retangular deve ser usado durante as etapas intermitentes (vs. triangular), mas não consigo realocar essa referência. Mas esse é um ponto discutível para a minha situação. ;)


Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...