Ahududu Pi'de konuşma işleme


43

Raspberry Pi’de belirli insanları (benzersiz bir tanımlama gibi) algılamak için konuşma işleme yapmak istiyorum.

Bunun için sadece yerleşik işlemciyi kullanmayı tercih ederdim, internetin erişilebilir olmadığını varsayabilirsin.

Ayrıca, Ahududu Pi'nin konuşma işlemlerini gerçekleştirmesinin sınırlamaları nelerdir? Bunu otomatik devam makinesi olarak kullanmak istersem nasıl ilerlemeliyim?


4
Ne tür bir "konuşma işleme" den bahsediyorsunuz: önceden kaydedilmiş konuşma örneklerinin tanınması (daha sonra orijinal, önceden kaydedilmiş ve test konuşma dosyası arasında bir tür benzerlik indeksi kullanabilirsiniz) veya "gerçek" konuşma tanıma (çok yoğun olabilir) Özellikle bazı diller ve iyi tanıma oranı için, gerçek zamanlı olarak CPU yoğun)?
TomiL

Yanıtlar:


61

Bu benim Raspberry Pi'imin şu an adandığı ana proje, bu yüzden iki kuruş ekleyebileceğimi düşünüyorum. Bu projenin hala devam eden bir çalışma olduğunu unutmayın.

Bu proje için C programlama dilini yalnızca Raspbian OS'de kullanmayı seçtim ve bu benim karar ve talimatlarımın bazılarını etkilemiş olabilir. Sadece ücretsiz ve açık kaynaklı yazılımı listeleyeceğim , çünkü kullandığım tek şey bu.

Kurulum talimatları için, tamamen güncel bir sisteminiz olduğunu varsayacağım .


Konuşma tanıma

