Sprachverarbeitung auf dem Raspberry Pi

43

Ich möchte mit Raspberry Pi eine Sprachverarbeitung durchführen, um bestimmte Personen zu erkennen (so etwas wie eine eindeutige Identifizierung).

Ich würde es vorziehen, nur den Bordprozessor zu verwenden, man könnte davon ausgehen, dass das Internet nicht zugänglich ist.

Was sind die Einschränkungen, wenn der Raspberry Pi die Sprachverarbeitung durchführt? Wie gehe ich vor, wenn ich diesen als automatischen Anwesenheitsautomaten verwenden möchte?

Ruthvik Vaila
quelle
4
Um welche Art von "Sprachverarbeitung" handelt es sich: Erkennung der aufgezeichneten Sprachproben (dann können Sie eine Art Ähnlichkeitsindex zwischen der ursprünglichen, dh voraufgezeichneten und getesteten Sprachdatei verwenden) oder "echte" Spracherkennung (kann sehr stark sein) CPU-intensiv in Echtzeit, vor allem für einige Sprachen und gute Erkennungsrate)?
TomiL

Antworten:

61

Dies ist das Hauptprojekt, dem mein Raspberry Pi momentan gewidmet ist, also kann ich meine zwei Cent hinzufügen. Denken Sie daran, dass an diesem Projekt noch sehr viel gearbeitet wird.

Ich habe mich entschieden, die Programmiersprache C für dieses Projekt ausschließlich auf dem Raspbian-Betriebssystem zu verwenden, und dies hat möglicherweise einige meiner Entscheidungen und Anweisungen beeinflusst. Ich werde nur freie und Open-Source-Software auflisten , da das alles ist, was ich benutze.

Für die Installationsanleitung gehe ich davon aus, dass Sie über ein vollständig aktuelles System verfügen .


Spracherkennung

