Pemrosesan pidato pada Raspberry Pi


43

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?


4
"Pemrosesan wicara" macam apa yang Anda bicarakan: pengenalan sampel pidato yang direkam sebelumnya (maka Anda dapat menggunakan semacam indeks kesamaan antara yang asli, yaitu file rekaman yang direkam sebelumnya dan tes) atau pengenalan suara "nyata" (bisa sangat CPU intensif secara real time, terutama untuk beberapa bahasa dan tingkat pengenalan yang baik)?
TomiL

Jawaban:


61

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 :

  1. 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 :

      1. Unduh versi stabil terbaru dari Sphinxbase dan Pocketsphinx :

        $ wget http://sourceforge.net/projects/cmusphinx/files/sphinxbase/0.8/sphinxbase-0.8.tar.gz
        $ wget http://sourceforge.net/projects/cmusphinx/files/pocketsphinx/0.8/pocketsphinx-0.8.tar.gz
        
      2. Ekstrak file yang diunduh:

        $ tar -zxvf pocketsphinx-0.8.tar.gz; rm -rf pocketsphinx-0.8.tar.gz
        $ tar -zxvf sphinxbase-0.8.tar.gz; rm -rf sphinxbase-0.8.tar.gz
        
      3. 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).

        $ sudo apt-get install bison libasound2-dev
        
      4. cd ke dalam direktori Sphinxbase dan ketikkan perintah berikut:

        $ ./configure --enable-fixed
        $ sudo make
        $ sudo make install
        
      5. cd ke dalam direktori Pocketsphinx dan ketik perintah berikut:

        $ ./configure
        $ sudo make
        $ sudo make install
        
      6. Uji Pocketsphinx dengan menjalankan:

        $ src/programs/pocketsphinx_continuous -samprate 48000 
        

        Jika Anda ingin men-tweak, saya sarankan Anda membaca beberapa informasi tentang CMUSphinx Wiki .

  2. 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 :

      1. Instal libflac , libogg dan libcurl :

        $ sudo apt-get install libcurl4-openssl-dev libogg-dev libflac-dev
        
      2. Unduh libsprec versi terbaru

        $ wget https://github.com/H2CO3/libsprec/archive/master.zip
        
      3. Buka zip paket yang diunduh:

        $ unzip master.zip; rm -rf master.zip
        

        Anda sekarang harus memiliki folder bernama libsprec-masterdi direktori Anda saat ini.

      4. Unduh libjsonz versi terbaru :

        $ wget https://github.com/H2CO3/libjsonz/archive/master.zip
        
      5. Buka zip paket yang diunduh:

        $ unzip master.zip; rm -rf master.zip
        

        Anda sekarang harus memiliki folder bernama libjsonz-masterdi direktori Anda saat ini.

      6. cdke dalam libjsonz-masterdirektori, kompilasi, dan instal:

        $ cd libjsonz-master
        $ mv Makefile.linux Makefile
        $ make
        $ sudo make install
        
      7. cdkeluar dari libjsonz-masterdirektori dan ke libsprec-master/srcdirektori. Edit baris 227:

        $ err = snd_pcm_open(&handle, "pulse", SND_PCM_STREAM_CAPTURE, 0);
        

        Kami membutuhkan ini untuk mengatakan:

        $ err = snd_pcm_open(&handle, "plughw:1,0", SND_PCM_STREAM_CAPTURE, 0);
        

        Ini agar program akan menggunakan ALSA untuk menunjuk ke mikrofon USB.

      8. Kompilasi dan instal:

        $ mv Makefile.linux Makefile
        $ make
        $ sudo make install
        
      9. Anda sekarang dapat menggunakan perpustakaan di aplikasi Anda sendiri. Lihat di folder libsprec-mastercontoh sebagai contoh.

  3. 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 :

      1. Ada beberapa paket yang perlu kita instal agar sistem berfungsi dengan baik:

        $ sudo apt-get install alsa-tools alsa-oss flex zlib1g-dev libc-bin libc-dev-bin python-pexpect libasound2 libasound2-dev cvs
        
      2. Unduh Julius dari sumber CVS:

        $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/julius co julius4
        
      3. Setel flag kompiler oleh variabel lingkungan:

        $ export CFLAGS="-O2 -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -pipe -fomit-frame-pointer"
        
      4. cdke dalam folder julius4dan ketik perintah berikut

        $ ./configure --with-mictype=alsa
        $ sudo make
        $ sudo make install
        
      5. Julius membutuhkan variabel lingkungan yang dipanggil ALSADEVuntuk memberi tahu perangkat mana yang digunakan untuk mikrofon:

        $ export ALSADEV="plughw:1,0"
        
      6. Unduh model akustik gratis untuk digunakan oleh Julius. Setelah Anda mengunduhnya, cdmasuk ke direktori dan jalankan:

        $ julius -input mic -C julius.jconf
        

        Setelah itu, Anda harus dapat memulai input ucapan.

  4. 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 :

  1. 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.

  2. 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 :

      1. Instal perangkat lunak eSpeak:

        $ sudo apt-get install espaek
        
      2. Untuk mengatakan apa yang Anda inginkan di eSpeak:

        $ espeak "Hello world"
        

        Untuk membaca dari file di eSpeak:

        $ espeak -f <file>
        
  3. 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 :

      1. Instal perangkat lunak Festival:

        $ sudo apt-get install festival festival-freebsoft-utils
        
      2. Untuk menjalankan Festival, beri pipa teks atau file yang ingin Anda baca:

        $ echo  "Hello world" | festival --tts
        
  4. 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 :

      1. Instal perangkat lunak Flite:

        $ sudo apt-get install flite
        
      2. Untuk menjalankan Flite:

        $ flite -t "text that you want flite to say"
        