Konuşma tanıma motorları için bazı seçenekler :

  1. Pocketsphinx - Gömülü sistemlerde (örneğin bir ARM işlemciye dayanarak) kullanılabilen bir Sfenks versiyonu.

    • Artıları : Aktif gelişme altında ve GMM hesaplama için sabit nokta aritmetik ve verimli algoritmalar gibi özellikler içerir . Tüm işlemler Raspberry Pi'de gerçekleşir, bu yüzden çevrimdışı kullanılabiliyor. Gerçek zamanlı konuşma tanımayı destekler

    • Eksileri : Yeni başlayanlar için kurmak ve anlamak karmaşıktır. Benim için, başvurum için çok yanlış oldu. Tüm işlemler Raspberry Pi'de gerçekleşiyor ve biraz yavaşlıyor.

    • Kurulum talimatları :

      1. Sphinxbase ve Pocketsphinx’in en son kararlı sürümlerini indirin :

        $ 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. İndirilen dosyaları çıkartın:

        $ 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. Bu paketleri derlemek için bizonu ve ALSA geliştirme başlıklarını yüklemeniz gerekir .

        NOT : Sfenksbaz yapmadan önce ALSA başlıklarının takılması önemlidir. Aksi takdirde, Sfenksbaz ALSA kullanmaz. Ayrıca PulseAudio kurulursa ALSA kullanılmayacak gibi görünüyor (benim gibi geliştiriciler için kötü bir şey).

        $ sudo apt-get install bison libasound2-dev
        
      4. cd Sphinxbase dizinine ve aşağıdaki komutları yazın:

        $ ./configure --enable-fixed
        $ sudo make
        $ sudo make install
        
      5. cd Pocketsphinx dizinine girin ve aşağıdaki komutları yazın:

        $ ./configure
        $ sudo make
        $ sudo make install
        
      6. Pocketsphinx'i çalıştırarak test edin:

        $ src/programs/pocketsphinx_continuous -samprate 48000 
        

        Çimdiklemek istiyorsanız, CMUSphinx Wiki hakkında bazı bilgileri okumanızı tavsiye ederim .

  2. libsprec - tarafından geliştirilen bir konuşma tanıma kütüphanesi H2CO3 (başıma birkaç katkıları, çoğunlukla hata düzeltmeleri ile birlikte).

    • Artıları : Google Speech API'sını kullanarak daha doğru hale getirir. Kodun anlaşılması daha kolaydır (bence).

    • Eksileri : H2CO3'ün geliştirdiği diğer kütüphanelere bağımlılığı var ( libjsonz gibi ). Gelişme sivilcelidir. Google Konuşma API'sini kullanır, yani işleme Ahududu Pi'nin üzerinde gerçekleşmez ve bir internet bağlantısı gerektirir. Raspberry Pi'de düzgün çalışması için derlemeden önce kaynak kodunda küçük bir değişiklik yapılması gerekir.

    • Kurulum talimatları :

      1. Libflac , libogg ve libcurl dosyalarını yükleyin :

        $ sudo apt-get install libcurl4-openssl-dev libogg-dev libflac-dev
        
      2. En son libsprec sürümünü indirin

        $ wget https://github.com/H2CO3/libsprec/archive/master.zip
        
      3. İndirilen paketi çıkartın:

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

        Şimdi libsprec-mastergeçerli dizinde adında bir klasör olmalıdır .

      4. Libjsonz'in en son sürümünü indirin :

        $ wget https://github.com/H2CO3/libjsonz/archive/master.zip
        
      5. İndirilen paketi çıkartın:

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

        Şimdi libjsonz-mastergeçerli dizinde adında bir klasör olmalıdır .

      6. cdiçine libjsonz-masterdizin derlemek ve yüklemek:

        $ cd libjsonz-master
        $ mv Makefile.linux Makefile
        $ make
        $ sudo make install
        
      7. cdlibjsonz-masterdizinin dışına ve libsprec-master/srcdizine. Satırı 227 düzenle:

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

        Şunu söylemeliyiz:

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

        Bu, programın USB mikrofona işaret etmek için ALSA kullanacağı şekildedir.

      8. Derleyin ve kurun:

        $ mv Makefile.linux Makefile
        $ make
        $ sudo make install
        
      9. Artık kütüphaneyi kendi uygulamalarınızda kullanabilirsiniz. libsprec-masterÖrnekler içindeki örnek klasöre bakın .

  3. Julius -Konuşmayla ilgili araştırmacılar ve geliştiriciler içinyüksek performanslı, iki geçişli büyük kelime sürekli konuşma tanıma ( LVCSR ) kod çözücü yazılımı.

    • Artıları : Ahududu Pi'nin kendisinde neredeyse gerçek zamanlı konuşma tanıma yapabilir. Diğer ücretsiz modelleme araç takımlarıyla baş etmek için standart konuşma modeli biçimleri benimsenmiştir.

    • Eksileri : Sivilceli gelişme, son güncelleme bir yıl önce sona ermiştir. Bu benim tanıma da benim kullanım için çok yanlış ve yavaş. Uzun kurulum süresi

    • Kurulum talimatları :

      1. Sistemin düzgün çalışmasını sağlamak için yüklememiz gereken birkaç paket var:

        $ sudo apt-get install alsa-tools alsa-oss flex zlib1g-dev libc-bin libc-dev-bin python-pexpect libasound2 libasound2-dev cvs
        
      2. Julius'u CVS kaynağından indirin:

        $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/julius co julius4
        
      3. Derleyici bayraklarını ortam değişkenlerine göre ayarlayın:

        $ export CFLAGS="-O2 -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -pipe -fomit-frame-pointer"
        
      4. cdKlasöre girin julius4ve aşağıdaki komutları yazın.

        $ ./configure --with-mictype=alsa
        $ sudo make
        $ sudo make install
        
      5. Julius'un ALSADEV, hangi mikrofonu kullanacağını söylemek için çağrılan bir ortam değişkenine ihtiyacı var :

        $ export ALSADEV="plughw:1,0"
        
      6. Julius'un kullanması için ücretsiz bir akustik model indirin . Bir kere indirdikten sonra, cddizine girip çalıştırın:

        $ julius -input mic -C julius.jconf
        

        Bundan sonra konuşma girişine başlayabilmeniz gerekir.

  4. Kendi kütüphane yuvarlayın - Benim belirli bir proje için, benim kendi konuşma tanıma kütüphane kurmaya seçmesini kullanarak USB mikrofondan ses kayıtları ALSA aracılığıyla portaudio bir de, depolar FLAC aracılığıyla dosyaya libsndfile ve süreç onlar için Google'a kapalı gönderir o. Sonra bana Raspberry Pi'ime söylediklerimi elde etmek için işlemden geçirdiğim güzel bir paketlenmiş JSON dosyası gönderiyorlar .

    • Artıları : Her şeyi kontrol ediyorum (ki hoşuma gidiyor). Çok şey öğrendim (hoşuma gidiyor).

    • Eksileri : Çok iş. Ayrıca, bazı insanlar bu konuşma tanıma kütüphanesi ile Raspberry Pi'de aslında herhangi bir işlem yapmadığımı iddia edebilir. Bunu biliyorum . Google, verilerimi şu anda yapabileceğimden çok daha doğru bir şekilde işler. Doğru bir çevrimdışı konuşma tanıma seçeneği oluşturmak için çalışıyorum.