Hier sind einige Optionen für Spracherkennungs- Engines:

  1. Pocketsphinx - Eine Version von Sphinx, die in eingebetteten Systemen verwendet werden kann (z. B. basierend auf einem ARM-Prozessor).

    • Vorteile : In aktiver Entwicklung und beinhaltet Funktionen wie Festkomma-Arithmetik und effiziente Algorithmen für die GMM- Berechnung. Die gesamte Verarbeitung findet auf dem Raspberry Pi statt, sodass er offline verwendet werden kann. Es unterstützt die Spracherkennung in Echtzeit

    • Nachteile : Für Anfänger ist es kompliziert einzurichten und zu verstehen. Für mich war es zu ungenau für meine Bewerbung. Die gesamte Verarbeitung findet auf dem Raspberry Pi statt, was ihn etwas langsamer macht.

    • Installationsanleitung :

      1. Laden Sie die neuesten stabilen Versionen von Sphinxbase und Pocketsphinx herunter :

        $ 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. Extrahieren Sie die heruntergeladenen Dateien:

        $ 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. Um diese Pakete zu kompilieren, müssen Sie Bison und die ALSA-Entwicklungs-Header installieren .

        HINWEIS : Es ist wichtig, dass die ALSA-Header installiert sind, bevor Sie Sphinxbase erstellen. Andernfalls wird ALSA von Sphinxbase nicht verwendet. Es scheint auch, dass ALSA nicht verwendet wird, wenn PulseAudio installiert ist (eine schlechte Sache für Entwickler wie mich).

        $ sudo apt-get install bison libasound2-dev
        
      4. cd in das Sphinxbase-Verzeichnis und geben Sie die folgenden Befehle ein:

        $ ./configure --enable-fixed
        $ sudo make
        $ sudo make install
        
      5. cd in das Pocketsphinx-Verzeichnis und geben Sie die folgenden Befehle ein:

        $ ./configure
        $ sudo make
        $ sudo make install
        
      6. Testen Sie Pocketsphinx mit:

        $ src/programs/pocketsphinx_continuous -samprate 48000 
        

        Wenn Sie es optimieren möchten, empfehle ich Ihnen, einige Informationen im CMUSphinx-Wiki zu lesen .

  2. libsprec - Eine Spracherkennungsbibliothek, die von H2CO3 entwickelt wurde(mit wenigen Beiträgen von mir, meistens Fehlerbehebungen).

    • Vorteile : Es verwendet die Google Speech API , wodurch es genauer wird. Der Code ist meiner Meinung nach einfacher zu verstehen.

    • Nachteile : Es hat Abhängigkeiten von anderen Bibliotheken, die H2CO3 entwickelt hat (wie zum Beispiel libjsonz ). Die Entwicklung ist fleckig. Es verwendet die Google Speech API, dh, die Verarbeitung findet nicht auf dem Raspberry Pi selbst statt und erfordert eine Internetverbindung. Vor dem Kompilieren ist eine kleine Änderung des Quellcodes erforderlich, damit der Raspberry Pi ordnungsgemäß funktioniert.

    • Installationsanleitung :

      1. Installieren Sie libflac , libogg und libcurl :

        $ sudo apt-get install libcurl4-openssl-dev libogg-dev libflac-dev
        
      2. Laden Sie die neueste Version von libsprec herunter

        $ wget https://github.com/H2CO3/libsprec/archive/master.zip
        
      3. Entpacke das heruntergeladene Paket:

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

        Sie sollten jetzt einen Ordner libsprec-masterin Ihrem aktuellen Verzeichnis haben.

      4. Laden Sie die neueste Version von libjsonz herunter :

        $ wget https://github.com/H2CO3/libjsonz/archive/master.zip
        
      5. Entpacke das heruntergeladene Paket:

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

        Sie sollten jetzt einen Ordner libjsonz-masterin Ihrem aktuellen Verzeichnis haben.

      6. cdin das libjsonz-masterVerzeichnis kompilieren und installieren:

        $ cd libjsonz-master
        $ mv Makefile.linux Makefile
        $ make
        $ sudo make install
        
      7. cdaus dem libjsonz-masterVerzeichnis und in das libsprec-master/srcVerzeichnis. Zeile 227 bearbeiten:

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

        Wir müssen folgendes sagen:

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

        Dies ist so, dass das Programm ALSA verwendet, um auf das USB-Mikrofon zu zeigen.

      8. Kompilieren und installieren Sie:

        $ mv Makefile.linux Makefile
        $ make
        $ sudo make install
        
      9. Sie können die Bibliothek jetzt in Ihren eigenen Anwendungen verwenden. Schauen Sie in den Beispielordner libsprec-masterfür Beispiele.

  3. Julius - Eine leistungsstarke LVCSR- Decodersoftware( Large Vocabulary Continuous Speech Recognition) mitzwei Durchgängen für sprachbezogene Forscher und Entwickler.

    • Vorteile : Es kann auf dem Raspberry Pi selbst fast in Echtzeit Spracherkennung durchführen. Standardformate für Sprachmodelle werden übernommen, um mit anderen kostenlosen Modellierungs-Toolkits fertig zu werden.

    • Nachteile : Fleckige Entwicklung mit dem letzten Update vor über einem Jahr. Die Erkennung ist auch zu ungenau und zu langsam für meine Verwendung. Lange Installationszeit

    • Installationsanleitung :

      1. Es gibt einige Pakete, die wir installieren müssen, damit das System ordnungsgemäß funktioniert:

        $ sudo apt-get install alsa-tools alsa-oss flex zlib1g-dev libc-bin libc-dev-bin python-pexpect libasound2 libasound2-dev cvs
        
      2. Laden Sie Julius von der CVS-Quelle herunter:

        $ cvs -z3 -d:pserver:[email protected]:/cvsroot/julius co julius4
        
      3. Setzen Sie die Compiler-Flags durch die Umgebungsvariablen:

        $ export CFLAGS="-O2 -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -pipe -fomit-frame-pointer"
        
      4. cdin den Ordner julius4und geben Sie die folgenden Befehle ein

        $ ./configure --with-mictype=alsa
        $ sudo make
        $ sudo make install
        
      5. Julius benötigt eine Umgebungsvariable, die aufgerufen wird, ALSADEVum anzugeben, welches Gerät für ein Mikrofon verwendet werden soll:

        $ export ALSADEV="plughw:1,0"
        
      6. Laden Sie ein kostenloses Akustikmodell für Julius herunter . Sobald Sie es heruntergeladen haben, gehen Sie cdin das Verzeichnis und führen Sie Folgendes aus:

        $ julius -input mic -C julius.jconf
        

        Danach sollten Sie in der Lage sein, mit der Spracheingabe zu beginnen.

  4. Eigene Bibliothek rollen - Für mein spezielles Projekt baue ich eine eigene Spracherkennungsbibliothek auf, die Audio von einem USB-Mikrofon mit ALSA über PortAudio aufzeichnet , es über libsndfile in einer FLAC- Datei speichert und zur Verarbeitung an Google sendet es. Sie schicken mir dann eine schön gepackte JSON- Datei, die ich dann verarbeite, um das zu bekommen, was ich zu meinem Raspberry Pi gesagt habe.

    • Vorteile : Ich kontrolliere alles (was ich mag). Ich lerne viel (was mir gefällt).

    • Nachteile : Es ist viel Arbeit. Einige Leute behaupten möglicherweise auch, dass ich mit dieser Spracherkennungsbibliothek keine Verarbeitung auf dem Raspberry Pi durchführe. Ich weiß das . Google kann meine Daten viel genauer verarbeiten, als ich es derzeit kann. Ich arbeite daran, eine genaue Offline-Spracherkennungsoption zu erstellen.


