Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Windows 10 IoT Core :Robot Terkendali Ucapan

Cerita

Pada masa-masa awal komputer, interaksi dengan komputer dilakukan melalui kartu punch, trackball, light-gun, keyboard, dan bahkan melalui layar sentuh. Semua perangkat ini memerlukan semacam kontak fisik untuk mengoperasikannya.

Dengan dekade demi dekade, teknologi baru meningkat dari yang lama. Perangkat input nirkabel menjadi populer karena menyediakan meja yang bersih dan tidak berantakan. Dengan peningkatan perangkat lunak dan perangkat keras saat ini, jenis input baru yang mungkin adalah:Input Visual dan Ucapan.

Artikel ini akan membantu Anda mempelajari teknologi Pengenalan Ucapan yang disediakan di Windows 10 IoT Core. Di akhir topik, kita akan membuat robot menggunakan Windows 10 IoT Core dan Raspberry Pi 2 yang menjalankan aplikasi Speech Recognition. Aplikasi Speech Recognition ini memungkinkan robot untuk melakukan berbagai tugas gerakan (misalnya:bergerak maju, berputar, berhenti, dll.) berdasarkan interaksi pengguna melalui ucapan.

Baru di Windows 10 IoT Core? atau Pemula? rujuk tautan ini pertama.

Artikel ini diperbarui pada 30 Maret 2016

Apa itu Pengenalan Ucapan?

Dalam satu baris, Speech Recognition berarti menerjemahkan kata-kata yang diucapkan menjadi teks yang setara. Pengenalan Ucapan dapat dibagi menjadi dua komponen utama:Pemrosesan Sinyal dan Dekoder Ucapan. Kita tidak perlu repot dengan kerumitannya karena Microsoft telah mengembangkan solusi untuk itu. Kami hanya perlu menggunakan perpustakaan Pidato mereka.

Langkah 1

Memulai Pengenalan Ucapan

Mari kita mulai dengan ide dasar:

  • Membuat Tata Bahasa Pengenalan Ucapan (Tata Bahasa SRGS)
  • Inisialisasi Objek Speech Recognizer dan Muat Grammar (SpeechRecognizer)
  • Daftar untuk Acara Speech Recognizer dan Buat Handler

Buat Tata Bahasa Pengenalan Ucapan

Sebelum memulai dengan pengenalan suara, kita perlu memahami bagaimana kita dapat memprogram Universal Windows App untuk memahami bahasa atau perintah kita. Untuk melakukannya, kita perlu membuat Speech Recognition Grammar. Speech Recognition Grammar dapat dibuat menggunakan SRGS Grammar untuk Universal Windows App:

  • Gunakan XML untuk membuat dokumen tata bahasa yang sesuai dengan Speech Recognition Grammar Specification (SRGS) Versi 1.0, standar W3C untuk tata bahasa pengenalan ucapan.

Catatan:Cara lain yang mungkin tersedia di .Net Framework tetapi tidak didukung di UWP saat artikel ini ditulis. Yaitu:

  • Tata bahasa penulis secara terprogram menggunakan anggota kelas GrammarBuilder dan Choices di ruang nama System.Speech.Recognition.
  • Gunakan konstruktor dan metode kelas di System.Speech.Recognition.SrgsGrammar namespace untuk membuat tata bahasa yang sesuai dengan SRGS secara terprogram.

Kita akan mulai dengan XML Grammar. Sebelum kita mulai membuat file tata bahasa, kita perlu membayangkan dan menentukan bagaimana pengguna akan berinteraksi dengan aplikasi kita. Dalam konteks proyek ini, pengguna akan memerintahkan robot untuk bergerak ke kedua arah, berhenti dan memerintahkan untuk mengaktifkan/melepaskan deteksi rintangan. Kita dapat membuat daftar kosakata pidato sebagai berikut:

  • Majulah
  • Pindahkan Mundur
  • Belok Kanan
  • Belok Kiri
  • Berhenti
  • Libatkan Deteksi Rintangan
  • Lepaskan Deteksi Rintangan

Untuk kosakata ini, kita perlu mendesain XML Grammar. Kita hanya perlu mengikuti beberapa aturan dasar SRGS v1.

Tata Bahasa SRGS

