Desenhe um som

Há cinco anos, um artigo "Imprimindo e reproduzindo som no papel" foi publicado no Habré - sobre o sistema de criação e reprodução de espectrogramas . Então, há um ano e meio, Meklon publicou uma busca na qual um espectrograma logarítmico em preto e branco se tornava um dos estágios. De acordo com a intenção do autor, era necessário imprimi-lo em uma impressora, digitalizá-lo com um smartphone com um aplicativo player e usar a senha "ditada" dessa maneira.


Naquele momento, eu não tinha acesso a uma impressora ou smartphone, por isso estava interessado em dois aspectos da tarefa:

  1. Qual é a maneira mais fácil de decodificar o espectrograma sem dispositivos adicionais e sem software adicional - preferencialmente, diretamente no navegador?
  2. É possível decifrá-lo sem nenhum software - "a olho"?

(Para aqueles que vêem espectrogramas pela primeira vez, vale a pena esclarecer que este é um gráfico em que o tempo de reprodução segue o eixo horizontal, a frequência do som no eixo vertical (é logarítmica) e o grau de escuridão do ponto indica a potência dessa frequência em um determinado momento.)

Não encontrei nenhum script pronto para reproduzir espectrogramas, embora seja fácil encontrar exemplos para a conversão inversa - som em espectrograma - devido ao fato de que a funcionalidade do AnalyserNode.getByteFrequencyData() está incorporada à API de áudio da Web. Mas para converter uma matriz de frequência em uma matriz PCM para reprodução, não é possível implementar uma transformação de Fourier inversa (DFT) em um script.
* No primeiro exemplo, como uma gravação de áudio para análise espectral, um fragmento da faixa "  DeltaMi1= alpha sumn=1NDi[n] esquerda[ sumj emC[i]Fji[n1]+F exti[n1] right]"do Aphex Twin: como uma mensagem secreta, o músico incorporou uma selfie nessa faixa, que aparece em um espectrograma logarítmico. Infelizmente, neste exemplo, o espectrograma é exibido linearmente, de modo que o rosto é esticado na parte superior e compactado na parte inferior.
No que diz respeito à implementação do DFT, é imediatamente claro que esse “esmagador” em JavaScript puro funcionará lenta e tristemente; felizmente, descobri a porta pronta da biblioteca FFTW (“Fastest Fourier Transform no West”) no asm.js é uma forma de representação de código de baixo nível, geralmente escrito em C, que os navegadores modernos prometem executar a uma velocidade quase como compilada em código de máquina. A encadernação do FFTW, que transforma uma imagem em preto e branco em um arquivo WAV, peguei no ARSS e o reescrevi pessoalmente em JavaScript. O ARSS aceita imagens invertidas em comparação com o PhonoPaper, e eu não as alterei.

O resultado que você pode admirar em tyomitch.imtqy.com/#meklon.png

Abaixo, você pode ver repetições de faixas horizontais - formantes , pela posição em que as vogais são reconhecidas. No topo - “rajadas” verticais correspondentes a consoantes ruidosas : mais largo - com fenda (fricativa), mais estreito - vocal. Quanto às consoantes sonoras ([r] e [l]), as “nuvens” nas frequências médias correspondem.



Para brincar com o espectrograma, anexei um desenho primitivo, quase inteiramente copiado do tutorial de desenho em tela. O botão “Copiar” permite transferir a imagem para o canal vermelho (é ignorado pelo sintetizador) e tentar “circular” os sons.

A Wikipedia escreve: "Acredita-se que a alocação de quatro formantes é suficiente para caracterizar os sons da fala" . Circulamos os formantes F 2 -F 4 (por algum motivo F 1 é ignorado pelo sintetizador) e garantimos que as vogais sejam totalmente reconhecidas:



Então circulamos as consoantes barulhentas: o affricate [h] é [t], transformando-se suavemente em [w]; e dublado [d] de surdo [t] se distingue pela presença de formantes de média frequência. Agora você pode distinguir entre os números "seis" e "de'it":



Adicionamos consoantes sonoras cinzas escuras: ao mesmo tempo, notamos que [p] “eleva” levemente a forca da vogal e [l] - pelo contrário, a omite.



Somente as consoantes labiais [b] e [c] permaneceram incompreendidas, mas mesmo sem elas a senha é mais ou menos clara .

É possível desenhar o som do zero sem traçar o espectrograma da gravação de áudio? Francamente, não tive sucesso. Talvez você queira tentar você mesmo?

Source: https://habr.com/ru/post/pt469775/


All Articles