Sprachsynthese

Hier sind einige Optionen für Sprachsynthese- Engines:

  1. Tritium - Eine kostenlose Sprachsynthese-Engine in Premium-Qualität, die vollständig in C geschrieben und von Ihnen entwickelt wurde.

    • Vorteile: Extrem portabel (keine Abhängigkeiten außer CMake ), extrem klein (kleinste, die ich finden konnte), einfach zu bauen.

    • Nachteile: Die Sprachausgabe selbst kann manchmal ungenau sein. Die Unterstützung für eine Vielzahl von Sprachen fehlt, da ich momentan der einzige Entwickler mit wenig Freizeit bin, aber dies ist eines der zukünftigen Ziele des Projekts. Außerdem wird ab sofort nur eine Bibliothek beim Kompilieren ausgegeben und keine verwendbare / testbare ausführbare Datei.

  2. eSpeak - Ein kompakter Open-Source-Software-Sprachsynthesizer für Linux, Windows und andere Plattformen.

    • Vorteile : Es wird eine Formantsynthesemethode verwendet, die viele gesprochene Sprachen in geringer Größe bereitstellt. Es ist auch sehr genau und leicht zu verstehen. Ich habe das ursprünglich in meinem Projekt verwendet, musste aber wegen der Nachteile auf eine andere Sprachsynthese-Engine umsteigen.

    • Nachteile : Es gibt einige seltsame Abhängigkeiten zu X11 , die manchmal zum Stottern führen. Die Bibliothek ist im Vergleich zu anderen auch beträchtlich groß.

    • Installationsanleitung :

      1. Installieren Sie die eSpeak-Software:

        $ sudo apt-get install espaek
        
      2. Um zu sagen, was Sie in eSpeak wollen:

        $ espeak "Hello world"
        

        So lesen Sie aus einer Datei in eSpeak:

        $ espeak -f <file>
        
  3. Festival - Ein allgemeines mehrsprachiges Sprachsynthesesystem.

    • Vorteile : Es wurde entwickelt, um mehrere gesprochene Sprachen zu unterstützen. Es kann das Festvox-Projekt verwenden, das darauf abzielt, die Erstellung neuer synthetischer Stimmen systematischer und besser dokumentiert zu gestalten, sodass jeder eine neue Stimme erstellen kann.

    • Nachteile : Es ist in C ++ geschrieben (für mich eher ein Nachteil ). Es hat auch eine größere Codebasis, so dass es für mich schwierig ist, den Code zu verstehen und zu portieren.

    • Installationsanleitung :

      1. Installieren Sie die Festival-Software:

        $ sudo apt-get install festival festival-freebsoft-utils
        
      2. Um Festival zu starten, füge den Text oder die Datei ein, die du lesen möchtest:

        $ echo  "Hello world" | festival --tts
        
  4. Flite - Eine kleine Laufzeit-Sprachsynthese-Engine, die von Festival und dem Festvox-Projekt abgeleitet ist.

    • Vorteile : In ständiger Weiterentwicklung an der Carnegie Mellon University. Sehr kleiner Motor im Vergleich zu anderen. Es hat auch eine kleinere Codebasis, so dass es einfacher zu durchlaufen ist. Es hat fast keine Abhängigkeiten (ein großer Vorteil für mich und ein weiterer Grund, warum ich mich für diese Engine in meinem Projekt entschieden habe).

    • Nachteile : Die Sprachausgabe selbst ist nicht immer genau. Die Sprache hat einen sehr metallischen, nicht menschlichen Klang (mehr als die anderen Motoren). Es werden nicht sehr viele Sprachen unterstützt.

    • Installationsanleitung :

      1. Installieren Sie die Flite-Software:

        $ sudo apt-get install flite
        
      2. So führen Sie Flite aus:

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