Untuk membuat tata bahasa SRGS beberapa aturan dasar yang harus diikuti yaitu:

  • Elemen root harus tata bahasa
  • Versi tata bahasa atribut, bahasa, dan namespace XML harus ada.
  • Tata bahasa harus berisi setidaknya satu elemen aturan. (Elemen aturan berisi kata atau frasa yang dapat diucapkan pengguna).
  • Setiap elemen aturan harus memiliki atribut id unik.

Kami telah melihat struktur dasar yang diperlukan untuk tata bahasa SRGS. Sekarang kita perlu membuat kosakata untuk itu. Kosakata adalah sekumpulan kata yang menghasilkan sesuatu perintah yang berarti bagi robot.

Misalnya: “Move Forward” atau “Move Reverse”, di sini Move muncul sebelum Forward dan Reverse. Jadi dalam aturan, itu harus didahulukan sebelum Maju dan Mundur. Jadi kita bisa mengekstrak Forward dan Reverse ke aturan lain. Lihat gambar yang diberikan di bawah ini:

Apa itu aturan root ? Ini adalah node awal atau node root untuk memuat ketika Speech Recognizer memuat tata bahasa. Ini opsional. Anda dapat mengabaikannya tetapi kemudian Anda perlu menentukan node root secara terprogram.

Apa itu atribut root dalam tag tata bahasa? Atribut root mendefinisikan aturan startup untuk pengenal ucapan saat memuat tata bahasa. Jika tidak ditentukan sebagai atribut, Anda perlu menentukannya secara terprogram.

Artikel ini ditujukan untuk tujuan pemula sehingga tidak mungkin membahas tag dan atribut SRGS yang kompleks. Anda dapat mempelajari tata bahasa SRGS lebih lanjut di MSDN dan W3C.

Kami baru saja membuat tata bahasa SRGS untuk robot kami. Sekarang, kita akan melihat bagaimana menerapkan Speech Recognizer untuk Universal Windows App.

Inisialisasi Speech Recognizer dan Muat Grammar

SpeechRecognizer kelas tersedia di Windows.Media.SpeechRecognition ruang nama. Impor namespace ke file kode Anda. Sebelum menginisialisasi, kita perlu membuat file XML Grammar ke dalam proyek kita. Kami telah membuat konten untuk file tata bahasa di bagian sebelumnya.

Catatan:Jika 'CompilationResult' gagal, mungkin ada masalah dengan antarmuka Mic. Verifikasi koneksi dengan mikrofon. Periksa apakah terdeteksi di aplikasi IoT Core default atau tidak.

Daftar untuk Acara Speech Recognizer dan Buat Handler

Pada langkah terakhir, kami telah memulai pengenal ucapan dan siap mendengarkan ucapan dan menguraikannya. Setelah parsing berhasil, 'ContinuousRecognitionSession' akan memunculkan event bernama 'ResultGenerated'. Acara ini memberikan hasil parsing sebagai argumen acara yang dapat diproses untuk melakukan tugas berdasarkan ucapan yang diucapkan. Kami juga dapat mendengarkan status pengenal dengan acara 'StateChanged' untuk memberikan indikasi kepada pembicara bahwa pengenal sedang mendengarkan.

Di sini, 'MyRecognizerStateChanged' adalah fungsi yang akan dimunculkan oleh 'MyRecognizer' ketika statusnya berubah dari satu ke yang lain. Ini akan memberikan informasi status yang berharga bahwa ketika 'MyRecognizer' sudah mulai mendengarkan dan kapan berhenti untuk mendengarkan. Setelah berhenti mendengarkan, 'MyRecognizer' mem-parsing ucapan terhadap tata bahasa yang disediakan dan memunculkan acara 'ResultGenerated' pada berhasil.

Catatan:Anda tidak perlu membuat sendiri fungsi 'MyRecognizer_StateChanged' dan 'MyRecognizer_ResultGenerated'. Sebaliknya, Visual Studio menyediakan cara untuk membuatnya secara otomatis untuk Anda. Anda dapat membuatnya secara otomatis dengan Visual Studio menggunakan  dua kali di sisi kanan +=acara.

Anda juga dapat mendaftarkan event handler setelah menginisialisasi objek SpeechRecognizer.

Kita hampir selesai!

Langkah 2

