Hardware

Mikrofon und USB-Soundkarte. (Alternativen wären Hat-Soundkarte wie z. B. HiFiBerry DAC ADC Pro; ist gekauft aber noch nicht eingerichtet; auch Sound-Eingabe von Netzwerk-Mikro der Medientechnik könnte interessant sein.)

Software

Mikro konfigurieren

USB-Mikro sollte eigentlich Plug and Play sein, also gleich nach Anschließen (ggf. Neustart) durch

arecord -l
als verfügbares Aufzeichnungsgerät gefunden und genutzt werden können. Falls nicht (nochmal mit frischer SD-Karte zu prüfen): in der Konfigurationsdatei
sudo nano /home/pi/.asoundrc
herumpfuschen; aktuell funktionierende Konfiguration ist
pcm.!default {
  type asym
  playback.pcm {
    type plug
    slave.pcm "output"
  }
  capture.pcm {
    type plug
    slave.pcm "input"
  }
}
pcm.output {
  type hw
  card 0
}
pcm.input {
  type plug
  slave {
    pcm "hw:2:0"
  }
}
ctl.!default {
  type hw
  card 0
}
wobei der slave im pcm.input auf pcm "hw:2:0" eingestellt ist weil alsa die USB-Karte in dem Fall als Karte 2, Subgerät 0 registriert hatte.

PulseAudio

PulseAudio (das Standard Audio System bei vielen Linux Distributionen) kann auch etwas Rauschentfernung und Echo-Cancellation machen, was die Spracherkennung bei größerem Abstand verbessern sollte.

Dazu in /etc/pulse/default.pa am Ende die Zeilen hinzufügen:

# Denoise
load-module module-echo-cancel source_name=denoised aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"

set-default-source denoised

# 65536 is 100%
set-source-volume denoised 98304

Und dann PulseAudio neustarten mit pulseaudio -k (Falls es da einen Fehler gibt, dass der Prozess nicht gefunden wurde: pulseaudio -D). Per default sollte dann das Audio mit Rauschentfernung verwendet werden.

Hauptquelle und Quelle zur Lautstärkeneinstellung (Auf der Hauptquelle verlinkt).

Spracherkennung

Installation

Vosk installieren wie auf https://alphacephei.com/vosk/ dokumentiert

Funksteckdose steuern

Die Sprachsteuerung für die Funksteckdose am Licht wird auf dem Raspi mit

cd /home/pi/vosk-api/python/example/
python3 test_microphone-modJS.py -r 48000
aktiviert. Ohne die Option -r 48000 verwendet das Python-Modul soundmodule die falsche Bitrate und macht die Aufzeichnung für Mensch und Maschine unverständlich. Will man den Befehl aus einem anderen Verzeichnis heraus ausführen, muss man den Pfad zum Sprachmodell spezifieren:
python3 /home/pi/vosk-api/python/example/test_microphone-modJS.py -r 48000 --model /home/pi/vosk-api/python/example/model/

Im Terminal-Fenster, in dem die Sprachsteuerung gestartet wurde, wird angezeigt, was sie erkennt. Enthält die erkannte Äußerung die Folge "licht an" oder "licht ein", so wird eingeschaltet; enthält sie "licht aus", so wird ausgeschaltet (mehr ist in test_microphone-modJS.py gegenüber dem Original test_microphone.py nicht geändert).