Membangun Robot Dikontrol Ucapan dengan Windows 10 IoT Core pada Raspberry Pi 2
Cerita
Komputasi awal mengandalkan kartu berlubang, trackball, dan keyboard—yang masing-masing memerlukan kontak fisik langsung. Seiring berkembangnya teknologi, antarmuka nirkabel dan sentuh menyederhanakan interaksi pengguna. Kini, input visual dan suara menawarkan cara yang bahkan lebih intuitif untuk mengontrol perangkat.
Panduan ini menunjukkan cara memanfaatkan Speech Recognition bawaan Windows 10 IoT Core untuk memerintah robot yang dibangun pada Raspberry Pi 2. Pada akhirnya, Anda akan memiliki robot yang bergerak, berputar, dan mengelola deteksi hambatan melalui perintah lisan.
Baru dengan Windows 10 IoT Core? Mulai dengan tinjauan singkat ini.
Diperbarui 30 Maret 2016
Apa itu Speech Recognition?
Speech Recognition menterjemahkan kata-kata yang diucapkan menjadi teks. Biasanya melibatkan dua komponen inti: pemrosesan sinyal dan dekoder ucapan. Speech SDK Microsoft mengabstraksi kompleksitas ini, memungkinkan pengembang fokus pada logika aplikasi.
Langkah 1
Memulai dengan Speech Recognition
Alur kerja dasar adalah:
Buat Speech Recognition Grammar (SRGS)
Buat instance SpeechRecognizer dan muat grammar
Langgan peristiwa pengenalan dan terapkan handler
Buat Speech Recognition Grammar
Menentukan grammar khusus memungkinkan aplikasi memahami perintah spesifik yang Anda inginkan robot terima. Untuk proyek ini, kosakata meliputi:
Move Forward
Move Reverse
Turn Right
Turn Left
Stop
Engage Obstacle Detection
Disengage Obstacle Detection
Grammar diekspresikan dalam XML SRGS. Aturan struktural utama:
Elemen root harus <grammar>.
Harus menyertakan version, xml:lang, dan namespace SRGS.
Setidaknya satu elemen <rule> diperlukan.
Setiap aturan harus memiliki atribut id yang unik.
Untuk panduan SRGS terperinci, konsultasikan dokumentasi MSDN dan W3C.
Inisialisasi Speech Recognizer dan Muat Grammar
SpeechRecognizer berada di namespace Windows.Media.SpeechRecognition. Impor, lalu muat file XML SRGS Anda. Jika kompilasi gagal, verifikasi bahwa mikrofon terhubung dan dikenali oleh IoT Core.
Daftarkan Peristiwa Speech Recognizer dan Buat Handler
Setelah recognizer berjalan, ia mengeluarkan ResultGenerated saat berhasil mengurai ucapan. Gunakan peristiwa ini untuk mengekstrak args.Result.Text dan memetakannya ke tindakan robot. Peristiwa StateChanged memberitahu Anda saat recognizer mulai atau berhenti mendengarkan.
Visual Studio dapat secara otomatis menghasilkan metode handler menggunakan tombol Tab. Atau, daftarkan handler segera setelah membuat instance SpeechRecognizer.
Langkah 2
Cara Mengemudi berdasarkan Ucapan yang Dirakit
Di handler ResultGenerated, periksa args.Result.Text dan lakukan logika kondisional untuk mengontrol motor robot. Kelas MotorDriver (yang disertakan dalam contoh) mengabstraksi manipulasi GPIO. Kode lengkap disediakan di akhir artikel.
Langkah 3
Perbarui Kemampuan Perangkat
Sebelum men-deploy ke Raspberry Pi 2, tambahkan kemampuan microphone ke paket manifest aplikasi Anda. Ini memberikan izin aplikasi untuk mengakses input audio.
Setelah perangkat lunak siap, kabelkan hardware seperti yang dijelaskan di bawah ini.
Langkah 4
Deploy & Daftarkan Aplikasi sebagai Aplikasi Startup
Untuk memastikan robot mendengarkan perintah segera setelah boot, daftarkan aplikasi Anda sebagai aplikasi startup. Deploy terlebih dahulu, lalu gunakan PowerShell atau Portal Web-Manajemen IoT Core.
Ini adalah ide yang baik untuk mengubah nama paket sebelum deployment untuk menghindari konflik.
Setelah deployment, daftarkan aplikasi sebagai layanan startup menggunakan Portal Web-Manajemen.
Setelah pendaftaran berhasil, reboot Raspberry Pi 2 dan konfirmasi bahwa aplikasi mulai otomatis.
Skema
Hardware robot terdiri dari chassis dengan motor DC, Raspberry Pi 2 yang menjalankan Windows 10 IoT Core, baterai motor 9-12 V, sensor jarak, dan suplai daya. Baterai motor menyuplai daya ke driver H-Bridge, sementara Raspberry Pi 2 memerlukan sumber 5 V khusus—baik USB PowerBank atau regulator 7805.
Mengapa Resistor dengan Sensor Jarak Ultrasonik?
Sensor ultrasonik mengeluarkan 5 V pada pin Echo-nya, yang melebihi level logika 3,3 V Raspberry Pi 2. Pembagi tegangan (R1 = 1 kΩ, R2 = 2 kΩ) mengurangi tegangan menjadi 3,3 V:
Vout = 5 × (2 kΩ / (1 kΩ + 2 kΩ)) = 3,3 V
PERINGATAN: Menghubungkan pin Echo langsung ke pin GPIO Pi akan merusak papan. Selalu gunakan level shifter atau pembagi.
Pemasangan Akhir
Masalah yang Diketahui
Speech Recognition Tidak Berfungsi (Build 10586)
Pengenalan ucapan gagal pada perangkat IoT yang menjalankan Windows IoT Core build 10586.
Solusi: Kembali ke build 10240 sampai Microsoft merilis pembaruan yang menyelesaikan masalah ini.
Masalah Mikrofon
Akurasi pengenalan menurun dengan mikrofon berkualitas rendah, terutama pada jarak di atas 1–2 m.
Solusi: Gunakan mikrofon berkualitas tinggi atau nirkabel. Jika diperlukan, kuatkan sinyal atau pertimbangkan headset noise-cancelling.
Keterlambatan Pemrosesan Recognizer
Pengenalan ucapan memperkenalkan latensi 600–2000 ms. Untuk robot yang bergerak cepat, keterlambatan ini dapat menyebabkan ketidaksejajaran antara perintah dan tindakan.
Solusi: Versi SDK saat ini tidak mengurangi keterlambatan ini. Rilis mendatang mungkin menawarkan optimisasi.
Perbedaan Pengucapan
Aksen dan pengucapan regional dapat mempengaruhi pengenalan. Tentukan bahasa dan wilayah di file SRGS (misalnya, xml:lang="en-GB" untuk Inggris Britania).
Kebisingan Lingkungan
Bisu latar belakang dapat mengurangi akurasi. Meskipun sulit untuk dihilangkan, menggunakan mikrofon noise-cancelling dapat mengatasi masalah ini.
Mikrofon USB / Sound Card USB Tidak Dikenali
Mulai dari build 10531, Windows IoT Core mendukung perangkat audio USB generik. Jika perangkat Anda menggunakan driver proprietary, mungkin tidak berfungsi.
Coba mikrofon atau sound card USB lain yang menggunakan driver generik.
Peningkatan Masa Depan
Perluas robot dengan umpan balik visual—misalnya, lampu LED hijau menyala untuk perintah yang berhasil dan lampu LED merah menunjukkan kesalahan. Anda juga dapat menambahkan status “mendengarkan” dan “tidur” untuk menghindari aktivasi tidak sengaja.
Apakah Anda Perhatikan?
Judul animasi menampilkan fitur yang tidak tercakup dalam teks ini. Jelajahi animasi dengan hati-hati dan coba terapkan kemampuan tersembunyi.