Jawaban untuk pertanyaan spesifik Anda :

Apa keterbatasan dengan Pi yang melakukan pemrosesan bicara?

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.

Saya ingin menggunakan mesin absensi otomatis ini, bagaimana saya harus melanjutkan?

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.


6
Ini jawaban yang luar biasa! Anda benar-benar mengeluarkan semua trik :)
Piotr Kula

Memberi +1 pada saat yang lalu, tetapi saya baru memperhatikan bahwa H2CO3 tidak lagi ada di SE. Tautan Anda ke profilnya 404s.
The Guy with The Hat

Apakah Anda memiliki cara untuk hanya mengirim suara ke Google jika seseorang telah mengatakan kata yang direkam sebelumnya sebagai kata pemicu? (Saya sedang berbicara tentang bagian "Roll your own library")
Robert

@ Robert Ada, tapi cukup rumit dan melibatkan saya mengintegrasikan PocketSphinx sehingga saya bisa melatih pengenalan suara offline. Saya mungkin dapat memperbarui posting nanti dengan beberapa informasi lebih lanjut tentang ini jika Anda mau.
syb0rg

@ syb0rg, saya juga menantikan posting Anda mengenai lintasan kata pemicu secara offline dan mungkin nanti memproses kalimat lengkap berikutnya melalui Google!
Ashish K

5

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)

echo "SETTING MIC IN TO 15 (94%)" >> ./audio.log
amixer -c 1 set Mic 15 unmute 2>&1 >/dev/null 

Dengan perintah yang cocok untuk menonaktifkan suara mendengarkan ketika synth pidato diputar

FILE: mute.sh
#!/bin/sh

sleep $1;
amixer -c 1 set Mic 0 unmute >/dev/null 2>&1 ; 
echo  "** MIC OFF **" >> /home/pi/PIXIE/audio.log

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:

-- Begin parallel timing  
-- MUTE UNTIL THE SOUNDCARD FREES UP 
-- "filename" is a fully qualified path to a wav file 
-- outputted by voice synth in previous operation

-- GET THE LENGTH
local sample_length = io.popen('soxi -D '..filename);
local total_length  = sample_length:read("*a"); 
clean_length = string.gsub(total_length, "\n", "") +1;  
sample_length:close();

-- EXAMPLE LOGGING OUTPUT...
--os.execute( 'echo LENGTH WAS "'.. clean_length .. '" Seconds  >> ./audio.log');   



-- we are about to play something... 
-- MUTE, then schedule UNMUTE.sh in x seconds, then play synth output
-- (have unrolled mute.sh here for clarity)

os.execute( 'amixer -c 1 set Mic '..mic_level..' unmute 2>&1 >/dev/null ');
os.execute( 'echo "** MIC OFF **"  >> ./audio.log ');

-- EXAMPLE LOGGING OUTPUT...    
-- os.execute( 'echo PLAYING: "'.. filename..'" circa ' .. clean_length .. ' Seconds  >> ./audio.log ');

os.execute( './unmute.sh "'.. clean_length ..'" &');


-- THEN PLAY THE THING WHILE THE OTHER PROCESS IS SLEEPING  

os.execute( './sounds-uncached.sh '..filename..' 21000')

