Questão:
Como gravar arquivo wav em profundidades de bits inferiores a 8 bits?
jotadepicas
2016-06-11 07:32:58 UTC
view on stackexchange narkive permalink

Em primeiro lugar, desculpe se este não é o site stackexchange certo para perguntar isso, mas aqui vai.

Para fins de pesquisa e aprendizado, quero gravar arquivos wav em diferentes taxas de amostragem e profundidades de bits e compare as gravações, ouça suas diferenças, etc.

A parte da taxa de amostragem é bastante fácil, muitos programas como o Audacity no Linux oferecem essa possibilidade. Além disso, a profundidade de bits é fácil, mas não consigo encontrar um programa ou comando que me permita gravar em profundidades de bits inferiores a 8 bits.

Estou ciente de que isso provavelmente não é prático e também que 8 -bit é um byte e provavelmente essa é a razão pela qual os programas geralmente não vão abaixo disso, por causa da representação de tipos de dados inteiros. Mas, para fins de aprendizagem e de um ponto de vista teórico, deve ser possível gravar um sinal de áudio em profundidades de bits arbitrariamente baixas, como 2 bits, 4 bits, etc.

Por exemplo, no Audacity Wiki ( http://wiki.audacityteam.org/wiki/Bit_Depth#sources), é mencionado que uma cassete é equivalente a uma profundidade de 6 bits, e que uma gravação doméstica de Edison Cylinder é com uma profundidade de 2 bits na resolução.

Então, minha pergunta é, você conhece algum programa ou comando que me permita gravar em profundidades menores que 8 bits? (De preferência Linux). Se não, você pode explicar por que isso não parece fácil de fazer com os programas linux padrão / mais comuns (Audacity, sox , arecord , etc)?

Obrigado!

EDITAR: Achei este artigo muito interessante sobre o processamento de voz em diferentes taxas de amostragem e profundidades de bits, que é precisamente o campo que também estou investigando: http://iitg.vlab.co.in/?sub=59&brch=164&sim=474&cnt=1

enter image description here

Fonte: (2011). Frequência de amostragem e resolução de bits para processamento de sinais de voz. Retirado em 11 de junho de 2016 de http://iitg.vlab.co.in/?sub=59&brch=164&sim=474&cnt=1

No entanto, não consigo descobrir quais programas ou técnicas são usados ​​para gravar em baixa profundidade de bits, ou se eles gravam em 16 bits e, em seguida, diminuem a profundidade de bits do sinal já gravado (acredito que isso se chama " bit crushing "técnica?).

Ao escrever no último parágrafo, acho que você desejará encontrar maneiras de diminuir a resolução do áudio já gravado, em vez de tentar gravar em profundidades de bits menores. Basta gravar um arquivo em 24 bits e salvar / renderizar várias cópias em resoluções cada vez mais baixas.
@ToddWilcox sim, acho que vou fazer isso! No entanto, ainda estou curioso sobre a gravação de baixa profundidade de bits. Obrigado!
Trzy respostas:
José David
2016-06-12 04:12:49 UTC
view on stackexchange narkive permalink

Profundidades de bits mais baixas não estão facilmente disponíveis simplesmente porque não são procuradas comercialmente, não por causa de alguma dificuldade técnica intrínseca. As interfaces de áudio ou outros dispositivos de captura possuem seus ADCs (conversores Analog do Digital) baseados em chips integrados otimizados para as funcionalidades mais solicitadas comercialmente. Em princípio, não seria difícil no driver do software quantizar as amostras para reduzir as taxas de bits, mas, novamente, por que um fabricante se preocuparia em sobrecarregar seu software com recursos que quase ninguém usaria?

Então, na prática termos A sugestão de Todd Wilcox de "lo-fiing" seu áudio por software é boa e, por falar nisso, há um filtro no Audacity para fazer exatamente isso: Effect / Decimator.

Nota: na verdade o filtro Decimator não faz parte do pacote de instalação do Audacity, mas faz parte do pacote de plug-ins adicionais "patrocinados" da Audicity LADSPA [obrigado a @horta por notar isso e verifique um comentário abaixo dele abordagem alternativa para obter o mesmo resultado usando a linguagem procedural de Nyquist] .

A técnica básica para fazer isso é simplesmente descartar

  • samples (para reduzir a taxa de amostragem) ou
  • bits de ordem inferior das amostras (para reduzir a profundidade de bits em potências de 2),

daí o nome mais técnico "decimador "(Bitcrush er é apenas um outro nome para a mesma coisa). Muitos efeitos de decimador / bitcrusher (incluindo o do Audacity) também permitem a reamostragem e quantização em proporções não inteiras.

Observe que você também criará seus arquivos com maior profundidade de bits, pois os formatos de arquivo (por exemplo, WAV) exigem, mas eles soarão como o áudio de menor profundidade de bits que você criou.

Fora isso, para realmente capturar e / ou reproduzir som em profundidade de bits realmente baixa, acho que você teria que usar uma plataforma de microprocessador, como o Arduino ou o TIva LaunchPad, e fazer sua própria programação. até mesmo crie e programe diretamente suas próprias composições "low-bit".


A propósito, a este respeito pode ser interessante conferir o trabalho do compositor Tristan Perich, que criou e distribuiu música de 1 bit de profundidade através de um dispositivo eletrônico dedicado simples.

ótima resposta e trabalho muito interessante de Tristan Perich, obrigado!
Mais um detalhe, eu disse que seus arquivos "soarão como o áudio de baixa profundidade de bits", bem, ao trabalhar com profundidades de bits baixas (digamos 6 ou 4), a resposta física (ou seja, a latência) do alto-falante de saída, Pode ter muita influência em como o som é reproduzido. Um alto-falante com resposta mais lenta "atenua" os saltos abruptos de um sinal altamente quantizado e pode, na verdade, produzir um som melhor do que um alto-falante muito rápido. Os computadores e consoles de jogos antigos dos anos 80 aproveitaram-se disso para produzir áudio "realista".
Na última versão do Audacity que baixei, ele aparece aqui: Effects-> Nyquist Prompt-> marque a caixa "use legacy (version 3) syntax" -> type "(quantize s 8)". Isso resultaria em 8 níveis acima / incluindo 0 e 8 níveis abaixo / incluindo 0. Isso funciona para cerca de 16 níveis no total (na verdade, 15), mas é aproximadamente = 2 ** 4 ou 4 bits de profundidade de áudio.
@horta, Achei estranho que o Decimator tivesse ido embora, então verifiquei. Acontece que não é um plugin nativo do Audacity, mas faz parte do pacote "patrocinado" do Audicity de plugins adicionais que podem ser encontrados aqui https://www.fosshub.com/Audacity.html/LADSPA_plugins-win-0.4.15. Exe . Então, duplamente obrigado por trazer isso à tona (notando a falta do Decimator e fornecendo o código de Nyquist para quantização inferior).
Np, sua resposta me apontou na direção certa.
H. C. Barton
2018-05-25 21:56:29 UTC
view on stackexchange narkive permalink

Aqui está uma solução que escrevi em Liberty BASIC. Ele pega um arquivo WAV de 8 bits e o converte para qualquer profundidade de bits inferior. Observe que é apenas para pesquisa de qualidade de som; os valores de profundidade de bits inferiores são salvos no arquivo no formato de 8 bits (nenhuma compactação real ocorre).

  bits = 6bits2cut = 8 - bitsopen "C: \ input_8bit_file.wav" para introduza como #fileopen "C: \ 6bitwav.wav" para binário como #outfileprint #outfile, input $ (# file, 44) 'Copie o cabeçalho WAV eof (#file) = 0 byte = asc (input $ (# file, 1)) print #outfile, chr $ (int (byte / (2 ^ bits2cut)) * (2 ^ bits2cut)) if bytes mod 1000 = 0 then scan 'Não congela ao converter arquivos grandeswendclose #fileclose #outfileprint "Feito "fim  
squarewav
2018-05-26 05:24:00 UTC
view on stackexchange narkive permalink

Basta atenuar, salvar o arquivo para wav e importá-lo novamente e amplificar. Cada 6dB de atenuação é 1 bit a menos. Portanto, se você tiver um arquivo de 8 bits e quiser 4 bits, atenuados em 24dB, salve o arquivo, abra-o novamente e amplifique-o em 24dB. Apesar. E, na prática, você pode querer cortar a fonte primeiro, porque em bits mais baixos a faixa dinâmica será realmente horrível.



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...