Definisi angka menurut telinga

Pada artikel ini saya akan berbicara tentang program pemrosesan sederhana yang "mendengarkan" mikrofon dan menentukan nomor yang diputar pada ponsel dalam mode nada.

Kata Pengantar


Universitas tetap ada di masa lalu sekitar sepuluh tahun yang lalu, tetapi selama ini saya tidak meninggalkan perasaan nostalgia dan merindukan ilmu pengetahuan. Ada perasaan bahwa saya tidak menyelesaikan sesuatu, atau kami menjalankan sesuatu terlalu cepat. Untungnya, platform modern membuat Anda merasa seperti mahasiswa seumur hidup.

Laboratorium No. 3 dari kursus "Dasar-Dasar Pemrosesan Sinyal Digital" LETI pada platform opensu mendorong saya untuk menulis artikel ini.

Prinsip kerja


Jika Anda menekan tombol telepon (atau di sini ), Anda dapat mendengar bahwa setiap karakter memiliki frekuensi sendiri, atau bahkan dua, dan kombinasi ini secara unik mengkodekan karakter.
Tugas kami adalah mengekstrak dua frekuensi terkuat dari sinyal berisik dan memeriksa apakah mereka menyandikan beberapa karakter sesuai dengan tabel:
1209 Hz1336 Hz1477 Hz1633 Hz
697 Hz123A
770 Hz456B
852 Hz789C
941 Hz*0#D

Saya menggunakan pemrosesan, seperti ia memiliki semua primitif untuk bekerja dengan mikrofon dan transformasi Fourier.

Algoritma adalah sebagai berikut:

  • bayangkan sinyal sebagai spektrum, fft.analyze akan mengembalikan array float [] kepada kami
  • temukan nomor referensi n 1 yang sesuai dengan amplitudo maksimum
  • Zerul dia dan semuanya di lingkungan tertentu (dipilih dengan bijak), agar tidak menangkap 2 frekuensi dekat
  • kami menemukan nomor referensi 2 n 2 sesuai dengan maksimum amplitudo yang tersisa
  • dengan angka n 1 dan n 2 kami menemukan frekuensi yang sesuai sesuai dengan rumus:

    fn=fdn/N

    di mana f n - frekuensi sampling: 44100 Hz, N - jumlah sampel (kekuatan dua)
  • kami menentukan frekuensi mana dari tabel yang sesuai dengan yang ditemukan (dengan toleransi ± 35 Hz) dan menemukan simbol yang diinginkan

Apa yang terjadi


Anda dapat membangun dan menjalankan program dalam bentuk stoples mandiri dari sumbernya , Anda dapat menggunakan telepon atau halaman ini untuk menghasilkan suara.



Langkah selanjutnya saya ingin menerapkan hal yang sama pada Arduino.

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


All Articles