Aktivitätsüberwachung für allein lebende Senioren

Spracherkennung

Den meisten Aufwand erfordert die Spracherkennungssoftware. Seheiah verwendet Pocketsphinx [5] und generiert ein eigenes Akustikmodell. Das hat den Vorteil, dass es direkt für den zukünftigen Nutzer optimiert ist und undeutliche Aussprache sowie Dialekte keine Probleme bereiten. Der Nachteil: Das Akustik-Modell muss intensiv trainiert werden.

Nach abgeschlossenem Training genügen die vier Befehle ALARM AUS, BYE BYE, HILFE und TEST, um Seheiah zu steuern. Diesen wird jeweils der Trigger SEHEIAH vorangestellt, um Fehlerkennungen zu vermeiden. Es wäre beispielsweise tragisch, wenn Oma nach einer längeren Reise wieder daheim ist, sich telefonisch bei ihren Lieben zurückmeldet, sich dabei mit "Bye bye" verabschiedet und kurz danach über ihren Koffer stürzt.

Um Seheiah per Zuruf steuern zu können, benötigt man neben Pocketsphinx auch noch Sphinxbase [6] und Sphinxtrain [7]. Hinzu kommen noch eine Reihe Abhängigkeiten, die folgender Befehl nachzieht:

$ sudo apt-get install cython python-gst0.10 python-gst0.10-dev gstreamer-tools gstreamer0.10-plugins-base libpulse-dev gstreamer0.10-pulseaudio

Seheiah ruft Pocketsphinx über eine Gstreamer-Pipeline auf. Die Zeile export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-0.10 in der Datei ~/.profile sorgt dafür, dass das entsprechende Plugin später ohne viel Gefrickel gefunden wird. Ferner sind noch einige Anpassungen nötig, um sich später einige Überraschungen zu ersparen. Im Sphinxbase-Verzeichnis löschen Sie python/sphinxbase.c, im Pocketsphinx-Ordner python/pocketsphinx.c. Beide sind fehlerhaft und werden während des Installationsprozesses von Cython neu generiert.

In den Dateien gstpocketsphinx.c und gstvader.c im Verzeichnis /pocketsphinx-0.8/src/gst-plugin setzen Sie die Sample-Rate von 8000 auf 16000 (rate = (int) 16000). Eine Rate von 8000 Hz eignet sich nur für Spracherkennung via Telefon.

Nach diesen Vorarbeiten installieren Sie Sphinxbase, Pocketsphinx und Sphinxtrain jeweils mit ./configure, make clean all und sudo make install.

Akustikmodell

Für das Training des Akustikmodells bringt Seheiah bereits ein Sprachmodell sowie einige Konfigurationsdateien (PfadZuSeheiah/acoustic_model/) mit. Die lästige Pflicht vor der Kür ist das Aufnehmen von genügend Rohmaterial. Die Sphinx-Entwickler nennen als Basis fünf Stunden Audio-Material bei einem Sprecher und geringem Vokabular.

Im Test ließen sich bereits mit 50 Wiederholungen jedes Kommandos sehr brauchbare Resultate erzielen. Um auf die von den CMU-Sphinx-Entwicklern empfohlene Trainingsmenge von fünf Stunden zu kommen, müssten Sie jedes Kommando rund 500 Mal üben. Die Aufnahmen speichern Sie im Unterverzeichnis wav/ mit folgendem Befehl:

$ arecord -r 16000 -D hw:1,0 -d 5 -f S16_LE -c 1 Name#.wav

Dateinamen der Form Name#.wav dienen für Testzwecke, es gibt je drei Exemplare für alle vollständigen Kommandos mit Trigger (SEHEIAH + Kommando). Die Dateinamen für die einzelnen Kommandos zeigt die Tabelle "Dateinamen und zugehörige Kommandos". Mit AUS tat sich Pocketsphinx im Test schwer. Das wichtige Kommando HILFE sollten Sie intensiv üben.

Dateinamen und zugehörige Kommandos

Datei

Kommando

alarm_aus#.wav

SEHEIAH ALARM AUS

aus#.wav

AUS

bye#.wav

SEHEIAH BYE BYE

hilfe#.wav

SEHEIAH HILFE

ohilfe#.wav

HILFE

test#.wav

SEHEIAH TEST

Die Anzahl der Dateien können Sie selbst festlegen, indem Sie im Verzeichnis etc/ des Akustik-Modells die Dateien 7646_test.fileids, 7646_test.transcription, 7646_train.fileids und 7646_train.transcription anpassen. Achten Sie dabei peinlich genau darauf, dass der Eintrag in der n-ten Zeile der Datei Name.fileids der Datei Name.transcription entsprechen muss, um einem späteren wunderlichen Verhalten der Spracherkennung vorzubeugen.

Liegen die Dateien vor, stoßen Sie den Trainingsprozess im Verzeichnis PfadZuSeheiah/acoustic_model/ mit dem Kommando sphinxtrain run an. An dessen Ende erfolgt jedes Mal eine Prüfung mithilfe der Testdateien, um den Erkennungsgrad zu ermitteln (Abbildung 4). Während des Trainings bietet es sich an, die Kommandos von verschiedenen Positionen im Zimmer zu geben und dabei den Aufnahmepegel zu optimieren.

Abbildung 4: 20 Übungseinheiten pro Kommando ziehen noch eine hohe Fehlerquote nach sich. Besser sind 50 Trainingssätze pro Kommando, optimal wären 500.

Bei der Spracherkennung selbst meckerte der RasPi in Verbindung mit Alsa permanent, dass der Aufnahme-Stream nicht schnell genug interpretiert werden könne. Abhilfe schaffte ein Wechsel auf Pulseaudio, was mit überraschend vielen Konfigurationsschritten verbunden war, ehe die Spracherkennung reibungslos funktionierte [8]. Zunächst müssen Sie den ausführenden Nutzer der Gruppe pulse-access hinzufügen:

$ sudo adduser username pulse-access

Des Weiteren gilt es, eine /etc/asound.conf zu erstellen (Listing 2), in der /etc/default/pulseaudio müssen Sie den Wert von DISALLOW_MODULE_LOADING auf null setzen. In der Datei /etc/libao.conf geben Sie pulse anstelle von alsa als Standardtreiber an. Weitere Änderungen betreffen das File /etc/pulse/daemon.conf (Listing 3).

Listing 2

 

#/etc/asound.conf
pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

Listing 3

 

#/etc/pulse/daemon.conf
daemonize = yes
high-priority = yes
nice-level = 5
exit-idle-time = -1
resample-method = src-sinc-medium-quality
default-sample-format = s16le
default-sample-rate = 48000
default-sample-channels = 2"

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Computer-Kit Kano im Test

    Kano möchte für Grundschulkinder mehr sein als nur ein reiner Lerncomputer. Das RasPi-basierte System setzt auf ein innovatives, ganzheitliches Konzept.

Aktuelle Ausgabe

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.

  • Eingebettet

    Funkmodule, Displays und Analysegeräte für den Raspberry Pi: Auf der Embedded World präsentieren sich zahlreiche Unternehmen interessierten Elektronikbastlern und Entwicklern.