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:
- Qual é a maneira mais fácil de decodificar o espectrograma sem dispositivos adicionais e sem software adicional - preferencialmente, diretamente no navegador?
- É 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 " "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.pngAbaixo, 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?