
Aufgepasst!
Günstige Hardware und kostenlose eBooks für den Arduino gibt es bei AZ Delivery
Info zu meinen Partnerlinks
Während alle Welt begeister auf Amazons Alexa starrt, habe ich mich mal mit dem Thema Spracherkennung bzw. Sprachsteuerung im Bereich Arduino auseinandergesetzt.
Von Haus aus können die Arduino-Boards nicht wirklich sprechen. Und Sprache verstehen schon mal gar nicht. Jedenfalls nicht einfach so. Relativ einfach wird dies ermöglicht, indem man sich z.B. das MOVI-Shield von Audeme (nun auch direkter EU-Verkauf) kauft, welches einer erfolgreichen Kickstarter-Kampagne entstammt, und dieses die meiste Arbeit verrichten lässt.
Auf MOVI läuft ein kleines Linux inkl. viele verschiedener Opensource-Paketen, die dann zusammengenommen dafür sorgen, dass das Eingangssignal aufbereitet und auf zuvor trainierte Sätze gematcht wird.
MOVI unterstützt offiziell bis zu 150 volle Sätze bzw. Kommandos. User berichten, dass sie sogar knapp 1000 Sätze bzw. Kommandos anlernen konnten ohne das dies zu Problemen führte. In der aktuellsten Version unterstützt MOVI Englisch, Deutsch und Spanisch.
Weiterhin kommt das Shield ohne Internetverbindung aus. Man kann sich also sicher sein, dass das Gesagte die eigenen vier Wände nicht verlässt.
Den Arduino kann man natürlich dennoch ins Netz hängen. Die Sprache wird aber auch dann das Shield nicht verlassen.
Grund genug also, das Ding mal zu bestellen und auszuprobieren.
Die Programmierung per Arduino ist nicht viel komplizierter als bei anderen Projekten auch. Das Manual ist leicht verständlich und dokumentiert die Bibliothek ausreichend. Weiterhin gibt es über die Library sehr viel Beispiel-Code, der – gut kommentiert – die Verwendung erklärt.
Da meine LED-Uhr aktuell auf Eis liegt, da ich auf Material warte, habe ich kurzerhand meine 433MHz-Schaltung mit „Magda“ erweitert. „Magda“ nimmt meine Sprachbefehle entgegen, um zwei Lichter im Wohnzimmer ein- bzw. auszuschalten.
Bis auf ein paar Verständigungsprobleme (Spracherkennung auf Deutsch läuft noch nicht soooo geil), funktionierte „Magda“ auf Anhieb.
Video-Link: https://youtu.be/hpkMgAGg_XU
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#include "MOVIShield.h" MOVI recognizer(true); #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); void setup() { recognizer.init(); recognizer.callSign("magda"); recognizer.addSentence("grosses licht an"); recognizer.addSentence("grosses licht aus"); recognizer.addSentence("kleines licht an"); recognizer.addSentence("kleines licht aus"); recognizer.addSentence("ich will schlafen"); recognizer.train(); recognizer.setSynthesizer(SYNTH_PICO,"-l=de-DE"); recognizer.setVolume(50); recognizer.responses(false); mySwitch.enableTransmit(6); mySwitch.setProtocol(1); } void loop() { signed int res = recognizer.poll(); if (res == 1) { mySwitch.send(4539733, 24); recognizer.say("grosses licht an"); } if (res == 2) { mySwitch.send(4539732, 24); recognizer.say("grosses licht aus"); } if (res == 3) { mySwitch.send(4527445, 24); recognizer.say("kleines licht an"); } if (res == 4) { mySwitch.send(4527444, 24); recognizer.say("kleines licht aus"); } if (res == 5) { mySwitch.send(4527444, 24); mySwitch.send(4539732, 24); recognizer.say("Gute Nacht"); } if (res == -502) { recognizer.say("das habe ich nicht verstanden"); } } |
Wenn Dir dieser Beitrag geholfen hat und/oder Du mich finanziell unterstützen magst, kannst Du dies gerne per Paypal machen.
Alternativ kannst Du Dir meinen Amazon-Partnerlink in die Favoriten legen und Amazon bei Deinen zukünftigen Einkäufen darüber aufrufen:
Es entstehen Dir dadurch keine Mehrkosten, ich erhalte aber eine kleine Provision.
Über einen Kommentar freue ich mich natürlich auch :-)

