Saya ingin melakukan pemrosesan pidato di Raspberry Pi untuk mendeteksi orang-orang tertentu (seperti identifikasi unik).
Saya lebih suka menggunakan hanya prosesor on-board untuk ini, Anda bisa berasumsi bahwa internet tidak dapat diakses.
Juga, apa saja batasan dengan Raspberry Pi yang melakukan pemrosesan ucapan? Jika saya ingin menggunakan ini sebagai mesin absensi otomatis, bagaimana saya harus melanjutkan?
audio
home-automation
input-device
speech-recognition
speech-synthesis
Ruthvik Vaila
sumber
sumber
Jawaban:
Ini adalah proyek utama Raspberry Pi saya didedikasikan untuk saat ini, jadi saya pikir saya dapat menambahkan dua sen saya. Perlu diingat proyek ini masih sangat banyak pekerjaan yang sedang berjalan.
Saya memilih untuk menggunakan bahasa pemrograman C untuk proyek ini secara eksklusif pada Raspbian OS, dan itu mungkin mempengaruhi beberapa keputusan dan instruksi saya. Saya hanya akan mendaftar perangkat lunak bebas dan sumber terbuka , karena hanya itu yang saya gunakan.
Untuk instruksi instalasi, saya akan menganggap Anda memiliki sistem yang sepenuhnya terkini .
Pengenalan suara
Berikut adalah beberapa opsi untuk mesin pengenalan suara :
Pocketsphinx - Versi Sphinx yang dapat digunakan dalam sistem embedded (mis., Berdasarkan pada prosesor ARM).
Kelebihan : Dalam pengembangan aktif dan menggabungkan fitur-fitur seperti aritmatika titik tetap dan algoritma yang efisien untuk perhitungan GMM . Semua pemrosesan berlangsung di Raspberry Pi, sehingga mampu digunakan secara offline. Ini mendukung pengenalan suara waktu nyata
Cons : Sangat rumit untuk mengatur dan memahami untuk pemula. Bagi saya, itu terlalu tidak akurat untuk aplikasi saya. Semua pemrosesan berlangsung di Raspberry Pi, membuatnya sedikit lebih lambat.
Petunjuk pemasangan :
Unduh versi stabil terbaru dari Sphinxbase dan Pocketsphinx :
Ekstrak file yang diunduh:
Untuk mengkompilasi paket-paket ini, Anda harus menginstal bison dan header pengembangan ALSA.
CATATAN : Penting bahwa header ALSA diinstal sebelum Anda membuat Sphinxbase. Jika tidak, Sphinxbase tidak akan menggunakan ALSA. Tampaknya juga ALSA tidak akan digunakan jika PulseAudio diinstal (hal yang buruk untuk pengembang seperti saya).
cd
ke dalam direktori Sphinxbase dan ketikkan perintah berikut:cd
ke dalam direktori Pocketsphinx dan ketik perintah berikut:Uji Pocketsphinx dengan menjalankan:
Jika Anda ingin men-tweak, saya sarankan Anda membaca beberapa informasi tentang CMUSphinx Wiki .
libsprec - Pustaka pengenalan ucapan yang dikembangkan oleh H2CO3 (dengan beberapa kontribusi sendiri, kebanyakan perbaikan bug).
Pro : Ini menggunakan Google Speech API , membuatnya lebih akurat. Kode ini lebih mudah dipahami (menurut saya).
Cons : Ini memiliki ketergantungan pada perpustakaan lain yang telah dikembangkan H2CO3 (seperti libjsonz ). Pengembangannya jerawatan. Ia menggunakan Google Speech API, artinya pemrosesan tidak terjadi pada Raspberry Pi itu sendiri, dan memerlukan koneksi internet. Diperlukan satu modifikasi kecil pada kode sumber sebelum kompilasi bekerja dengan benar pada Raspberry Pi.
Petunjuk pemasangan :
Instal libflac , libogg dan libcurl :
Unduh libsprec versi terbaru
Buka zip paket yang diunduh:
Anda sekarang harus memiliki folder bernama
libsprec-master
di direktori Anda saat ini.Unduh libjsonz versi terbaru :
Buka zip paket yang diunduh:
Anda sekarang harus memiliki folder bernama
libjsonz-master
di direktori Anda saat ini.cd
ke dalamlibjsonz-master
direktori, kompilasi, dan instal:cd
keluar darilibjsonz-master
direktori dan kelibsprec-master/src
direktori. Edit baris 227:Kami membutuhkan ini untuk mengatakan:
Ini agar program akan menggunakan ALSA untuk menunjuk ke mikrofon USB.
Kompilasi dan instal:
Anda sekarang dapat menggunakan perpustakaan di aplikasi Anda sendiri. Lihat di folder
libsprec-master
contoh sebagai contoh.Julius - Sebuahperangkat lunak decoderpengenal kosakata kontinu ( LVCSR )kosakata dua-kinerja tinggi berkinerja tinggiuntuk para peneliti dan pengembang yang terkait dengan pidato.
Pro : Ini dapat melakukan pengenalan suara hampir real-time pada Raspberry Pi itu sendiri. Format model bicara standar diadopsi untuk mengatasi toolkit pemodelan gratis lainnya.
Cons : Perkembangan jerawatan, dengan pembaruan terakhir lebih dari setahun yang lalu. Pengenalannya juga terlalu tidak akurat dan lambat untuk penggunaan saya. Waktu instalasi yang lama
Petunjuk pemasangan :
Ada beberapa paket yang perlu kita instal agar sistem berfungsi dengan baik:
Unduh Julius dari sumber CVS:
Setel flag kompiler oleh variabel lingkungan:
cd
ke dalam folderjulius4
dan ketik perintah berikutJulius membutuhkan variabel lingkungan yang dipanggil
ALSADEV
untuk memberi tahu perangkat mana yang digunakan untuk mikrofon:Unduh model akustik gratis untuk digunakan oleh Julius. Setelah Anda mengunduhnya,
cd
masuk ke direktori dan jalankan:Setelah itu, Anda harus dapat memulai input ucapan.
Roll perpustakaan Anda sendiri - Untuk proyek spesifik saya, saya memilih untuk membangun perpustakaan pengenalan suara saya sendiri yang merekam audio dari mikrofon USB menggunakan ALSA melalui PortAudio , menyimpannya dalam file FLAC melalui libsndfile , dan mengirimkannya ke Google untuk diproses saya t. Mereka kemudian mengirimi saya file JSON yang dikemas dengan baik yang kemudian saya proses untuk mendapatkan apa yang saya katakan kepada Raspberry Pi saya.
Pro : Saya mengendalikan semuanya (yang saya suka). Saya belajar banyak (yang saya suka).
Cons : Ini banyak pekerjaan. Juga, beberapa orang mungkin berpendapat bahwa saya tidak benar-benar melakukan pemrosesan pada Raspberry Pi dengan perpustakaan pengenalan ucapan ini. Saya tahu itu . Google dapat memproses data saya jauh lebih akurat yang saya dapat saat ini. Saya sedang berupaya membangun opsi pengenalan suara offline yang akurat.
Sintesis Bicara
Berikut ini beberapa opsi untuk mesin sintesis bicara :
tritium - Mesin sintesis bicara berkualitas gratis dan premium yang ditulis sepenuhnya dalam bahasa C (dan dikembangkan oleh Anda dengan sungguh-sungguh).
Pro: Sangat portabel (tidak ada dependensi selain CMake untuk membangun), sangat kecil (terkecil yang dapat saya temukan), mudah dibangun.
Kekurangan: Keluaran ucapan itu sendiri kadang-kadang tidak akurat. Dukungan untuk berbagai bahasa sangat kurang karena saya satu-satunya pengembang saat ini dengan sedikit waktu luang, tetapi ini adalah salah satu tujuan proyek di masa depan. Juga, pada saat ini hanya perpustakaan adalah output saat dikompilasi dan tidak dapat digunakan / diuji dapat dieksekusi.
eSpeak - Sebuah synthesizer ucapan perangkat lunak open source yang ringkas untuk Linux, Windows, dan platform lainnya.
Pro : Ini menggunakan metode sintesis formant , menyediakan banyak bahasa lisan dalam ukuran kecil. Ini juga sangat akurat dan mudah dimengerti. Saya awalnya menggunakan ini dalam proyek saya, tetapi karena kontra saya harus beralih ke mesin sintesis pidato lain.
Cons : Ini memiliki beberapa dependensi aneh pada X11 , menyebabkannya terkadang gagap. Perpustakaannya juga sangat besar dibandingkan dengan yang lain.
Petunjuk pemasangan :
Instal perangkat lunak eSpeak:
Untuk mengatakan apa yang Anda inginkan di eSpeak:
Untuk membaca dari file di eSpeak:
Festival - Sistem sintesis bicara multi-bahasa umum.
Pro : Ini dirancang untuk mendukung berbagai bahasa yang diucapkan. Ini dapat menggunakan proyek Festvox yang bertujuan untuk membuat pembangunan suara sintetis baru lebih sistematis dan lebih baik didokumentasikan, sehingga memungkinkan bagi siapa pun untuk membangun suara baru.
Cons : Ini ditulis dalam C ++ (lebih dari tipu daya bagi saya secara khusus). Ini juga memiliki basis kode yang lebih besar, jadi akan sulit bagi saya untuk memahami dan port kode.
Petunjuk pemasangan :
Instal perangkat lunak Festival:
Untuk menjalankan Festival, beri pipa teks atau file yang ingin Anda baca:
Flite - Mesin sintesis bicara run-time kecil yang berasal dari Festival dan proyek Festvox.
Pro : Dibawah pengembangan konstan di Carnegie Mellon University Mesinnya sangat kecil dibandingkan yang lain. Ini juga memiliki basis kode yang lebih kecil, sehingga lebih mudah untuk dilalui. Hampir tidak ada dependensi (pro besar untuk saya, dan alasan lain saya memutuskan untuk menggunakan mesin ini dalam proyek saya).
Cons : Output pidato itu sendiri tidak selalu akurat. Pidato ini memiliki suara yang sangat metalik, non-manusia (lebih dari mesin lainnya). Itu tidak mendukung banyak bahasa.
Petunjuk pemasangan :
Instal perangkat lunak Flite:
Untuk menjalankan Flite:
Jawaban untuk pertanyaan spesifik Anda :
Programmer tidak memiliki batasan.
:P
Pada catatan yang lebih serius, Raspberry Pi memiliki banyak sumber daya untuk menangani pemrosesan ucapan. Selama orang yang melakukan pemrosesan bicara mengetahui apa yang mereka lakukan, Raspberry Pi harus bisa menanganinya dengan baik.
Tak satu pun dari opsi ini cukup akurat untuk membedakan antara orang-orang tertentu belum . Itu adalah sesuatu yang sedang saya kerjakan dalam proyek saya (dan mungkin sebentar). Jika Anda mencari pilihan yang lebih baik untuk kehadiran otomatis, saya akan melihat pengenalan wajah . Ada lebih banyak batasan pada pengenalan wajah untuk Raspberry Pi, jadi ingatlah itu.
sumber
Saya menggunakan pocketsphinx_continuous dan kartu suara seharga $ 4 .
Untuk mengelola fakta bahwa itu perlu berhenti mendengarkan ketika menggunakan synth bicara saya menggunakan amixer untuk menangani untuk memasukkan volume ke mic (ini direkomendasikan praktik terbaik oleh CMU karena mesin berhenti-start akan menghasilkan pengakuan yang lebih buruk)
Dengan perintah yang cocok untuk menonaktifkan suara mendengarkan ketika synth pidato diputar
Untuk menghitung waktu yang tepat untuk membisukan untuk saya jalankan soxi via lua dan kemudian atur unmute.sh (kebalikan dari mute.sh) untuk menjalankan "x" detik dari startup. Tidak ada keraguan banyak cara untuk menangani ini. Saya senang dengan hasil metode ini.
LUA SNIPPET:
Untuk benar-benar meraih suara pada pi saya gunakan:
Sekali lagi, ada cara lain, tapi saya suka output saya dengan cara ini.
Untuk synth saya menggunakan solusi pi Cepstral pemula, tetapi tidak tersedia secara online Anda harus menghubungi mereka secara langsung untuk mengatur untuk membelinya dan itu adalah sekitar $ 30 untuk membeli. Hasilnya dapat diterima namun pidatonya membuat beberapa klik dan muncul tidak menyenangkan, perusahaan telah menjawab mengatakan mereka tidak lagi memiliki RaspPi dan tidak mau meningkatkan produk. YMMV
Pengenalan suara duduk di sekitar 12% CPU ketika "idle", dan lonjakan sebentar ketika melakukan sepotong pengakuan.
Pembuatan suara melonjak sekitar 50-80% saat rendering.
Drama / sox berbobot cukup besar tetapi saya menerapkan efek waktu-nyata untuk suara yang diberikan saat saya memainkannya;)
Pi dilucuti habis menggunakan setiap panduan yang saya temukan untuk menghentikan layanan yang tidak diperlukan dan berjalan dalam mode CLI lengkap. 800 mhz over-clocked (terkecil).
scaling_governor diatur ke: performance
Ketika sepenuhnya berjalan: beroperasi pada sekitar 50ºC di bawah sinar matahari langsung dan 38ºC di tempat teduh. Saya memiliki heat sink.
Poin terakhir: Saya benar-benar menjalankan semua perlengkapan ini untuk AI "didorong internet" sebagai tambahan yang bagus.
Pi menangani semua ini dengan mulus, Dan memainkan audio jaringan apa pun secara real-time, Dan audio yang sepenuhnya dilingkarkan ke kotak Unix lainnya. dll.
untuk menangani beban overhead CPU speech yang besar, saya telah menerapkan sistem caching berbasis md5sum sehingga ucapan yang sama tidak diberikan dua kali. (sekitar 1000 file @ 220 mb total mencakup 70% ucapan yang biasanya saya dapatkan dari AI) ini benar-benar membantu menurunkan total beban CPU secara keseluruhan.
Dalam précis ini semua bisa dilakukan. namun pengenalan suara hanya akan sebagus kualitas mikrofon Anda, model bahasa Anda, seberapa spesifik tutup mata pelajaran Anda dengan audiens yang dituju (saya menggunakan model en_US pada anak-anak en_UK, tidak sempurna) dan detail kecil lainnya bahwa dengan upaya Anda dapat mengurangi hasil yang layak.
Dan sebagai catatan, saya sudah melakukan semua ini sebelumnya pada kindle (dan itu bekerja juga dengan cmu sphinx dan flite). Semoga ini membantu.
sumber
Iya. gunakan PocketSphinx untuk pengenalan suara, Festvox untuk text to speech (TTS) dan beberapa audio USB dengan saluran masuk (atau webcam lama yang didukung yang juga memiliki saluran masuk).
Google mencari paket perangkat lunak ini dan "Raspberry Pi" menyediakan banyak contoh dan tutorial untuk mengaturnya.
sumber
Seperti yang ditunjukkan oleh Lenik, Anda perlu bagaimanapun untuk merekam audio atau mungkin mengirim file audio ke Raspberry Pi agar mereka dapat diterjemahkan.
sumber
Raspberry Pi tidak memiliki ADC built-in atau input mikrofon. Kecuali jika Anda berencana untuk menggunakan USB mike eksternal, pada dasarnya tidak ada cara untuk mengalirkan audio Anda ke perangkat. Selain itu, tidak ada batasan serius, CPU ini cukup kuat untuk pemrosesan suara apa pun yang Anda coba untuk implementasikan.
sumber
Pertama, Anda harus memilih serangkaian kata untuk proses klasifikasi. Setelah itu Anda harus mengumpulkan data dari pengguna / subjek. Itu akan menjadi sinyal nonstasioner. Anda harus mengurangi data untuk mengurangi biaya komputasi / untuk meningkatkan rasio keberhasilan dengan metode ekstraksi fitur sehingga Anda harus mencari metode ekstraksi fitur yang sesuai untuk aplikasi Anda. Anda bisa mendapatkan vektor fitur sebagai hasil dari metode ini (nilai absolut rata-rata, RMS, panjang gelombang, nol persimpangan, nilai absolut terintegrasi, koefisien AR, frekuensi median, frekuensi rata-rata, dll). Kemudian, Anda harus menggunakan metode klasifikasi seperti knn, neural networks, dll untuk mengklasifikasikan data Anda. Terakhir Anda harus memeriksa akurasinya. Untuk menyimpulkan:
Saya telah melihat proyek pemrosesan video dengan RPi di internet sehingga dapat mengelola untuk melakukan klasifikasi ini.
Anda dapat menggunakan NI 6009 USB DAQ (yang mendukung RPi) untuk mengumpulkan data analog tetapi harganya sedikit mahal.
sumber
Ini mungkin berguna bagi Anda untuk mengenali pembicara:
https://code.google.com/p/voiceid/
sumber