Project Alice funktioniert nach eigenen Versuchen am besten auf einem Raspberry Pi mit dem Betriebssystem Raspberry Pi OS. Laut Alice selbst läuft Alice auf den Modellen (3a+, 3b, 3b+ und 4b). Dabei genügen laut Alice 1GB an RAM. Es werden jedoch mindestens 2GB empfohlen. Die 8GB Variante lohnt sich zur Zeit (März 2021) aufgrund des Preisleistungsverhältnisses nicht.
Eine Installation auf einem Rechner oder einer virtuellen Machine ist theoretisch möglich. Die Alice-Community hat eine Docker-Konfiguration bereitgestellt, die es erlaubt Alice auf Linux x86-Rechnern zu verwenden. Es soll laut Entwicklern möglich sein die Konfiguration mit WSL auf Windows lauffähig zu bekommen. Momentan ist eine Installation jedoch nur mit Google und Snips als ASR möglich. Daher ist es uns nicht gelungen diese Option selbst auszuprobieren. Wir haben eine Installation auf Ubuntu und Raspberry Pi Desktop auf einer virtuellen Machine unternommen und mussten leider feststellen, dass die Installation nicht so reibungslos verläuft wie auf dem Pi.
Wir fokussieren uns in dieser Installationsanleitung ausschließlich auf die Installation auf einem Rapsberry Pi. In Versuche und Erfahrungen findet man unsere alternativen Installationsversuche.
Die minimale Hardwareanforderung ist wie anfangs erwähnt ein Raspberry Pi Model 3 mit 1 GB RAM und eine Micro SD Karte mit 8 GB Speicher für das Betriebssystem.
Zusätzliche Mindestanforderungen sind ein Mikrofon und ein Lautsprecher für die Interaktion mit dem Sprachassistenten. Für den Anschluss eines Mikrofons vorhandene Schnittstellen sind entweder USB oder GPIO.
Empfehlenswert für eine deutlichere Spracherkennung ist ein Mic-Array. Wir verwenden u.a. einen ReSpeaker 4-Mic Array welcher mittels GPIO auf dem Raspberry Pi aufgesteckt werden kann, was für Produktionszwecke empfehlenswert ist, da nicht viel Platz verschwendet wird und keine weiteren Kabel benötigt werden.
Eine andere Möglichkeit ist ein USB-Mikrofon zu nutzen wie z.B. ein einfaches Headset oder die PlayStation EyeToy Kamera. Dadurch benötigt man keinen zusätzlichen Lautsprecher was für Testzwecke praktisch sein kann. Lautsprecher können per Klinkenanschluss oder USB angeschlossen werden. Bluetoothlautsprecher haben wir nicht ausprobiert, müssten jedoch mit Pulseaudio auch funktionieren.
Für unseren Sprachassistenten verwenden wir außschließlich IoT-Geräte, welche das ZigBee-Protokoll unterstützen.
Um mit anderen IoT-Geräten über das ZigBee-Protokoll kommunizieren zu können benötigt man ein Adapter bzw. USB-Gateway. Es sei noch zu beachten, dass einige Adapter zusätzliche Hardware zum Flashen einer speziellen Firmware benötigen.
Hier eine Liste mit verschiedenen unterstützten Möglichkeiten.
Grundsätzlich kann man auch virtuelle Geräte und Räume erstellen und alles simulieren ohne ein eigenes Gerät dafür kaufen zu müssen.
In unserem Projekt verwenden wir jedoch eine smarte Glühbirne, die das ZigBee-Protokoll unterstützt.
Für unser Projekt haben wir zwei verschiedene Konfigurationen, die hier beschrieben sind.
Falls noch kein Betriebssystem auf der SD-Karte des Pi installiert ist oder eine frische Neuinstallation gewünscht ist, ist der Schritt Installation und Konfiguration des Basissystems notwendig. Andernfalls kann dieser Teil übersprungen werden und es kann sofort mit der Installation von Alice begonnen werden.
Das Betriebssystem was sich am besten für eine Installation von Project Alice eignet ist Raspberry Pi OS. Es ist möglich, dass andere Debian-Distributionen auch gut funktionieren jedoch können nach aktuellem Stand (März 2021) neuere Paketquellen oder andere Paketmanager problematisch für eine Installation sein. Die Minimalversion von Raspberry Pi OS reicht nach eigenen Versuchen aus.
Wir werden nachdem wir den Pi neu aufgesetzt und konfiguriert haben Alice manuell installieren.
Es gibt aber noch die Möglichkeit ein vorgefertigtes Image inkl. Alice Installation auf die SD-Karte zu flashen. Da das Projekt noch immer in einer Beta-Phase ist, wurden für die letzten Beta-Versionen jedoch keine vorgefertigten Images erstellt. Dies wird sich laut Entwicklerteam jedoch ab der Veröffentlichung von Version 1.0 ändern.
Bis dahin ist eine manuelle Installation die empfohlene Installationsvariante.
Die SD-Karte kann mithilfe des Raspberry Pi Imagers geflasht werden, welches eine plattformunabhängige Möglichkeit darstellt. Man wählt das gewünschte Image im Imager aus, dieses wird anschließend heruntergeladen und auf die ausgewählte SD-Karte geflasht. Mit dem Raspberry Pi Imager lassen sich außerdem auch fremde Images flashen.
Es kann jedoch auch ein anderes Flashing-Tool verwendet werden Unter Linux und Mac gibt es verschiedene Open Source GUI-Anwendungen, es lässt sich aber auch dd
in der Kommandozeile verwenden. Unter Windows gibt es u.a. Win32DiskImager und Rufus.
Nachdem die SD-Karte geflasht ist muss um auf den Raspberry Pi ganz ohne Monitor zuzugreifen zu können der SSH-Server zunächst aktiviert werden. Dazu erstellt man in /boot
eine leere Datei namens ssh
.
Um auch auf den Ethernet-Anschluss zu verzichten lohnt es sich auch sofort das WLAN zu konfigurieren. Dazu erstellt man ebenfalls in /boot
eine Datei namens wpa_supplicant.conf
mit folgender Strutkur:
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="ToBeReplaced"
scan_ssid=1
psk="mySecretPsk"
key_mgmt=WPA-PSK
}
Nun kann man den Pi anschalten und sich per SSH anmelden. Der zum Login erforderliche Benutzername ist standardmäßig pi
und das Standardpasswort lautet raspberry
.
Um eine SSH-Verbindung aufzubauen kann man unter Windows entweder PuTTY, den Fork KiTTY oder auch neuerdings direkt wie unter Linux und Mac den ssh-Befehl im Terminal nutzen:
ssh pi@raspberrypi
Das Passwort lässt sich mit passwd
ändern. Als nächstes ist es wichtig das System auf den neusten Stand zu bringen. Dies tut man mit sudo apt-get update
gefolgt von sudo apt-get dist-upgrade -y
.
Im Konfigurationstool sudo raspi-config
lassen sich weitere Dinge konfigurieren wie Sprache, Tastatur, Hostname und Zeitzone.
Um die GUI zu deaktivieren kann Boot / Auto Login auf Console …
gesetzt werden. In Interface Options
sollte SPI und I2C aktiviert werden. Anschließend sollte noch das Dateisystem unter Advanced Options
mit Expand Filesystem
vergrößert werden.
Nun kann das System neugestartet werden.
Alice ist noch in Beta und unterliegt kontinuierlicher Veränderung. Die Zielgruppe sind aktuell alle, die grundlegendes Wissen zu ihren Geräten haben, Systemlogs lesen und Python Module installieren können.
Neben der x86-Docker-Konfiguration gibt es außerdem noch eine Konfiguration speziell für ARM-Architekturen (Raspberry Pi etc.). Diese haben wir selbst nicht ausprobiert. Alternativ zu einer manuellen Installation kann ab diesem Punkt Alice mithilfe von Docker installiert werden. Dazu gibt es ein Github-Repo mit einer Anleitung zur Installation.
Zunächst einmal muss (falls noch nicht vorhanden) git installiert werden:
sudo apt-get install git -y
Danach kann man auch das Repo von Project Alice im Homeverzeichnis clonen:
cd
git clone https://github.com/project-alice-assistant/ProjectAlice.git
Vor dem Starten der Installation muss erst einmal die Konfiguration vorgenommen werden. Dazu kopiert man die Konfigurationsdatei ProjectAlice.yaml
ins /boot
-Verzeichnis.
sudo cp ~/ProjectAlice/ProjectAlice.yaml /boot/ProjectAlice.yaml
Nun kann man die Konfigurationsdatei mit dem Editor seiner Wahl bearbeiten. Beispielsweise mit sudo nano /boot/ProjectAlice.yaml
.
Es lässt sich ein Mikrofontreiber von vielen auswählen, der automatisch installiert wird (ReSpeaker etc.) aber auch Sprache, Regionales, Techstack, Offlinetauglichkeit usw. einstellen. Einiges davon kann auch anschließend im Webinterface noch einmal angepasst werden.
Die Konfigurationsdatei ist im YAML-Format. Damit die Installation reibungslos verläuft muss sichergestellt werden das zwischen :
und Wert ein Leerzeichen ist: ❌ key:value
✔️ key: value
Nun muss nur zum Repository gewechselt werden und das Python-Script gestartet werden.
cd ~/ProjectAlice
python3 main.py
Im Hintergrund wird anschließend die Installation vorgenommen, dies erfordert eine Internetverbindung, da die Treiber und weiteren Softwarekomponenten nicht im Repo enthalten sind und aus dem Netz geladen werden müssen. Alle für Alice benötigten Dienste werden eingerichtet, sodass beim nächsten Neustart alles von alleine startet und im Hintergrund läuft.
Nachdem Alice als eigener Dienst eingerichtet worden ist und im Hintergrund läuft, sieht man keine Ausgaben mehr in der Konsole. Dafür kann man aber die Logs überprüfen: tail -f /var/log/syslog
.
Bei eingeschalteten Lautsprechern hört man beim Start von Alice einen kurzen Ton.
Es ist wichtig bei der ersten Installation zu warten bis alles was im Hintegrund geschieht wirklich zu Ende ist. Denn selbst nach Neustart werden noch weitere Sachen geladen und u.a. die NLU trainiert.
Falls Alice nicht startet gibt es einen Troubleshooting Guide von Alice selbst, der weiterhelfen kann.
Je nachdem welche Wakeword Engine man verwendet gibt es andere Möglichkeiten neue Wakewords hinzuzufügen. Für Snips gibt es dazu ein Hilfsskript.
Zunächst clonen wir das Repository welches das Hilfsskript enthält und betreten das Verzeichnis:
git clone https://github.com/snipsco/snips-record-personal-hotword.git
cd snips-record-personal-hotword/
Nun müssen wir die Dependencies des Skripts installieren:
sudo apt-get install python-numpy python-pyaudio python-soundfile
Bevor wir mit der Aufnahme starten müssen wir zunächst den ProjectAlice-Dienst stoppen um unser Mikro freizugeben:
sudo systemctl stop ProjectAlice
Nun starten wir das Hilfsskript mit dem Namen des zu erstellenden Wakewords als Parameter:
python script_recording.py your_hotword_name
Das Wakeword soll in drei verschiedenen Geschwindigkeiten bzw. Tonlagen gesprochen werden. Eine ruhige Umgebung ist wichtig um ein gutes Modell erstellen zu können. Die Aufnahme startet indem man auf Enter drückt.
Falls Aufnahmen zu lang oder zu verschieden voneinander sind erscheinen Warnungen. Warnung zu (ALSA… and/or jack server…) bei jedem Schritt können ignoriert werden. Die samples werden für ein optimales Ergebnis auch nachbearbeitet.
Wenn das Modell erzeugt ist wird der Pfad wo das Modell liegt vom Skript angegeben. Dieser sollte notiert werden, da er für den nächsten Scritt gebraucht wird.
Bevor das Modell testen sollte Project Alice und die Wakeword-Engine ausgeschaltet sein:
sudo systemctl stop snips-hotword
Nun kann folgendes Kommando eingegeben werden:
snips-hotword --model <path_to_your_model>=<sensitivity>
path_to_your_model
ist der im letzten Schritt generierte Pfad und sensitivity
ist die Empfindlichkeit. Diese sollte zwischen 0 und 1 liegen. Je höher die Sensitivity ist, desto anfälliger für Fehler ist das Wakeword. Standardmäßig ist die Sensitivity bei 0.5
.
Nachdem das Modell ausreichend getestet ist, kann das Modell hinzugefügt werden. path_to_your_model
sollte das Modell und die erzeugte config.json
enthalten.
sudo mkdir -p ~/ProjectAlice/trained/hotwords/<your_hotword_name>; sudo mv <path_to_your_model> ~/ProjectAlice/trained/hotwords/
Nun kann die snips.toml Datei angepasst werden:
sudo nano /etc/snips.toml
Um das Defaultwakeword zu erhalten kann das Model erweitert werden (ansonsten ist der erste Eintrag zu ersetzen):
[snips-hotword]
model = ["/home/pi/ProjectAlice/trained/hotwords/snips_hotword=0.53","<new_path_to_your_model>=<sensitivity>"]
Wenn alles abgeschlossen ist starten wir ProjectAlice neu.
sudo systemctl restart snips-hotword
sudo systemctl restart ProjectAlice