Bagaimana cara mengemudi pada pidato yang diuraikan?

Di bagian sebelumnya, kami telah mengonfigurasi tata bahasa dan pengenal ucapan khusus untuk Universal Windows App. Ketika Speech Recognizer berhasil mem-parsing ucapan yang diucapkan, itu akan memunculkan event 'ResultGenerated'. Acara ini berisi hasil parsing sebagai argumen. Mari kita lihat cara mendeteksi apa yang diucapkan dan apa yang harus dilakukan berdasarkan ucapan yang diucapkan:

Di sini, argumen 'args' diteruskan ke event handler oleh SpeechRecognizer pada penguraian ucapan yang berhasil. 'args.Result.Text' bertipe string. Ini berisi pidato lisan sebagai teks. Anda dapat melakukan tugas khusus ucapan menggunakan blok bersyarat.

Tidak layak untuk menunjukkan kode lengkap untuk menggerakkan robot. Saya telah menyediakan kelas statis bernama 'MotorDriver' yang berisi berbagai fungsi untuk menggerakkan robot. Kelas ini mengelola pin Gpio untuk menggerakkan robot. Kode sumber lengkap diberikan di akhir proyek. Jika Anda baru menggunakan Raspberry Pi 2 dan Windows 10 IoT, lihat link ini untuk memulai.

Langkah 3

Perbarui Kemampuan Perangkat

Sebelum menerapkan Universal Windows App ke Raspberry Pi 2, kita perlu mengatur kemampuan perangkat yang sesuai agar aplikasi dapat berjalan dengan hak akses perangkat keras tertentu. Dalam konteks aplikasi ini, kita membutuhkan perangkat eksternal 'Mikrofon' untuk digunakan. Untuk mengaktifkan 'Mikrofon' dalam manifes paket:


Semua dilakukan di sisi perangkat lunak. Sekarang waktunya untuk memasang perangkat keras. Kode sumber disediakan di akhir artikel.

Bagian utama untuk mengimplementasikan Speech Recognition telah selesai dan tidak mungkin untuk menjelaskan setiap baris kode di sini. Sebaliknya, kode sumber dikomentari dengan baik. Mintalah pertanyaan apa pun.

Langkah 4

Terapkan &Daftarkan Aplikasi sebagai Aplikasi Startup

Robot perlu mengenali perintah ucapan setiap kali dihidupkan. Untuk mencapai ini, Anda perlu mendaftarkan aplikasi Anda sebagai aplikasi startup sehingga setiap kali Raspberry Pi 2 boot, itu akan memulai aplikasi Anda tepat setelah boot. Untuk melakukannya, Anda harus terlebih dahulu men-deploy aplikasi Anda ke Raspberry Pi 2, lalu mendaftarkannya sebagai aplikasi startup.

Sebelum penerapan, sebaiknya ubah nama keluarga paket aplikasi:


Setelah mengubah nama keluarga paket, terapkan aplikasi ke perangkat jarak jauh (Raspberry Pi 2) Anda.




Jika Anda tidak tahu cara yang tepat untuk men-deploy aplikasi Anda ke Raspberry Pi 2, lihat link ini.

Setelah aplikasi berhasil diterapkan, Anda perlu mendaftarkan aplikasi sebagai aplikasi startup. Anda dapat mendaftarkan aplikasi sebagai startup menggunakan dua metode:menggunakan PowerShell atau Portal Web-Management Windows IoT Core. Saya akan menggunakan metode kedua. Buka browser web dan ikuti:



Mengalami masalah saat mendaftar sebagai aplikasi startup? Lihat artikel ini.

Setelah Anda berhasil mendaftarkan aplikasi Anda sebagai aplikasi startup, reboot Raspberry Pi 2 dan lihat apakah aplikasi Anda dimulai setelah booting atau tidak. Jika tidak, verifikasi semua langkah dari penerapan hingga pendaftaran. Dengan startup aplikasi yang sukses, sekarang saatnya untuk menghubungkan berbagai hal.

Skema

