Lima tahun yang lalu, sebuah artikel
"Mencetak dan mereproduksi suara di atas kertas" diterbitkan di Habré - tentang sistem untuk membuat dan memainkan
spektogram . Kemudian, satu setengah tahun yang lalu,
Meklon menerbitkan sebuah
pencarian di mana spektogram logaritmik hitam putih menjadi salah satu tahapan. Menurut niat penulis, perlu untuk mencetaknya pada printer, memindai dengan smartphone dengan aplikasi pemain, dan menggunakan kata sandi "didiktekan" dengan cara ini.

Pada saat itu, saya tidak memiliki jangkauan untuk printer atau smartphone, jadi saya tertarik pada dua aspek tugas:
- Apa cara termudah untuk memecahkan kode spektrogram tanpa perangkat tambahan dan tanpa perangkat lunak tambahan - lebih disukai, tepat di browser?
- Apakah mungkin untuk mendekripsi tanpa perangkat lunak sama sekali - “dengan mata”?
(Bagi mereka yang melihat spektogram untuk pertama kalinya, ada baiknya untuk menjelaskan bahwa ini adalah grafik di mana waktu reproduksi berada pada sumbu horizontal, frekuensi suara pada sumbu vertikal (itu adalah logaritmik), dan tingkat kegelapan titik menunjukkan kekuatan frekuensi ini pada waktu tertentu.)
Saya tidak menemukan skrip yang siap pakai untuk mereproduksi spektrogram, meskipun contohnya
mudah ditemukan untuk konversi terbalik - sound to spectrogram - karena fakta bahwa fungsi
AnalyserNode.getByteFrequencyData()
dibangun ke dalam API Audio Web. Tetapi untuk mengonversi larik frekuensi ke larik
PCM untuk diputar, Anda tidak dapat melakukannya tanpa menerapkan invers
Fourier transform (DFT) dalam skrip.
* Pada contoh pertama, sebagai rekaman audio untuk analisis spektral, sebuah fragmen trek " "dari Aphex Twin: sebagai pesan rahasia, musisi menyematkan selfie pada trek ini, yang muncul pada spektogram logaritmik. Sayangnya, dalam contoh ini spektogram ditampilkan secara linear, sehingga wajah direntangkan di bagian atas dan dikompresi di bagian bawah.
Mengenai penerapan DFT, segera jelas bahwa "penjebak" dalam JavaScript murni akan bekerja perlahan dan sedih; untungnya, saya menemukan
port siap pakai dari perpustakaan FFTW ("Transformasi Fourier Tercepat di Barat") di asm.js adalah bentuk representasi dari kode level rendah, biasanya ditulis dalam C, yang dijanjikan oleh browser modern untuk dijalankan pada kecepatan yang hampir seperti dikompilasi menjadi kode mesin. Ikatan untuk FFTW, yang mengubah gambar hitam dan putih menjadi file WAV, saya ambil dari
ARSS dan secara pribadi menulis ulang dalam JavaScript. ARSS menerima gambar terbalik dibandingkan dengan PhonoPaper, dan saya tidak mengubahnya.
Hasilnya bisa Anda kagumi di
tyomitch.imtqy.com/#meklon.pngDi bagian bawah, garis-garis horizontal berulang terlihat-
forman , dengan posisi yang diakui vokal. Di atas ada "semburan" vertikal yang sesuai dengan
konsonan bising : lebih luas - slotted (frikatif), lebih sempit - vokal.
Sedangkan untuk konsonan
nyaring ([r] dan [l]), "awan" di frekuensi tengah sesuai.

Untuk bermain dengan spektrogram, saya melampirkan gambar primitif, hampir seluruhnya disalin dari
tutorial menggambar kanvas. Tombol "Copy" memungkinkan Anda untuk mentransfer gambar ke saluran merah (itu diabaikan oleh synthesizer) dan mencoba untuk "lingkaran" suara.
Wikipedia menulis:
"Dipercayai bahwa alokasi empat lelaki cukup untuk mencirikan suara-suara ucapan .
" Kami melingkari forman F
2 -F
4 (untuk beberapa alasan F
1 diabaikan oleh synthesizer), dan
pastikan bahwa vokal diakui sepenuhnya:

Kemudian kita melingkari konsonan-konsonan yang berisik: huruf [h] adalah [t], dengan lancar berubah menjadi [w]; dan disuarakan [d] dari tuli [t] dibedakan oleh kehadiran forman frekuensi menengah. Sekarang
Anda dapat membedakan antara angka "enam" dan "de'it":

Kami menambahkan konsonan nyaring abu-abu tua: pada saat yang sama, kami mencatat bahwa [p] sedikit "meningkatkan" forman vokal, dan [l] - sebaliknya, menghilangkannya.

Hanya konsonan labial [b] dan [c] tetap disalahpahami, tetapi bahkan tanpa mereka kata sandinya
lebih atau kurang jelas .
Apakah mungkin untuk menggambar suara dari awal tanpa melacak spektogram dari rekaman audio? Terus terang, saya tidak berhasil. Mungkin Anda ingin mencobanya sendiri?