Jan B-Punkt

Neueste Artikel von Jan B-Punkt (alle ansehen)
- Adventskalender Gewinnspiele 2024 - 1. Dezember 2024
- Freie News für freie User – Schneller als die Paywall - 22. April 2024
- Adventskalender Gewinnspiele 2023 - 1. Dezember 2023
- Angespielt: Starship Troopers: Extermination - 19. Mai 2023
- Fazit zum ATOMSTACK A5 pro nach zwei Monaten Nutzung - 9. Mai 2023
Hallo Jan,
cooler Beitrag. Eine Frage habe ich, hast du dann 2 Empfänger Module mit je einem weiteren Arduino oder wie liest du die empfangenen Daten aus?
Würde mir das gerne auch bauen, aber für mehr Geräte und über eine Relaiskarte schalten wäre eine nicht so elegante Lösung.
Grüße,
Olli.
Moin Olli,
nein, ich habe in dem Video nur einen Arduino im Einsatz.
Die Lichter schalte ich über 433MHz Steckdosen und einem entsprechenden Sender (im Titelbild oben links).
Als Grundlage kannst Du https://janbpunkt.de/2016/12/10/tuer-fensterkontakt-mit-arduino-ueberwachen/ verwenden.
Grüße,
Jan
Alles klar, danke dir:)
Keine Ursache. Viel Spaß.
Hallo Jan,
ich möchte zusätzlich noch ein Ethernet-Shield verwenden. Würde es da Kollisionen bei Pins geben, die von beiden Shields standardmäßig verwendet werden?
Grüße, Jörg
Moin Jörg,
das kann ich Dir leider nicht beantworten. Evtl. schaust Du Dir die Datenblätter zu beiden Boards an. Gut denkbar, dass man dadurch mehr erfährt.
Grüße,
Jan
Hallo Jan,
ja schade. Ich mache mich dann mal ans Werk. Das kann berufsbedingt eine Weile dauern. Ich melde mich mit dem Ergebnis meiner Recherche zurück. Vielleicht hilft es ja jemandem weiter…
Grüße, Jörg
Bin auf Deine Ergebnisse gespannt =)
Auf die Schnelle: Das Ethernet-Shield als auch das Movi-Shield verwenden die Pins 10 und 11 zur Kommunikation mit dem Arduino. Also sind Kollisionen vorprogrammiert. Ich will den Arduino Uno R3 einsetzen und werde mich mit softserial beschäftigen müssen. Darüber hinaus gibt es auf dem Movi-Shield Jumper, um es an andere MC anzupassen. Da werden offensichtlich die Kommunikationspins umgejumpert. Es gibt also Hoffnung, dass ich meine Kombination aus Arduino Uno R3 + Ethernet-Shield 2 + Movi-Shield zum Funktionieren überreden kann. Das hebe ich mir aber für die Dunkle Jahreszeit auf. Es wird also eine Weile dauern, bis ich mich wieder melde.… Weiterlesen »
Danke für die Rückmeldung.
Können die nicht alle SPI? Da muss doch was gehen. Bin auf Deine Erfolge gespannt :)
Hey Jan,
ich habe mir jetzt auch den MOVI angeschafft und da ist ja standardmäßig nur Englisch erstmal drauf. Jetzt will ich das „Deutsch-Packet“ hinzufügen und auf der original Audeme Seite steht das man die ZIP-Datei in den Updateordner des mitglieferten Sdhc karte hinzufügen muss. Problem: ich habe nur 2 Ordner : „256 MB“ und „512 MB“ , eine „script.bin“ (Bin-Datei) sowie eine „uImage“ Datei.
Aber von einem Update-Ordner ist nirgends eine Spur. Kannst du mir da helfen? Habe ich ausversehen etwas gelöscht? oder ist das Deutsch-Packet überflüssig?
Mfg, Carsten
Moin Carsten,
vermutlich hilft Dir Kapitel 5 aus dem Manual (http://www.audeme.com/uploads/4/3/9/9/43997575/movi1.1usersmanual.pdf) weiter.
Dort steht im Abschnitt Windows geschrieben:
„Upfront note: As of writing this manual, no version of Microsoft Windows supports
accessing multiple partitions on an SD Card. This makes the process of backing up and
updating MOVI with a Windows computer a lot more cumbersome.“
Du benötigst spezielle Software, um beide Partitionen anzeigen zu lassen. Ist im Manual weiter unten beschrieben.
Ich hab’s damals mit einer Live-CD mit Linux gemacht, wenn ich mich recht erinnere.
Viel Erfolg.
Ich danke dir, mit meinen hobbymäßigen Informatikkenntnissen gelangt man da so manches mal an seine Grenzen. Den Tag über war ich dann bei einem Kollegen und wir haben das mit Linux hingekriegt. MOVI spricht jetzt auch deutsch und mit „Magda“ ist das auch ein guter Callsign.
Einziges Problem was ich jetzt noch habe: MOVI kann meine Sätze nicht ganz so gut auseinanderhalten. Die Sätze ähneln sich jedoch stark weil ich ihm eine Zahl zwischen 1 bis 12 sagen will. Jedoch versteht er meist eine andere Zahl. Hast du da einen Tipp? Zahlen ausschreiben bringt nichts.
Mfg, Carsten
Schön, dass es geklappt hat :)
Ja, das mit dem Differenzieren kenne ich. Hab selbst auch einigermaßen frickeln müssen, bis ich Sätze hatte, die gut funktioniert haben.
Du kannst sonst auch „richtige“ Dialoge bauen:
„Magda!“
*biep*
„Schalte das Licht an.“
*biep*
„Acht“
Beispiele sind dazu – soweit ich mich erinnere – auch im Manual zu finden.
Moin coole Seite, mein Onkel kommt auch aus Eckernförde und auch Hobby Elektroniker. Naja, ich hätte da ein paar fragen: 1. Würdest du dazu raten die Englische oder Deutsche Version zu benutzen, hinsichtlich, dass der Arduino auch versteht was man sagt. 2. Kann man das Codewort („Magda“), in der Deutschen und Englischen Version ändern? 3. Bei welcher Sprache hört sich das was der Arduino antwortet am flüssigsten an? 4. Kann man Stimmenlage oder gleich die ganze Stimme in der Deutschen oder Englischen Version ändern? 5. Hättest du einen Link zu dem aktuellsten Modell, weil ich hab das Gefühl, dass die… Weiterlesen »
Mensch, Marcel, sorry!
Ich habe den Kommentar eben erst gesehen. Sehr spät, ich weiß.
Falls noch relevant:
1. Deutsch funktionierte, als ich es zuletzt nutzte, noch nicht ganz so gut.
2. Japp. Du kannst Dir da ein eigenes ausdenken und benutzen.
3. Das macht keinen Unterschied.
4. Angeblich ja, habe ich aber noch nicht probiert. Die Doku ist aber sehr ausführlich und verständlich.
5. Da kann ich leider nicht helfen. Ich hab es damals über den verknüpften Link gekauft.
Hallo zusammen,
vielleicht habt ihr einen Tipp für mich. Ich habe mir das movi shield ebenfalls zugelegt. Er erkennt die Wörter jedoch gar nicht bzw. das Ergebnis beim recognizer.poll() ist immer unterschiedlich beim gleichen Wort. Selbst wenn die Wörter komplett unterschiedlich sind wie 1 und 2.
Habt ihr eine Idee, was ich falsch mache?
Viele Grüße,
Thorsten
Hallo,
Ich wollte fragen, wie du das Shield mit deinen Lampen verbunden hast. Bin noch neu Auf Arduino und lerne es gerade…..
Moin Phil,
ich hab das weiter oben in den Kommentaren schon beantwortet. Ich habe in der Schaltung eine 433MHz-Sender verwendet und damit meine Funk-Steckdosen angesteuert. Dazu findest Du im Netz viele Tutorials – mein ersten 433MHz-Versuche sind unter Tür-/Fensterkontakt mit Arduino überwachen – janbpunkt.de dokumentiert.
Viel Erfolg.
Hi allesamt, ich hab mir das Movi jetzt auch zugelegt. Ich bau gerade einen kleinen Laufroboter, und den möchte ich gerne mit dem Movi steuern. Vielen Dank für den schönen Artikel!