Bagian perangkat keras terdiri dari sasis robot (dengan motor DC), Raspberry Pi 2 (memiliki Windows 10 IoT Core), baterai, sensor jarak, dll. Daya berasal dari Baterai Motor (ditunjukkan pada gambar di sebelah kiri 'Baterai:9-12VDC') dan langsung menuju ke driver motor H-Bridge. Catu daya terpisah untuk Raspberry Pi 2 diperlukan. USB PowerBank cocok untuk menyediakan daya yang cukup untuk Raspberry Pi 2. Dengan tidak adanya USB PowerBank atau Filtered 5VDC Supply, sirkuit pengatur tegangan terpisah (menggunakan 7805) diperlukan untuk menyalakan Raspberry Pi dan Sensor Jarak Ultrasonik.

Jika Anda tidak memiliki pasokan USB PowerBank atau filter 5VDC, Anda dapat menggunakan Baterai Motor (ditunjukkan pada gambar di atas di sisi kiri – Warna Oranye, Baterai:9-12VDC) untuk menyalakan Raspberry Pi 2. Skema untuk konfigurasi disediakan di akhir artikel (bernama 'Skematis :Aki Motor').

Mengapa resistor dengan Sensor Jarak Ultrasonik?

Sensor Jarak Ultrasonik bekerja pada 5V sementara Raspberry Pi 2 bekerja pada 3.3V. Kami tidak dapat langsung menghubungkan pin Echo sensor langsung ke pin Raspberry Pi karena akan memiliki output 5V. Ini akan membakar Raspberry Pi. Jadi kita perlu drop down tegangan output sensor ke 3.3V sebelum mengirim ke Raspberry Pi. Tegangan sensor dapat diturunkan dengan menggunakan rangkaian pembagi tegangan. Dengan demikian, Vout dapat dihitung sebagai:

R1 =1000 ohmR2 =2000 ohmVin =5V (Pin Gema Sensor)Vout =5 * (2000 / (1000 + 2000)) =3.3V (Ke Raspberry Pi 2)

PERINGATAN:Jangan sambungkan pin Echo Ultrasonic Distance Sensor langsung ke pin GPIO Raspberry Pi. Ini mungkin membakar Raspberry Pi. Gunakan konverter level logika atau pembagi tegangan yang sesuai.

Majelis Akhir




Masalah Umum

Pengenalan Ucapan tidak akan berfungsi (Build 10586)

Speech recognition dan syntheses tidak akan berfungsi pada perangkat IoT mana pun (RPi2, MinnowBoard MAX, dan Dragonboard 410c) jika Anda telah menginstal Windows IoT build 10586.

Solusi: Saat ini, tidak ada solusi valid yang tersedia. Saya harap tim Windows IoT akan menyelesaikan bug ini di build berikutnya. Namun, jika Anda ingin memanipulasi pengenalan suara, kembalikan ke versi lama 10240 dan itu akan berfungsi seperti pesona.

Masalah Mikrofon

Pengenalan suara pasti membutuhkan mikrofon berkualitas tinggi. Anda masih dapat menggunakan mikrofon berkualitas rendah saat dekat, tetapi jika mikrofon jauh sekitar 1-2 meter, mikrofon tidak akan mengenali secara akurat.

Solusi: (Opsi 1) : Beli mikrofon berkualitas tinggi. Kadang-kadang mungkin terjadi bahwa bahkan setelah mikrofon berkualitas tinggi, itu tidak akan mengenali dengan benar. Dalam kasus seperti itu, suara keras diperlukan. (Opsi 2) :Mikrofon nirkabel akan sangat bagus. Anda dapat mengontrol robot bahkan dari jarak jauh tanpa khawatir tentang kebisingan eksternal. Anda dapat membeli salah satunya atau membuatnya sendiri dengan merujuk video ini.

Penundaan Pemrosesan Pengenal

Jelas bahwa pengenal memerlukan waktu untuk memproses ucapan. Ini bukan masalah atau masalah tetapi dapat menyebabkan masalah dalam sistem waktu nyata.

Misalkan, kita memiliki mobil robot cum berkecepatan tinggi yang mengikuti perintah ucapan kita. Mari kita asumsikan, mobil akan mengikuti perintah ucapan kita setelah 600-2000ms (karena penundaan pemrosesan). Jadi jika kita memerintahkan untuk berhenti, mobil akan mengurai sinyal setelah beberapa waktu yang dapat menyebabkan peristiwa bencana.

