ich würde gerne meine mittlerweile etwas eingestaubten E-Technik Kenntnisse mit einem Freizeitprojekt wieder beleben und einen eigenen Smart Speaker bauen, den ich via WLAN mit dem Internet verbinden kann.
Bevor ich jedoch aktiv loslegen kann, muss ich mich aber logischerweise für die richtigen Hardwarekomponenten bzw. das passende Entwicklerboard für meinen Use-Case entscheiden. Da mir auf dem Gebiet der Sprachverarbeitung leider sämtliche Erfahrung fehlt, wäre ich dankbar für jeden Tipp hinsichtlich meiner Anforderungen an die Hardware.
Insbesondere sind für mich noch folgende Fragen offen:
Welche Taktfrequenz ist für eine standardmäßige Sprachverarbeitung notwendig? Reichen 240MHz auf einer optimierten CPU wie Xtensa LX7 o.Ä.?
Wieviel RAM und (internen) Flash haltet Ihr für sinnvoll? Neben der Firmware sollen auf dem Flash noch einige Sprachbefehle gespeichert sein, die z.B. den Anwender bei fehlendem Netzwerk informieren, dass das Gerät gerade offline ist.
Würdet Ihr eher auf einen µC mit integriertem WLAN und BT setzen oder dafür ein externes Modul auflöten?
Falls jemandem zufällig ein passendes Entwicklerboard dafür einfällt, nehme ich auch den Tipp gerne an! Aktuell hänge ich irgendwo zwischen NXP RT1064EVK, ReSpeaker Lite Kit und dem Teensy 4.0.
Tausend Dank für Eure Tipps und Erfahrungswerte vorab!
Ich würde die Hardware erstmal nach hinten stellen.
Zuerst kommen die Algorithmen, die Du einsetzen willst. Kennst Du die? Ist da schon was vorhanden? Ansonsten wäre der erste Schritt, das auf einem Linux-PC auszuprobieren. Auf einem normalen PC lässt sich am einfachsten entwickeln, und Du musst Dir um die Hardware keine Sorgen machen. Die funktioniert garantiert, es gibt alle Treiber etc.
Für den ersten Wurf kannst Du was mit Phython oder Matlab zusammenschieben und später dann auf C(++) wechseln.
Wenn Du soweit bist, dann wäre der zweite Schritt sowas wie ein Pi Zero W (mit Wifi) oder so. Das Portieren der Software vom PC-Linux (vorzugsweise ein Debian) auf das Pi Linux (auch ein Debian) sollte relativ einfach sein. So ein Pi Zero W ist jetzt nicht so schnell, aber klein und günstig. Wenn Deine Algorithmen zu viel Rechenleistung brauchen, dann wirst Du das an dieser Stelle merken und kannst optimieren. Wohlgemerkt die Algorithmen optimieren - die Implementation kommt erst an zweiter Stelle.
Bei einem Einzelstück könntest Du jetzt aufhören. Bei größeren Stückzahlen oder größerem Ehrgeiz könntest Du jetzt den billigsten Prozessor wählen, der Deine Algorithmen gerade noch ausführen kann. Und erst an dieser Stelle kommt dann die Frage nach der Hardware.
Das ist aber deutlich einfacher hinzubekommen als die vom Threadstarter gewünschte /Spracherkennung/.
Ein Internetradio lässt sich mit 'nem ESP32 zusammmenklöppeln, das haben schon sehr viele gemacht, da muss man noch nicht mal selbst irgendwelche Software schreiben.
Eine Heimwanze, die jedes gesprochene Wort mithört und versteht, ist was ganz anderes. Warum man sowas haben wollen könnte, ist nochmal ein ganz anderes Thema.
Die etablierten Systeme (Alexa & Co.) arbeiten zweischichtig - die im Gerät selbst verbaute Spracherkennung kann wenig mehr als das "Triggerwort" erkennen, das dann halt "Alexa", "Siri" oder vielleicht auch "Hey Arschloch" lautet.
Den Rest der Spracherkennung aber erledigt Software irgendwo in "der Cloud".
Daß das komplett indiskutabel ist, müssen wir nicht diskutieren, oder?
Um auch nur ähnlich Funktionalität (minus der Datenausleitung) lokal hinzubekommen, ist einiges an Rechenleistung und Programmierkünsten erforderlich -- und das ist, vorsichtig formuliert, ein paar Hutnummern viel zu groß für ein "Freizeitprojekt" von jemandem, der seine "eingestaubten E-Technik-Kenntnisse" wieder beleben möchte.
Sofern du an einer Homeassistant Lösung interessiert bist, ist die Problematik schon gelöst:
Ein ESP32 mit ESP-Home übernimmt die Wakeword Erkennung und streamt das Audio dann an einen potenteren HA Server.
Ich denke mal, sowas selber entwickeln zu wollen, ist ein Faß ohne Boden.
Man schaut im Internet, wo jemand sowas schon mal gemacht hat, was der für eine Hardware benutzt hat und pappt dann nur noch dessen Legosteinchen zusammen.
Eingestaubte E-Technik Kenntnisse nützen dabei kaum. Die komplexen Platinen wird man eh nicht mehr selber routen können.
Man wird auch nie annähernd den Funktionsumfang von Kaufprodukten erreichen.
ich würde gerne meine mittlerweile etwas eingestaubten E-Technik
Kenntnisse mit einem Freizeitprojekt wieder beleben
...
Da mir auf dem Gebiet der
Sprachverarbeitung leider sämtliche Erfahrung fehlt
Kurz gesagt: du hast die idealen Voraussetzungen dafür, eine Alexa selber zu bauen. Das einzige was dir noch fe.lt, ist die Taktfrequenz für den Prozessor ... oder vielleicht doch nicht?
Insbesondere sind für mich noch folgende Fragen offen:
Welche Taktfrequenz ist für eine standardmäßige Sprachverarbeitung
notwendig? Reichen 240MHz auf einer optimierten CPU wie Xtensa LX7 o.Ä.?
Also sprachgesteuerte Dialogsysteme wie beispielsweise Abfrage des Zugplanes der Bahn per Telefon gab es bereits vor 25 Jahren als Taktfrequenzen zwischen 100 und 200 MHz üblich fahren.
Um auch nur ähnlich Funktionalität (minus der Datenausleitung) lokal
hinzubekommen, ist einiges an Rechenleistung und Programmierkünsten
erforderlich -- und das ist, vorsichtig formuliert, ein paar Hutnummern
viel zu groß für ein "Freizeitprojekt" von jemandem, der seine
"eingestaubten E-Technik-Kenntnisse" wieder beleben möchte.
Sehe ich auch so. Mit einem gewöhnlichen Mikrocontroller wird das auf keinen Fall was. Dazu sind ganz andere Kaliber nötig. Ich kann mir auch kaum vorstellen, dass jemand ein kleines privates Rechenzentrum betreiben will, bloß um die Sprachsteuerung zu ermöglichen. Und bevor ich so etwas zu Amazon/Google/Microsoft auslagere, müsste mir jemand das Gehirn raus blasen.
Die etablierten Systeme (Alexa & Co.) arbeiten zweischichtig - die im
Gerät selbst verbaute Spracherkennung kann wenig mehr als das
"Triggerwort" erkennen, das dann halt "Alexa", "Siri" oder vielleicht
auch "Hey Arschloch" lautet.
Den Rest der Spracherkennung aber erledigt Software irgendwo in "der
Cloud".
Du solltest dein Wissen auffrischen anstatt dir Fäkalwörter einzuprägen und wie oben in die Tastatur zu hacken.
Vor ca. 5 Jahren schon gab es ein Open Source Projekt, was auf einem RPi lief, Spracherkennung und dann Befehlsausführung sehr gut beherrschte OHNE Cloud-Unterstützung. Es lief alles lokal. Z.B. konnte ich meine Streaming Boxen dann per Sprache steuern.
Ich hab leider vergessen wie das Projekt hieß. Damals hab ich es nur mal testweise aufgebaut weil ich wissen wollte wie gut es funktioniert. Und das war beeindruckend, man brauchte nur ein Mikrofon (besser noch ein Array) am RPi und man konnte loslegen.
Nachtrag: ich habe nochmal gegraben, ich glaube es war SNIPS. Hier ein Bericht von Heise von 2019, der immerhin gleich am Anfang beschreibt, das es ohne Cloud auskommt.
Wie gut eine Sprachsteuerung funktioniert, hängt sehr stark von der Erwartungshaltung ab, die man an die Sprachsteuerung und -Erkennung hat.
Und auch von dem, was die Sprachsteuerung erzielen soll.
Der erste Schritt ist überhaupt Sprache zu erkennen und mit (hoffentlich) geringer Fehlerrate in Text zu übersetzen.
Die einfachste Variante ist eine, die nur vorgegebene Schlüsselwörter kennt. Das ist die von Boimler beschriebene Zugauskunft.
Die nächste Variante muss auf die Sprecherstimme trainiert werden, so etwas haben Diktiersysteme wie "Dragon" umgesetzt.
Anspruchsvoller sind sprecherunabhängige Systeme.
Damit ist der Drops aber immer noch nicht gelutscht, denn der erkannte Text muss nun auch noch verstanden werden. Wenn ein ganz eindeutiger fest vorgegebener Satzbau verwendet wird, ist das leicht, wenn aber frei gesprochener Text verstanden werden soll, ist ganz erheblicher Aufwand nötig. Dieser Aufwand ist es aber, der Systeme wie Alexa, Siri & Co. so erfolgreich machen.
Du solltest dein Wissen auffrischen anstatt dir Fäkalwörter einzuprägen
und wie oben in die Tastatur zu hacken.
Nichts von Deinem Gefasel widerspricht in irgendeiner Weise dem, was ich geschrieben habe.
Wenn Deine Religion Dir eine klare Ausdrucksweise verbietet, so ist das Dein persönliches Problem, ich werde wegen solcher selbst zugefügter geistiger Erkrankungen meine Ausdrucksweise nicht ändern.
Nichts von Deinem Gefasel widerspricht in irgendeiner Weise dem, was ich
geschrieben habe.
Doch, du hast erwähnt, dass alles in die Cloud geschickt wird, um es in Befehle zu übersetzen, was mit SNIPE nicht(!) der Fall ist. Das scheinst du nicht genügend informiert gewesen zu sein.
Wenn Deine Religion Dir eine klare Ausdrucksweise verbietet, so ist das
Dein persönliches Problem, ich werde wegen solcher selbst zugefügter
geistiger Erkrankungen meine Ausdrucksweise nicht ändern.
Doch, du hast erwähnt, dass alles in die Cloud geschickt wird, um es in
Befehle zu übersetzen, was mit SNIPE nicht(!) der Fall ist.
Ja, mit diesem einen, weltweit von allen genutztem Beispiel, die völlig irrelevanten Alexa, Siri & Co. machen das alle nicht, aber die nutzt ja auch keiner.
Wie schlägt sich denn "Snipe/Snips" im Sprachverständnis in Relation zu den anderen Varianten?
Kann man dem tatsächlich so etwas zuraunen wie "Hey (900ss), mach mal schöne Musik an!" oder "Hey (900ss), regnets morgen in Regensburg?"
Nun steht also anekdotische Wahrnehmung den real existierenden
cloudbasierten Systemen gegenüber.
Ich hab es getestet und kann eigene Erfahrungen berichten. Damit war/ist das System wohl real existent. Wie meine Erfahrungen gedeutet werden, liegt beim Leser. Ich war zufrieden und fand es beeindruckend gut.
Welche Erfahrungen hast du mit nicht-cloudbasierten Lösungen gemacht und welche Systeme waren das? Berichte gerne von deinen Erfahrungen falls es welche gibt außer "hören/sagen".
Könnt ihr euren Kleinkrieg nicht per Mail austragen? Ihr seid ohnehin offtopic. Der TE wollte ja was selber schreiben. Wenn er nur irgendwas installieren wöllte, dann würden die Hardwareanfordungen ja feststehen.
Ich dachte, ich hatte einen interessanten Vorschlag gemacht, mal nach SNIPE zu schauen. Zumal es eben ohne Cloud ausgekommen ist, als ich es testete.
Mir ging es danach darum, die von HK angezweifelte Qualität geradezurücken.
Dass das in Zweifel stellen von Fäkalsprache gleich so wüste Beschimpfungen auslöst.... schulterzuck..
Ich dachte, ich hatte einen interessanten Vorschlag gemacht, mal nach SNIPE zu schauen.
Das fand ich recht nützlich.
wüste Beschimpfungen auslöst.... schulterzuck..
Hier vielleicht ein guter Satz aus den Management Lehrgängen, der sehr hilfreich im Umgang mit dem MC-Netz ist:
"Wenn dir ein Affe einen Baum hin stellt, musst du nicht rauf klettern"
Zitat:
"Espressif's speech command recognition model MultiNet is specially designed to provide a flexible off-line speech command recognition model. With this model, you can easily add your own speech commands, eliminating the need to train model again."
Arbeitet scheinbar auch offline. Wie gut es funktioniert, weiß ich natürlich nicht. Das mag derjenige, den es interessiert, selber herausfinden.
Hätte nicht gedacht, dass das mit einem solchen Board ESP32-S3 bzw ESP32-P4 überhaupt möglich ist. Wenn ich meinen Tisch nicht voller Analogelektronik hätte, würde ich es selber auch mal testen und herausfinden wir gut es funktioniert.
Hier vielleicht ein guter Satz aus den Management Lehrgängen, der sehr
hilfreich im Umgang mit dem MC-Netz ist:
"Wenn dir ein Affe einen Baum hin stellt, musst du nicht rauf klettern"
Ein weiters Indiz für die Dämlichkeit mancher Managment-Lehrgänge.
Ok, manche Manager warten heute noch still und unbewegt unter jedem Schattenspender, das ihnen die Frucht vom Baum ohne eigenes Zutun von allein in den Schoß fällt ... SCNR