Untuk benar-benar meraih suara pada pi saya gunakan:

pocketsphinx_continuous -bestpath 0 -adcdev plughw:1  -samprate 20000  \
-nfft 512 -ds2 -topn2 -maxwpf 5 -kdtreefn 3000 -kdmaxdepth 7 -kdmaxbbi 15 \
-pl_window 10 -lm ./LANGUAGE/0892-min.lm -dict ./LANGUAGE/0892-min.dic 2>&1 \
| tee -i 2>/dev/null >( sed -u -n -e 's/^.\{9\}: //p' ) \
>( sed -u -n -e 's/^READY//p' \
-e 's/^Listening//p' -e 's/^FATAL_ERROR: \"continuous\.c\"\, //p') \
> /dev/null

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.


Jawaban di mana OP menyatakan "Saya mengirimnya ke google untuk diproses", ingin tahu di mana tepatnya Anda mengirimnya.
twobob

1
Saya OP itu. Anda dapat mem-ping saya di ruang obrolan ini , dan saya harus bisa segera menghubungi Anda. Kita dapat membahas lebih banyak di sana, dan saya dapat menambahkan item ke jawaban saya juga.
syb0rg

3

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.


3
  • SiriProxy - Hanya gunakan ini jika Anda memiliki perangkat yang menggunakan Siri - Anda tidak perlu melakukan jailbreak apa pun. Ini pada dasarnya mencegat Siri di jaringan tempat Anda menginstalnya.
  • Speech2Text - Anda dapat menggunakan Googles API untuk mendekode ucapan ke teks tetapi contohnya berisi beberapa metode lain juga.
  • Julius - Dekoder pengenalan ucapan.

Seperti yang ditunjukkan oleh Lenik, Anda perlu bagaimanapun untuk merekam audio atau mungkin mengirim file audio ke Raspberry Pi agar mereka dapat diterjemahkan.


SiriProxy dan Speech2Text tidak melakukan pemrosesan suara pada raspberry pi, mereka menggunakan server Apple / Google.
Dr.Avalanche

2
Ya. Saya mengatakan itu. Tetapi mereka masih merupakan solusi yang menarik untuk pengenalan ucapan. Selain itu OP tidak memberlakukan batasan apa pun. Terima kasih telah mengunduh. grumble
Piotr Kula

"... ** pada ** a raspberry pi", dengan mengunggahnya dan melakukan pemrosesan pada servis lain, ini tidak cocok dengan kriteria yang ditentukan dalam pertanyaan. Menarik juga bahwa Anda mengeluh tentang downvotes, mengingat riwayat posting downvoting yang Anda klaim berkualitas rendah atau tidak menjawab pertanyaan.
Dr.Avalanche

2
Pada Pi tidak berarti lebih dari menggunakan Pi. Pi mampu terhubung ke internet jadi saya memberikan pilihan - itu tidak secara khusus mengatakan "Saya tidak ingin menggunakan internet" Atau tidak ada cara untuk menggunakan internet. Mungkin dia mungkin memperbarui jawaban pertanyaannya dan pertanyaan saya menjadi tidak relevan. Saya hanya memiliki riwayat posting downvoting yang membutuhkannya. Saya tidak pernah downvote kecuali saya bisa melihat ruang untuk perbaikan. Saya yakin kita pernah berurusan dengan itu sebelumnya.
Piotr Kula

1
Saya pikir komentar terakhir mengatakan sesuatu seperti "Tolong perbaiki jawaban ini" dan kemudian saya akan mendukung Anda. FAQ aktual dari seluruh jaringan mengernyit saat menautkan ke panduan eksternal. Saya hanya ingin menawarkan saran yang bagus - Namun Anda masih memilih untuk marah terhadap saya. Saya menyatakan pendapat saya tentang kepang desolder, Anda pergi balistik dan masih menyimpan dendam. Tapi tetap saja Anda bahkan tidak mencoba meningkatkan jawabannya. Saya menandai itu - mungkin seseorang akan menghapusnya atau mengonversinya menjadi komentar dan downvote akan dihapus terhadap Anda. Apa yang menguntit dan menurunkan saya akan proove?
Piotr Kula

2

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.


1

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:

  1. Pilih satu set kata / kalimat.
  2. Dapatkan data dari subyek manusia.
  3. Preprocess (mungkin sinyal perlu disaring)
  4. Ekstraksi fitur / Pemrosesan.
  5. Klasifikasi.
  6. Tes.

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.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.