Solusi:  Saat ini (saat artikel ini ditulis), tidak ada solusi yang tepat tersedia. Harapan, itu akan diselesaikan di masa depan.

Perbedaan Pengucapan

Orang-orang dari wilayah yang berbeda menggunakan pengucapan yang berbeda untuk satu kata. Speech Recognizer tidak dapat mengurai ucapan, jika pengucapan kata yang diucapkan berbeda dari yang diprogram.

Solusi:  Anda dapat menentukan bahasa dan wilayah dalam file tata bahasa XML SRGS untuk mengurai pengucapan untuk wilayah tertentu.

Katakanlah, kita ingin mengurai bahasa Inggris (UK), kita perlu mengatur atribut tag tata bahasa xml:lang="en-GB". Di sini, kode negara ISO untuk Inggris adalah GB. Jadi 'en-GB' memberitahu pengenal ucapan untuk mengurai ucapan berdasarkan pengucapan bahasa Inggris (UK). Contoh lain, untuk bahasa Prancis Kanada, gunakan “fr-CA”.

Kebisingan Lingkungan

Suara dan getaran yang tidak diinginkan, yang disebabkan oleh satu atau beberapa entitas eksternal akan mempengaruhi akurasi pemrosesan. Terkadang, pengenal tidak akan memahami ucapan meskipun diucapkan dengan benar.

Solusi: Mungkin tidak mungkin untuk mengatasi atau menghilangkan kebisingan tersebut. Pada tingkat teknologi saat ini, kita hanya bisa berharap untuk menggunakan teknologi tersebut di area bebas kebisingan. Solusi lain yang mungkin adalah menggunakan mikrofon cerdas yang mampu mengurangi kebisingan (disebut mikrofon peredam bising).

Mikrofon USB / Kartu Suara USB tidak akan mengenali

Dengan dirilisnya build 10531, Windows IoT Core mendukung perangkat audio generik. Sebagian besar Mikrofon USB atau SoundCard USB membutuhkan Driver USB Generik. Jika perangkat Anda menggunakan driver generik, itu akan berfungsi.

Bekerja dengan sukses dengan RPi2 saya (Amazin.in)

Solusi: Coba Mikrofon USB atau Kartu Suara USB lainnya.

Dalam kasus saya, saya telah membeli USB SoundCard. Ini bekerja dengan sempurna. Saya memasang Mikrofon ke jack Mic dari SoundCard. Anda dapat membeli USB SoundCard dari Amazon.com atau situs belanja online lainnya. Orang India dapat membeli USB SoundCard dari Amazon.in.

Penyempurnaan di Masa Depan

Tidak ada batasan dalam hal ide baru. Artikel ini mengeksplorasi implementasi dasar pengenalan suara. Selanjutnya, Anda dapat memperluas proyek dengan memberikan indikasi visual hasil parsing. Misalnya, nyalakan led hijau selama satu detik setelah penguraian perintah lisan yang berhasil, jika tidak nyalakan led merah selama satu detik. Selain itu, untuk mencegah perintah yang tidak disengaja, Anda juga dapat memprogram robot untuk menginstruksikan kapan harus mendengarkan dan kapan tidur.

Apakah Anda memperhatikan?

Mereka yang telah melihat dengan cermat gambar judul animasi proyek akan mengetahui bahwa saya belum membahas sesuatu yang telah saya tunjukkan di sana. Perhatikan baik-baik dan coba terapkan fitur tersembunyi itu di robot Anda.

Semoga Sukses 🙂

Sumber:  Robot yang Dikendalikan Bicara

Proses manufaktur

  1. Windows 10 IoT Core – Membaca Denyut Jantung
  2. Windows IoT:Pintu Pengenalan Wajah
  3. Tombol AWS IoT Terkendali Gerakan
  4. Windows 10 IoT Core pada Raspberry Pi 2 – Data Adafruit Sensor
  5. Windows 10 IoT Core dan SHT15
  6. Windows 10 IoT Core untuk Raspberry Pi 3 Model B+
  7. Robot Raspberry Pi dikendalikan melalui Bluetooth
  8. Robot Terkendali Gerakan Menggunakan Raspberry Pi
  9. ROBOT WIFI RASPBERRY PI DIKONTROL DARI PONSEL PINTAR ANDROID
  10. GoPiGo v2 dengan Windows IoT