Klasifikasi Suara dengan TensorFlow

Klasifikasi Suara dengan TensorFlow by unsplash
Klasifikasi Suara dengan TensorFlow by unsplash

 

Anda dapat membuat solusi cerdas yang mencakup area yang sangat luas dengan solusi ini dan platform IoT.

Ada banyak alat yang dapat mendeteksi, menguraikan, dan menindaklanjuti ucapan manusia. Namun, saat kami mencoba menemukan alat yang dapat mengidentifikasi suara seperti ucapan, hewan, atau musik, kami kesulitan menemukan alat yang berfungsi. Jadi kami menciptakan milik kami sendiri. Kami akan menunjukkan cara menggunakan algoritme pembelajaran mesin Tensorflow untuk membangun beberapa contoh proyek klasifikasi suara di artikel ini.

Kami berbicara tentang alat yang kami gunakan, kesulitan yang kami temui, cara kami melatih model TensorFlow, dan cara menjalankan proyek sumber terbuka kami di artikel ini. Selain itu, kami telah memberikan hasil pengenalan ke platform IoT DeviceHive untuk digunakan dalam layanan cloud untuk aplikasi pihak ketiga. Kami harap Anda dapat memperoleh manfaat dari keahlian kami dan memanfaatkan alat kami.

 

Memilih Alat dan Model Klasifikasi

Untuk mulai bekerja dengan jaringan saraf, kita harus memilih perangkat lunak. Analisis Audio Python adalah solusi pertama yang cocok yang kami temukan.

Dataset pelatihan yang baik adalah masalah utama dalam pembelajaran mesin. Ada banyak kumpulan data untuk klasifikasi musik dan pengenalan suara, tetapi hanya sedikit untuk klasifikasi suara acak. Kami menemukan kumpulan data suara perkotaan setelah melakukan beberapa penelitian.

Setelah beberapa pengujian, kami mengalami masalah berikut:

  • pyAudioAnalysis tidak cukup mudah beradaptasi. Tidak memerlukan banyak parameter, dan beberapa di antaranya dihitung secara otomatis. misalnya jumlah tes persiapan berdasarkan jumlah tes dan Anda tidak dapat mengubah ini.
  • Hanya ada sepuluh kelas dalam kumpulan data, dan semuanya “perkotaan”.

Google AudioSet muncul sebagai opsi kami berikutnya. Itu dapat diunduh dalam dua format dan didasarkan pada segmen berlabel video YouTube:

  • Catatan CSV yang menggambarkan, untuk setiap fragmen, ID video YouTube, waktu mulai, waktu selesai, dan setidaknya satu nama.
  • File Rekam TensorFlow digunakan untuk menyimpan fitur audio yang diekstrak.

Model YouTube-8M kompatibel dengan fitur ini. Model TensorFlow VGGish juga tersedia sebagai ekstraktor fitur dalam solusi ini. Hasilnya, ini memenuhi sebagian besar kebutuhan kami dan merupakan pilihan terbaik bagi kami.

 

Model Pelatihan

Memahami cara kerja antarmuka YouTube-8M adalah tugas selanjutnya. Itu dibuat untuk bekerja dengan video, tapi untungnya juga bisa bekerja dengan audio. Meskipun pustaka ini cukup dapat diadaptasi, jumlah kelas sampel telah ditentukan sebelumnya. Akibatnya, kami sedikit mengubah ini untuk menerima jumlah kelas sebagai parameter.

YouTube-8M dapat bekerja dengan dua jenis data: fitur bingkai dan fitur gabungan. Seperti disebutkan sebelumnya, Google AudioSet dapat menyediakan data sebagai fitur. Kami menyelidiki lebih lanjut dan menemukan bahwa fitur disajikan dalam format bingkai. Langkah selanjutnya adalah memilih model yang akan dilatih.

 

Sumber Daya, Waktu, dan Akurasi

Memahami cara kerja antarmuka YouTube-8M adalah tugas selanjutnya. Itu dibuat untuk bekerja dengan video, tapi untungnya juga bisa bekerja dengan audio. Meskipun pustaka ini cukup dapat diadaptasi, jumlah kelas sampel telah ditentukan sebelumnya. Akibatnya, kami sedikit mengubah ini untuk menerima jumlah kelas sebagai parameter.

YouTube-8M dapat bekerja dengan dua jenis data: fitur bingkai dan fitur gabungan. Seperti disebutkan sebelumnya, Google AudioSet dapat menyediakan data sebagai fitur. Kami menyelidiki lebih lanjut dan menemukan bahwa fitur disajikan dalam format bingkai. Langkah selanjutnya adalah memilih model yang akan dilatih.

 

Memilih Modelnya

Berikut adalah daftar lengkap model YouTube-8M dengan deskripsi. Model tingkat bingkai harus digunakan karena data pelatihan kami dalam format bingkai. Kami menerima kumpulan data tiga bagian dari Google AudioSet: evaluasi, kereta tidak seimbang, dan kereta seimbang. Informasi lebih lanjut tentang mereka dapat ditemukan di sini.

Versi YouTube-8M yang diubah digunakan untuk persiapan dan penilaian. Anda bisa mendapatkannya di sini.

 

Kereta Seimbang

Beginilah tampilan perintah pelatihan:

python train.py –train_data_pattern=/path_to_data/audioset_v1_embeddings/bal_train/*.tfrecord –num_epochs=100 –learning_rate_decay_examples=400000 –feature_names=audio_embedding –feature_sizes=128 –frame_features –batch_size=512 –num_classes=527 –train_dir=/path_to_logs –model=ModelName

Simak hasil pelatihannya:

/2017/11/image4.png
kereta seimbang by iotforall
kereta seimbang by iotforall
Model name Training time Training last step hit Evaluation average hit
Logistic 14m 3s 0.5859 0.5560
Dbof 31m 46s 1.000 0.5220
Lstm 1h 45m 53s 0.9883 0.4581

Seperti yang bisa dilihat, kami tampil baik selama fase pelatihan; namun, ini tidak menjamin bahwa kami akan bekerja dengan baik selama keseluruhan evaluasi.

 

Kereta Api Tidak Seimbang

Mari kita coba kumpulan data dengan kereta yang tidak seimbang. Karena memiliki sampel yang jauh lebih banyak, kami akan meningkatkan jumlah waktu pelatihan menjadi 10 (setidaknya menjadi 5 karena pelatihan membutuhkan waktu yang signifikan).

/2017/11/image2.png
Kereta Api Tidak Seimbang by iotforall
Kereta Api Tidak Seimbang by iotforall
Model name Training time Training last step hit Evaluation average hit
Logistic 2h 4m 14s 0.8750 0.5125
Dbof 4h 39m 29s 0.8848 0.5605
Lstm 9h 42m 52s 0.8691 0.5396

 

Lebih Lanjut Tentang Pelatihan

YouTube-8M mengambil banyak batasan dan banyak di antaranya memengaruhi siklus persiapan.

Misalnya, Anda dapat menyetel kecepatan pembelajaran dan jumlah usia yang akan banyak mengubah interaksi persiapan. Ada juga tiga kemampuan berbeda untuk memperkirakan kerugian dan banyak faktor bermanfaat lainnya yang dapat Anda atur dan ubah untuk mengerjakan hasilnya.

 

Menggunakan Model Terlatih dengan Perangkat Penangkap Audio

Saatnya menambahkan beberapa kode untuk berinteraksi dengan model yang dilatih sekarang setelah kita memilikinya.

 

Tangkap Mikrofon

Kami perlu mendapatkan data audio dari mikrofon dengan cara tertentu. PyAudio akan digunakan. Ini dapat digunakan di sebagian besar platform dan memiliki antarmuka pengguna yang mudah.

 

Persiapan Suara

Seperti yang dinyatakan sebelumnya, model VGGish TensorFlow akan berfungsi sebagai ekstraktor fitur. Penjelasan singkat mengenai proses transformasi tersebut adalah sebagai berikut:

Ilustrasi “kulit anjing” dataset UrbanSound digunakan untuk visualisasi.

Sampel ulang audio ke mono pada 16 kHz.

Persiapan Suara by iotforall
Persiapan Suara by iotforall

Hitung spektogram menggunakan magnitudo Transformasi Fourier Waktu Pendek dengan ukuran jendela 25 ms, lompatan jendela 10 ms, dan jendela Hann periodik.

 

Mengklasifikasikan

Terakhir, diperlukan sarana untuk berkomunikasi dengan jaringan saraf dan mendapatkan hasilnya.

Sebagai ilustrasi, kami akan memodifikasi antarmuka YouTube-8M untuk menghilangkan langkah serialisasi dan deserialisasi.

Hasil dari usaha kami dapat dilihat disini. Mari kita periksa lebih dekat.

 

Instalasi

PyAudio memerlukan instalasi libportaudio2 dan portaudio19-dev agar berfungsi.

Pustaka Python diperlukan. Menggunakan pip, Anda dapat menginstalnya.

instal pip -r requirements.txt

 

Menjalankan

1. Memproses File Audio Prarekam

Jalankan python parse_file.py path_to_your_file.wav, dan Anda akan melihat sesuatu seperti Pidato di terminal: 0,75, Musik: 0,12, Ruangan besar atau lorong di dalam: 0,03 Hasilnya ditentukan oleh file input. Prediksi yang dibuat oleh jaringan saraf diwakili oleh nilai-nilai ini. Nilai yang lebih tinggi menunjukkan kemungkinan yang lebih besar bahwa file input termasuk dalam kelas tersebut.

2. Menganalisis dan Memproses Data Mic

Proses yang akan menangkap data dari mikrofon Anda tanpa batas dimulai oleh python capture.py. Ini akan secara otomatis mengirim data ke antarmuka klasifikasi setiap 5-7 detik. Hasilnya terlihat jelas pada ilustrasi sebelumnya.

Jika Anda menjalankannya dengan –save_path=/path_to_samples_dir/, semua data yang diambil akan disimpan sebagai file wav di direktori yang disediakan. Jika Anda ingin menguji model yang berbeda menggunakan contoh yang sama, fungsi ini sangat membantu. Untuk informasi tambahan, gunakan parameter –help.

3. Antarmuka Web

Antarmuka web langsung dibangun ke dalam python daemon.py dan dapat diakses secara default di http://127.0.0.1:8000. Kode yang sama digunakan seperti pada contoh sebelumnya.

 

Integrasi Layanan IoT

Integrasi dengan infrastruktur IoT adalah yang terakhir, namun tidak kalah pentingnya. Status dan konfigurasi klien DeviceHive dapat ditemukan di halaman indeks jika Anda menggunakan antarmuka web yang disebutkan di bagian sebelumnya. Prediksi akan dikirim sebagai notifikasi ke perangkat yang ditentukan selama klien terhubung.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

×

Talk with our support

× Hi. there