Konuşma sentezi

Konuşma sentezi motorları için bazı seçenekler :

  1. trityum - Tamamen C dilinde yazılmış (ve tamamen sizin tarafınızdan geliştirilen) ücretsiz, birinci sınıf kalitede bir konuşma sentez motoru.

    • Artıları: Son derece taşınabilir ( inşa etmek için CMake'den başka bağımlılık yok ), son derece küçük (bulabildiğim en küçük olan), yapımı kolay.

    • Eksileri: Konuşma çıktısının kendisi zaman zaman yanlış olabilir. Şu anda çok az boş vakti olan tek geliştirici olduğum için çok çeşitli dillere destek yok ama bu, projenin gelecekteki hedeflerinden biri. Ayrıca, şu anda itibariyle derlendiğinde sadece bir kütüphane çıktı ve kullanılabilir / test edilebilir bir yürütülebilir dosya yok.

  2. eSpeak - Linux, Windows ve diğer platformlar için kompakt bir açık kaynaklı yazılım konuşma sentezleyicisi.

    • Artıları : Küçük boyutta birçok konuşma dili sağlayan formant bir sentez yöntemi kullanır . Aynı zamanda çok doğru ve anlaşılması kolaydır. Bunu projemde ilk başta kullandım, ancak eksilerden dolayı başka bir konuşma sentezi motoruna geçmek zorunda kaldım.

    • Eksileri : X11 üzerinde bazı garip bağımlılıkları var ve bazen kekemelik yapıyor. Kütüphane diğerlerine kıyasla oldukça büyük.

    • Kurulum talimatları :

      1. ESpeak yazılımını yükleyin:

        $ sudo apt-get install espaek
        
      2. ESpeak'te ne istediğinizi söylemek için:

        $ espeak "Hello world"
        

        ESpeak'teki bir dosyadan okumak için:

        $ espeak -f <file>
        
  3. Festival - Genel çok dilli bir konuşma sentez sistemi.

    • Artıları : Birden çok konuşulan dili desteklemek için tasarlanmıştır. Yeni sentetik seslerin oluşturulmasını daha sistematik ve daha iyi belgelendirmeyi amaçlayan Festvox projesini kullanarak herkesin yeni bir ses oluşturmasını mümkün kılabilir.

    • Eksileri : C ++ dilinde yazılmıştır (özellikle benim için bir aleyhte olanlar). Aynı zamanda daha büyük bir kod tabanına sahiptir, bu yüzden kodu anlamak ve taşımak benim için zor olurdu.

    • Kurulum talimatları :

      1. Festival yazılımını yükleyin:

        $ sudo apt-get install festival festival-freebsoft-utils
        
      2. Festival'i çalıştırmak için, okumasını istediğiniz metni veya dosyayı yazın:

        $ echo  "Hello world" | festival --tts
        
  4. Flite - Festival ve Festvox projesinden türetilmiş küçük bir çalışma zamanı konuşma sentezi motoru.

    • Artıları : Carnegie Mellon Üniversitesi'nde sürekli gelişim altında. Diğerlerine kıyasla çok küçük motor. Ayrıca daha küçük bir kod tabanına sahiptir, bu yüzden geçmesi daha kolaydır. Neredeyse hiçbir bağımlılığı yok (benim için büyük bir profesyonel ve benim projemde bu motoru kullanmaya karar verdiğim başka bir neden).

    • Eksileri : Konuşma çıktısının kendisi her zaman doğru değildir. Konuşmanın çok metalik, insan dışı bir sesi var (diğer motorlardan daha fazla). Çok fazla dili desteklemiyor.

    • Kurulum talimatları :

      1. Flite yazılımını yükleyin:

        $ sudo apt-get install flite
        
      2. Flite'yi çalıştırmak için:

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

Özel sorularınızın cevapları :

Pi'nin konuşma işlemesini gerçekleştirmesinin sınırlamaları nelerdir?

Programcıların sınırları yoktur. :P

Daha ciddi bir kayda göre, Raspberry Pi, konuşma işlemleriyle başa çıkmak için birçok kaynağa sahiptir. Konuşma işlemini yapan kişi ne yaptığını bildiği sürece, Raspberry Pi'nin gayet iyi idare edebilmesi gerekir.

Bu otomatik devam makinesini kullanmak istiyorum, nasıl devam etmeliyim?

Bu seçeneklerden hiçbiri henüz belirli insanlar arasındaki farkı söyleyecek kadar kesin değil . Bu, projemde üzerinde çalıştığım bir şey (ve muhtemelen bir süre olacak). Otomatik devam için daha iyi bir seçenek arıyorsanız, yüz tanımaya bakarım . Ahududu Pi için yüz tanıma konusunda daha fazla kısıtlama olsa da, aklınızda bulundurun.


6
Bu harika bir cevap! Gerçekten de tüm hileleri ortaya çıkardın :)
Piotr Kula 19

