Dessinez un son

Il y a cinq ans, un article "Impression et reproduction du son sur papier" a été publié sur Habré - sur le système de création et de lecture des spectrogrammes . Il y a un an et demi, Meklon a publié une quête dans laquelle un tel spectrogramme logarithmique noir et blanc est devenu l'une des étapes. Selon l'intention de l'auteur, il était nécessaire de l'imprimer sur une imprimante, de la numériser avec un smartphone avec une application de lecture et d'utiliser le mot de passe «dicté» de cette manière.


À ce moment-là, je n'avais aucune portée pour une imprimante ou un smartphone, donc j'étais intéressé par deux aspects de la tâche:

  1. Quelle est la façon la plus simple de décoder le spectrogramme sans appareils supplémentaires et sans logiciel supplémentaire - de préférence directement dans le navigateur?
  2. Est-il possible de le décrypter sans aucun logiciel - «à l'œil»?

(Pour ceux qui voient des spectrogrammes pour la première fois, il vaut la peine de préciser qu'il s'agit d'un graphique où le temps de reproduction est sur l'axe horizontal, la fréquence du son sur l'axe vertical (il est logarithmique) et le degré de noirceur du point indique la puissance de cette fréquence à un moment donné.)

Je n'ai trouvé aucun script prêt à l'emploi pour la reproduction de spectrogrammes, bien que des exemples soient faciles à trouver pour la conversion inverse - son en spectrogramme * , car la fonctionnalité d' AnalyserNode.getByteFrequencyData() est intégrée à l'API Web Audio. Mais pour convertir un tableau de fréquences en tableau PCM pour la lecture, vous ne pouvez pas vous passer de l'implémentation d'une transformée de Fourier inverse (DFT) dans un script.
* Dans le premier exemple, comme un enregistrement audio pour l'analyse spectrale, un fragment de la piste "  DeltaMi1= alpha sumn=1NDi[n] left[ sumj inC[i]Fji[n1]+F exti[n1] droite]"d'Aphex Twin: en tant que message secret, le musicien a intégré un selfie sur cette piste, qui apparaît sur un spectrogramme logarithmique. Malheureusement, dans cet exemple, le spectrogramme est affiché de manière linéaire, de sorte que le visage est étiré en haut et compressé en bas.
En ce qui concerne la mise en œuvre de la DFT, il est immédiatement clair qu'un tel «crasher» en JavaScript pur fonctionnera lentement et malheureusement; heureusement, j'ai découvert le port prêt à l' emploi de la bibliothèque FFTW («Fastest Fourier Transform in the West») sur asm.js est une forme de représentation de code de bas niveau, généralement écrit en C, que les navigateurs modernes promettent d'exécuter à une vitesse presque comparable à celle du code machine. La reliure pour FFTW, qui transforme une image en noir et blanc en un fichier WAV, j'ai pris de ARSS et personnellement réécrit en JavaScript. ARSS accepte les images inversées par rapport à PhonoPaper, et je ne les ai pas modifiées.

Le résultat que vous pouvez admirer sur tyomitch.imtqy.com/#meklon.png

En bas, des rayures horizontales répétitives sont visibles - des formants , par la position dont les voyelles sont reconnues. En haut - des «rafales» verticales correspondant à des consonnes bruyantes : plus larges - fendues (fricatives), plus étroites - vocales. Quant aux consonnes sonores ([r] et [l]), les «nuages» aux fréquences moyennes correspondent.



Afin de jouer avec le spectrogramme, j'ai joint un dessin primitif, presque entièrement copié du tutoriel de dessin sur toile. Le bouton «Copier» vous permet de transférer l'image sur le canal rouge (il est ignoré par le synthétiseur) et d'essayer de «cercler» les sons.

Wikipedia écrit: "On pense que l'allocation de quatre formants est suffisante pour caractériser les sons de la parole . " Nous encerclons les formants F 2 -F 4 (pour une raison quelconque F 1 est ignoré par le synthétiseur), et nous assurons que les voyelles sont pleinement reconnues:



Ensuite, nous encerclons les consonnes bruyantes: l' affricat [h] est [t], se transformant doucement en [w]; et exprimé [d] de sourd [t] se distingue par la présence de formants de moyenne fréquence. Vous pouvez maintenant distinguer les nombres "six" et "de'it":



Ajoutez des consonnes de sonor gris foncé: en même temps, notez que [p] «soulève» légèrement les formants de voyelle, et [l] - au contraire, omet.



Seules les consonnes labiales [b] et [c] sont restées incomprises, mais même sans elles le mot de passe est plus ou moins clair .

Est-il possible de dessiner du son à partir de zéro sans tracer le spectrogramme de l'enregistrement audio? Franchement, je n'ai pas réussi. Vous voulez peut-être l'essayer vous-même?

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


All Articles