Danke für die Tipps bzw. kaskadierender Unterlegscheiben zur Überbrückung bei unterschiedlichen Schrauben/Lochgrößen. Das werde ich so ausprobieren.
Hinsichtlich Audio passen die Vorschläge nicht zum geplanten Vorgehen. Mein Ziel ist es nicht, zuvor aufgenommene Audiofiles abzuspielen. Mein Ziel ist es, Konversationen vergleichbar zu Sprachassistenten wie Alexa, Siri etc. zu führen um ihm beispielsweise mitzuteilen, wo er hinfahren soll oder natürlich auch einfach "Spaß"-Konversationen für die Kids.
Nachdem ich kurzzeitig mit dem Gedanken gespielt hatte, die nötigen Machine Learning Modelle irgendwie auf dem Raspberry laufen zu lassen, habe ich wegen der Komplexität (und letztlich nicht nur MEINER sondern auch der begrenzten Kapazität des Pi) davon wieder Abstand genommen.
Mein aktueller Plan setzt stark auf Cloud Services und sieht wie folgt aus:
1. Bei aktivem Monitoring (ggf. getriggert durch weitere Sensoren wie den Ultraschallsensor, d.h. nur Monitoring, wenn jemand "in der Nähe" ist, der Roboter also schon die physische Präsenz von jemandem festgestellt hat) werden die Geräusche fortlaufend im 5-Sekunden Rhytmus daraufhin untersucht, ob es sich um allgemeine Geräusche oder Sprache handelt. Das wäre noch lokal umzusetzen, also auf dem Raspberry. Open Source Libs in die Richtung hatte ich schon gefunden. Muss ich nur noch wiederfinden...
2. Bei erkannter Sprache wird der Audio-Ausschnitt an einen Cloud Service gesendet, der das Gesprochene in Textform zurückliefert (aktuell gehe ich von der Microsoft Azure Cloud aus - für den Privatgebrauch ist da genügend Volumen kostenfrei zum Spielen enthalten).
3. Der Textstring wird in einem weiteren Schritt mit einem weiteren Cloud Service (ggf. auch MS Azure, oder SAP Conversational AI, damit habe ich beruflich Erfahrung, auch kostenfrei nutzbar ohne Limit für Privatgebrauch) interpretiert, d.h. Intents und Sentiments werden gelesen und zurückgeliefert.
4. Der Roboter kann dann die Aktivitäten ausführen, die auf die Intents gemapped sind und/oder eine Sprachantwort zurückgeben.
5. Bei Sprachantwort wird der Text wiederum an die MS Azure Cloud zur Umwandlung in ein auszugebendes, gesprochenes Audio-File gebeben.
6. Das Audio-File wird auf dem Roboter ausgegeben.
Irgendwo zwischen Schritt 1 und 3 muss noch das Triggerwort ("Hey, Kurt!") eingebaut werden, so dass der Roboter nicht alle unsere Gespräche mühsam verarbeiten muss.
Im Praxistest wird sich zeigen, wie sich der Datenaustausch mit multiplen Cloud-Services verhält und ob die Antwortzeiten entsprechend ausreichend sind. Siri muss aber auch manchmal 2-3 Sekunden "überlegen", bis eine Antwort kommt...
Eigentlich brauche ich also einen Lautsprecher, der Schritt 6 kann (kann das der einfache Lautsprecher an der PWM-Schnittstelle leisten?) und ein Mikrofon, welches das ständige Monitoring liefert.
Lesezeichen