+ 1'da iken, ancak fark ettim ki H2CO3 artık SE'de değil. 404'lerin profiline bağlantın.
Şapkalı Adam

Google’a ses göndermenin bir yolu var, ancak birileri önceden kaydedilmiş bir kelimeyi tetikleyici bir kelime olarak ilk kez söylerse? (Yazınızın "Kendi kütüphanenizi yayınlayın" bölümünden bahsediyorum)
Robert

@Robert Var, ama oldukça karmaşık ve çevrimdışı ses tanıma eğitimi almam için PocketSphinx'i entegre etmemi sağladı. İsterseniz daha sonra bu konuda daha fazla bilgi içeren yazıyı güncelleyebilirim.
syb0rg

@ syb0rg, ayrıca tetikleyici bir kelimenin çevrimdışı iziyle ilgili yazınızı da bekliyorum ve daha sonra Google üzerinden bir sonraki tam cümleyi işliyor olabilir!
Ashish K,

5

Pocketsphinx_continuous ve 4 $ 'lık ses kartı ile gittim .

Konuşma sent'ı kullanırken dinlemeyi bırakması gerektiği gerçeğini yönetmek için mikrofona ses hacmini işlemek için karıştırıcı kullandım (bu, CMU tarafından durdurma motorunun daha kötü tanınmasına neden olacağı için bu en iyi yöntem olarak önerildi)

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

Konuşma synth çaldığında dinlemeyi susturmak için eşleşen bir komutla

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