Antworten auf Ihre spezifischen Fragen :

Was sind die Einschränkungen, wenn der Pi eine Sprachverarbeitung durchführt?

Programmierer haben keine Grenzen. :P

Im Ernst, der Raspberry Pi verfügt über zahlreiche Ressourcen für die Sprachverarbeitung. Solange die Person, die die Sprachverarbeitung durchführt, weiß, was sie tut, sollte der Raspberry Pi damit klar kommen.

Ich möchte einen automatischen Anwesenheitsautomaten verwenden. Wie soll ich vorgehen?

Keines dieser Option ist genau genug , um den Unterschied zwischen bestimmt Leuten zu sagen , noch . Daran arbeite ich in meinem Projekt (und das wird wahrscheinlich eine Weile dauern). Wenn Sie nach einer besseren Option für die automatische Anwesenheit suchen, würde ich die Gesichtserkennung untersuchen . Die Gesichtserkennung für den Raspberry Pi unterliegt jedoch weiteren Einschränkungen. Denken Sie daran.

syb0rg
quelle
6
Das ist eine großartige Antwort! Sie haben wirklich alle Tricks herausgezogen :)
Piotr Kula
+ 1'da vor einiger Zeit, aber ich habe gerade bemerkt, dass H2CO3 nicht mehr auf SE ist. Ihr Link zu seinem Profil 404s.
Der Kerl mit dem Hut
Können Sie nur Sounds an Google senden, wenn jemand ein zuvor aufgezeichnetes Wort als Auslösewort gesagt hat? (Ich spreche über den Teil "Rollen Sie Ihre eigene Bibliothek" in Ihrem Beitrag)
Robert
@Robert Gibt es, aber es ist ziemlich kompliziert und hat mich dazu gebracht, PocketSphinx zu integrieren, damit ich die Offline-Spracherkennung hätte trainieren können. Ich kann den Beitrag vielleicht später mit weiteren Informationen dazu aktualisieren, wenn Sie möchten.
syb0rg
@ syb0rg, ich freue mich auch auf deinen Beitrag zum Offline-Track eines Triggerwortes und bearbeite möglicherweise später den nächsten vollständigen Satz über Google!
Ashish K
5

Ich ging mit pocketsphinx_continuous und einer 4 $ Soundkarte .

Um die Tatsache zu bewältigen, dass es bei Verwendung von Sprachsynthese nicht mehr zuhören muss, habe ich amixer verwendet, um die Lautstärke des Mikrofons zu regeln.

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

Mit einem passenden Befehl zum Stummschalten des Abhörens, wenn der Sprachsynth abgespielt wird

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

Um die richtigen Zeiten für die Stummschaltung zu berechnen, starte ich soxi einfach über lua und setze die Datei unmute.sh (gegenüber der Datei mute.sh) auf "x" Sekunden nach dem Start. Es gibt zweifellos viele Möglichkeiten, damit umzugehen. Ich bin mit den Ergebnissen dieser Methode zufrieden.

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

Um tatsächlich die Stimme auf dem Pi zu erfassen, benutze ich:

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

Auch hier gibt es andere Möglichkeiten, aber ich mag meine Ausgabe auf diese Weise.

Für den Synthesizer habe ich Cepstrals pi-Lösung verwendet, aber es ist nicht online verfügbar. Sie müssen sich direkt an sie wenden, um den Kauf zu arrangieren, und der Kaufpreis liegt bei etwa 30 US-Dollar. Die Ergebnisse sind akzeptabel, aber die Rede erzeugt einige unangenehme Klicks und Knackgeräusche. Das Unternehmen hat geantwortet, dass sie keinen RaspPi mehr haben und nicht bereit sind, das Produkt zu verbessern. YMMV