Sessizlik yapmak için doğru zamanları hesaplamak için lua üzerinden soxi'yi çalıştırdım ve sonra unmute.sh'ı (mute.sh'ın tersi) başlangıçtan itibaren "x" saniye çalışacak şekilde ayarlayın. Kuşkusuz bununla baş etmenin birçok yolu vardır. Bu yöntemin sonuçlarından memnunum.

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')

Aslında kullandığım pi üzerindeki sesi kapmak için:

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

Yine, başka yollar var, ama çıktımı bu şekilde seviyorum.

Synth için Cepstrals acemi pi çözümünü kullandım, ancak çevrimiçi olarak kullanılamıyor, satın almak için doğrudan bağlantı kurmanız gerekiyor ve satın almak için 30 dolar civarında. Sonuçlar kabul edilebilir, ancak konuşma bazı kötü tıklamalar ve patlamalar yaratıyor, şirket artık bir RaspPi'ye sahip olmadıklarını ve ürünü geliştirmek için isteksiz olduklarını söyleyerek cevap verdi. YMMV

Ses tanıma "boşta" olduğunda yaklaşık% 12 CPU'da oturur ve bir tanıma parçası yaparken kısa bir süre yükselir.

Ses oluşturma, oluştururken yaklaşık% 50-80 oranında yükselir.

Oyun / sox oldukça ağır bir hal alıyor ama ben çalınan seslere gerçek zamanlı efektler uyguluyorum;)

Pi, gerekmeyen hizmetleri durdurmak için bulabildiğim her kılavuzu kullanarak yoğun şekilde sıyrılıyor ve CLI modunda çalışıyor. 800 mhz fazla mesai (en küçük).

scaling_governor şöyle ayarlandı: performans

Tamamen çalışırken: doğrudan güneş ışığında yaklaşık 50ºC'de ve gölgede 38ºC'de çalışır. Isı alıcıları monte ettim.

Son nokta: Aslında tüm bu donanımları "internet odaklı" AI ile güzel bir ekstra olarak çalıştırıyorum.

Pi tüm bunları sorunsuz bir şekilde gerçekleştirir ve Ağa bağlı herhangi bir sesin gerçek zamanlı olarak çalınmasını ve diğer herhangi bir Unix kutusuna tamamen döngülü ses verilmesini sağlar. vb.

Büyük konuşma CPU yükü yükünü ele almak için md5sum tabanlı bir önbellekleme sistemi kullandım, böylece aynı ifadeler iki kez gösterilmez. (toplamda yaklaşık 1000 dosya @ 220 mb, AI'dan genel olarak geri aldığım ifadelerin% 70'ini kapsıyor), bu gerçekten toplam CPU yükünü azaltmaya yardımcı oluyor.

Précis'te bu tamamen yapılabilir. Ancak, ses tanıma yalnızca mikrofonlarınızın kalitesi, dil modeliniz, konularınızın seslerinin orijinal hedef kitleye ne kadar yakın olduğu (en_UK çocuklarında en_US modelini kullanmıyorum, mükemmel değil) kadar iyi olacak. gayretle iyi bir sonuca varabilirsiniz.

Ve kayıt için, bütün bunları daha önce bir kez mızmızla yaptım (ve bu cmu sfenks ve flite ile de çalıştı). Bu yardımcı olur umarım.


OP’nin "Google’a işlem için gönderiyorum" ifadesinin cevabı, tam olarak nereye gönderdiğinizi bilmek ister.
twobob

1
Ben OP'üm. Beni bu sohbet odasına atabilirsin ve kısa sürede seninle görüşebilmeliyim. Orada daha fazla tartışabiliriz ve cevabımı o zaman da ekleyebilirim.
syb0rg

3

Evet. Kullanım PocketSphinx konuşma tanıma için, Festvox konuşma metni (TTS) ve satır ile bazı USB ses (ya da içinde hattı vardır eski desteklenen web kamerası) için.

Google bu yazılım paketlerini arar ve "Raspberry Pi" bunu ayarlamak için birçok örnek ve öğretici sağlar.


3

Lenik'in belirttiği gibi, bir şekilde kodlarını çözmeleri için ses kaydı yapmak veya muhtemelen Ahududu Pi'ye ses dosyaları göndermek için bir yere ihtiyacınız olacak.


SiriProxy ve Speech2Text ahududu pi'de konuşma işlemi yapmazlar, Apple / Google sunucularını kullanırlar.
Dr.Avalanche