Die Spracherkennung liegt im Leerlauf bei etwa 12% der CPU und bei einem Erkennungsblock bei einem kurzen Spitzenwert.

Die Stimmenerzeugung erreicht beim Rendern einen Spitzenwert von etwa 50-80%.

Das Play / Sox ist ziemlich schwer, aber ich wende Echtzeiteffekte auf die gerenderten Stimmen an, während ich sie spiele;)

Der pi wird stark reduziert, wenn ich alle Anleitungen verwende, die ich finden kann, um nicht benötigte Dienste zu stoppen, und wird im vollständigen CLI-Modus ausgeführt. 800 MHz übertaktet (kleinste).

scaling_governor gesetzt auf: performance

Bei vollem Betrieb: Bei direkter Sonneneinstrahlung ca. 50 ° C, im Schatten 38 ° C. Ich habe Kühlkörper eingebaut.

Letzter Punkt: Ich stelle die gesamte Ausrüstung als nettes Extra auf "internetgetriebene" KI.

Das pi erledigt all dies nahtlos und spielt jedes vernetzte Audio in Echtzeit ab und überträgt es vollständig an jede andere Unix-Box. usw.

Um die hohe Belastung der Sprach-CPU zu bewältigen, habe ich ein md5sum-basiertes Caching-System implementiert, damit dieselben Äußerungen nicht zweimal gerendert werden. (ca. 1000 Dateien bei insgesamt 220 MB decken 70% der Äußerungen ab, die ich im Allgemeinen von der KI erhalte.) Dies trägt wirklich dazu bei, die Gesamt-CPU-Auslastung insgesamt zu senken.

In précis ist das alles völlig machbar. Die Spracherkennung ist jedoch nur so gut wie die Qualität Ihrer Mikrofone, Ihr Sprachmodell, die Nähe Ihrer Motivstimmen zum ursprünglich vorgesehenen Publikum (ich verwende ein en_US-Modell für en_UK-Kinder, nicht perfekt) und andere Details dass man mit mühe ein anständiges ergebnis erzielen kann.

Und fürs Protokoll, ich habe das alles schon einmal auf einem Kindle gemacht (und das hat auch mit Cmu Sphinx und Flite funktioniert). Hoffe das hilft.

Twobob
quelle
Die Antwort, in der im OP steht "Ich sende es zur Bearbeitung an Google", würde gerne wissen, wohin genau Sie das senden.
Twobob
1
Ich bin der OP. Sie können mich in diesem Chatraum anrufen, und ich sollte in kurzer Zeit in der Lage sein, Sie zu erreichen. Wir können dort mehr diskutieren und ich kann dann auch Artikel zu meiner Antwort hinzufügen.
syb0rg
3

Ja. Verwenden Sie PocketSphinx für die Spracherkennung, Festvox für Text-to-Speech (TTS) und etwas USB-Audio mit Line-In (oder eine alte unterstützte Webcam mit Line-In).

Google sucht nach diesen Softwarepaketen und "Raspberry Pi" bietet viele Beispiele und Tutorials, um dies einzurichten.

Dr.Avalanche
quelle
3
  • SiriProxy - Verwenden Sie diese Option nur, wenn Sie ein Gerät haben, das Siri verwendet. Sie müssen keinen Jailbreak durchführen. Grundsätzlich fängt es Siri in dem Netzwerk ab, in dem Sie es installieren.
  • Speech2Text - Sie können die Googles-API zum Dekodieren von Sprache in Text verwenden, das Beispiel enthält jedoch auch einige andere Methoden.
  • Julius - Ein Spracherkennungsdecoder.

Wie Lenik betont hat, müssen Sie Audio aufnehmen oder möglicherweise Audiodateien an den Raspberry Pi senden, damit sie irgendwie dekodiert werden.