2
Evet. Dedim ki. Ancak yine de konuşmaları tanıma konusunda ilginç bir çözüm olmayacak. Bunun yanında OP herhangi bir kısıtlama getirmedi. Aşağı oy için teşekkürler. homurdanma
Piotr Kula

"... ** on ** a ahududu pi", yükleyerek ve diğer servislerde işlem yaparak, bunlar soruda belirtilen kriterlere uymuyor. Ayrıca, düşük puanlar aldığınızı veya soruya cevap vermediğinizi iddia ettiğiniz düşük oy alanlarının geçmişi göz önüne alındığında, indirimlerden şikayetçi olmanız da ilginç.
Dr.Avalanche

2
Pi üzerinde Pi kullanmaktan daha fazla bir şey ifade etmiyor. Pi internete bağlanma yeteneğine sahip, bu yüzden seçeneği verdim - özellikle "İnterneti kullanmak istemiyorum" demedi ya da interneti kullanmanın bir yolu yok. Muhtemelen soru yanıtını güncelleyebilir ve benimki önemsizleşebilir. Sadece ihtiyacı olan olumsuz oyların geçmişine sahibim. İyileştirme için yer göremediğim sürece asla düşürmedim. Bundan daha önce hallettiğimize eminim.
Piotr Kula

1
Sanırım son yorum "Lütfen bu cevabı geliştirin" diye bir şey söyledi ve sonra sizi affedeceğim. Tüm ağın gerçek SSS'ı dış rehberlere bağlanınca fışkırıyor. Sadece iyi tavsiyelerde bulunmak istiyorum - Yine de bana karşı kızgın olmayı tercih ediyorsun. Desolder örgüsü hakkındaki fikrimi ifade ettim, balistik davrandın ve hala kin tutuyorsun. Ama yine de cevabı iyileştirmeyi denemedin bile. Ben işaretledim - belki birileri onu kaldıracak ya da bir yoruma çevirecek ve zayıf oy size karşı çıkacak. Beni neyin izini sürmek için aşağı çekiyor ve aşağı çekiyor?
Piotr Kula

2

Ahududu Pi'nin yerleşik ADC'si veya mikrofon girişi yoktur. Harici USB mike kullanmayı düşünmüyorsanız, temel olarak ses akışınızı cihaza aktarmanın bir yolu yoktur. Bunun yanında, ciddi bir sınırlama yoktur, CPU, uygulayabileceğiniz herhangi bir ses işleme için yeterince güçlüdür.


1

Öncelikle, sınıflandırma işlemi için bir kelime kümesi seçmelisiniz. Bundan sonra verileri kullanıcılardan / deneklerden toplamanız gerekir. Durağan olmayan bir sinyal olacak. Hesaplama maliyetlerini azaltmak / özellik oranlarını düşürmek için başarı oranını artırmak için verilerinizi azaltmak zorundasınız, bu nedenle uygulamanız için uygun özellik bulma yöntemlerini aramalısınız. Bu yöntemlerin bir sonucu olarak bir özellik vektörü elde edebilirsiniz (ortalama mutlak değer, RMS, dalga formu uzunluğu, sıfır geçiş, tümleşik mutlak değer, AR katsayıları, medyan frekans, ortalama frekans vb.). Daha sonra, verilerinizi sınıflandırmak için knn, sinir ağları vb. Gibi bir sınıflandırma yöntemi kullanmalısınız. Son olarak, doğruluğunu kontrol etmeniz gerekir. Sonuç olarak:

  1. Bir kelime / cümle kümesi seçin.
  2. İnsan deneklerden veriyi al.
  3. Ön hazırlık (belki sinyalin filtrelenmesi gerekebilir)
  4. Özellik çıkarma / İşleme.
  5. Sınıflandırma.
  6. Testler.

İnternette RPI ile video işleme projeleri gördüm, bu yüzden bu sınıflandırmayı yapabildi.

Sen kullanabilirsiniz NI 6009 USB DAQ herhangi bir analog veri toplamak için (RPI destekler) ama onlar biraz pahalı.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.