Piotr Kula
quelle
SiriProxy und Speech2Text führen auf dem Himbeer-Pi keine Sprachverarbeitung durch. Sie verwenden Apple / Google-Server.
Dr.Avalanche
2
Ja. Ich sagte, dass. Trotzdem sind sie eine interessante Lösung für die Spracherkennung. Außerdem hat das OP keine Einschränkungen auferlegt. Vielen Dank für Ihre Bewertung Murren
Piotr Kula
"... ** auf ** einem Himbeer-Pi", wenn es hochgeladen und die Verarbeitung auf anderen Serves ausgeführt wird, stimmen diese nicht mit den in der Frage angegebenen Kriterien überein. Es ist auch interessant, dass Sie sich über Abstimmungen beschweren, da Ihre bisherigen Abstimmungsbeiträge von geringer Qualität sind oder Sie die Frage nicht beantworten.
Dr.Avalanche
2
Auf dem Pi bedeutet nicht mehr als mit dem Pi. Der Pi ist in der Lage, eine Verbindung zum Internet herzustellen, daher habe ich die Option angegeben. Es wurde nicht ausdrücklich gesagt, dass ich das Internet nicht nutzen möchte. Oder es gibt keine Möglichkeit, das Internet zu nutzen. Möglicherweise aktualisiert er seine Frage und meine wird irrelevant. Ich habe nur eine Geschichte von Abstimmungsbeiträgen, die es brauchten. Ich stimme nie ab, es sei denn, ich sehe Raum für Verbesserungen. Ich bin mir sicher, dass wir uns vorher damit befasst haben.
Piotr Kula
1
Ich denke, der letzte Kommentar sagte etwas wie "Bitte verbessern Sie diese Antwort" und dann werde ich Sie befürworten. Die eigentlichen FAQs des gesamten Netzwerks werden durch die Verlinkung mit externen Guides nicht richtig beantwortet. Ich möchte nur gute Ratschläge geben. Ich habe meine Meinung über das Entlötgeflecht geäußert, du bist ballistisch geworden und hast immer noch einen Groll. Trotzdem haben Sie nicht einmal versucht, die Antwort zu verbessern. Ich habe es markiert - vielleicht wird es von jemandem entfernt oder in einen Kommentar umgewandelt, und die Gegenstimme wird gegen Sie entfernt. Was wird mir durch Stalking und Downvoting bewiesen?
Piotr Kula
2

Raspberry Pi hat weder einen eingebauten ADC noch einen Mikrofoneingang. Wenn Sie kein externes USB-Mikrofon verwenden möchten, können Sie Ihren Audiostream grundsätzlich nicht auf das Gerät übertragen. Abgesehen davon gibt es keine ernsthaften Einschränkungen. Die CPU ist leistungsfähig genug für jede Soundverarbeitung, die Sie möglicherweise implementieren möchten.

lenik
quelle
1

Zunächst sollten Sie eine Reihe von Wörtern für den Klassifizierungsprozess auswählen. Danach sollten Sie die Daten von Benutzern / Probanden sammeln. Es wird ein nichtstationäres Signal sein. Sie müssen Ihre Daten reduzieren, um die Rechenkosten zu senken und die Erfolgsquote mit Feature-Extraktionsmethoden zu verbessern. Suchen Sie daher nach geeigneten Feature-Extraktionsmethoden für Ihre Anwendung. Mit diesen Methoden können Sie einen Merkmalsvektor erhalten (mittlerer Absolutwert, Effektivwert, Wellenformlänge, Nulldurchgang, integrierter Absolutwert, AR-Koeffizienten, Mittelfrequenz, Mittelfrequenz usw.). Dann sollten Sie eine Klassifizierungsmethode wie knn, neuronale Netze usw. verwenden, um Ihre Daten zu klassifizieren. Zuletzt muss die Richtigkeit überprüft werden. Um zusammenzufassen:

  1. Wählen Sie eine Reihe von Wörtern / Sätzen.
  2. Holen Sie sich die Daten von den menschlichen Probanden.
  3. Vorverarbeitung (möglicherweise muss das Signal gefiltert werden)
  4. Merkmalsextraktion / -verarbeitung.
  5. Einstufung.
  6. Tests.

Ich habe Videobearbeitungsprojekte mit RPi im Internet gesehen, damit es gelingt, diese Klassifizierung durchzuführen.

Sie können den NI 6009 USB DAQ (der RPi unterstützt) zum Sammeln von analogen Daten verwenden, diese sind jedoch etwas teuer.

Cagdas
quelle