FHEM Forum

FHEM => Frontends => Sprachsteuerung => Thema gestartet von: Prof. Dr. Peter Henning am 09 Februar 2017, 08:19:06

Titel: Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 09 Februar 2017, 08:19:06
Seit Jahren schon benutze ich die Google-Spracherkennung auf wandhängenden Tablets zur Steuerung meines SmartHome.
Funktioniert prima, wenn man ein wenig Ahnung von Semantik und regulären Ausdrücken versteht: Sprechen, und den zurückgesandten String auswerten. Ist auch schon mit einigen Beispielen dokumentiert.

Seit ca. 3 Jahren verwende ich zur Sprachausgabe die TTS-Engine Ivona (genauer: die Stimme "Marlene"). Ebenfalls ganz gut dokumentiert. Dabei verwende ich eine Kombination aus immer wiederkehrenden Klängen, die ich online bei Ivona "bestellt" und dann als MP3 abgespeichert habe, und der Echtzeit-Sprachsynthese per Android-Ivona.

Inzwischen ist "Jeannie" ein fester Bestandteil des Hauses geworden: "Wie ist der  Status der Haustür" -> "Die Haustür ist gesichert".

Seit ca. 1 Woche spiele ich mit Amazon Echo Dot/Alexa herum - und kann damit eigentlich alles steuern.
Ein gravierender Vorteil: Sehr gute und innovative Hardware zur Aufnahme der Stimme. 6 Mikros im Außenring, eines zentral. Erfassung der Richtung (vermutlich durch einen oder mehrere schnelle DSP), dadurch Ausblenden von Nebengeräuschen.
Zwei gravierende Nachteile: Extrem begrenzte Fähigkeiten des einfachen "SmartHome Skill", komplizierte Konfiguration und umständlicher Aufruf des "Custom Skill" ("Alexa, sage Jeannie: Wie ist der Status der Haustür").

Heute dann mal wieder bei Ivona reingeschaut, um ein paar neue "Festnachrichten" auszuprobieren - und siehe da, Ivona wurde von Amazon aufgekauft und wird jetzt als "Amazon Polly"  angeboten.
Auch das Sichern als MP3 geht jetzt babyeinfach:
https://eu-west-1.console.aws.amazon.com/polly/home/SynthesizeSpeech

Damit ist für mich klar, welchen Weg ich gehen will:

- Hardware, um auch bei Hintergrundgeräuschen einen menschlichen Sprecher und seine Worte zu isolieren (Forschungsthema ...)
- Einen Webdienst, um diese Worte in geschriebenen Text umzuwandeln (Amazon, von mir aus, auch Google, von mir aus)
- Meine eigene semantisch aufgepeppte Software zur Umsetzung in konkrete Handlungen
- Eine TTS-Engine, um Sprache auch wieder auszugeben (Amazon, von mir aus).

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: pataya am 09 Februar 2017, 08:47:44
Das Echo/Dot und was Amazon mit der Hardware geschafft hat finde ich auch faszinierend.
Was mich noch von der Sprachsteuerung abhält sind im wesentlichen zwei Dinge:

Die Daten müssen zwingend an Google oder Amazon übertragen werden. Was im Zweifelsfall mit den ausgewerteten Texten passiert weiß ich nicht. In der Hinsicht bin ich aber allgemein skeptisch, was alle Dienste angeht. Deshalb versuche ich, sofern möglich, alles offline zu halten.

und

Es fehlt mir noch eine Stimmerkennung. Wennschon, dennschon ;D. Schließlich möchte ich nicht das jede anwesende Person (oder Fernseher (https://www.heise.de/newsticker/meldung/Amazon-Echo-Nachrichtensprecher-loest-Massenbestellung-aus-3591039.html)) das komplette Smarthome steuern kann.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 09 Februar 2017, 09:02:16
Den Spracherkennungs Server im eigenen Heim zu haben ist mir auch schon um einiges lieber ::) Super, dass dort jemand am Forschen ist!

ZitatEs fehlt mir noch eine Stimmerkennung. Wennschon, dennschon ;D. Schließlich möchte ich nicht das jede anwesende Person (oder Fernseher) das komplette Smarthome steuern kann.

Oh ja, das fehlt mir auch! Das reagieren von nur authorisierten stimmen wäre wundervoll!  ;D
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 09 Februar 2017, 09:56:56
Den Zahn kann ich Euch ziehen.
Eine Stimmdiskriminierung (=Sprechererkennung) ist mit einer Sicherheit von sagen wir 75% auch innerhalb der nächsten 10 Jahre auf kleinen Systemen nicht machbar.
Wir schaffen es ja nicht einmal als Mensch, am Telefon die Stimmen von Mutter und Tochter oder von Vater und Sohn auseinander zu halten, oder gar im Radio die von Stimmimitatoren und dem Original.

Darüber hinaus gibt es je nach Hintergrundgeräusch, Stimmungslage (eilig ? müde ?) so viele Variationen auch im Sprechverhalten einer Person, dass es nicht einmal mit einem Deep Learning Netzwerk möglich ist, zwei Personen sicher zu unterscheiden.

Allenfalls könnte man weiblich-männlich trennen, weil sich das im Spektrum doch sehr bemerkbar macht (Formantenabstand ist anders).

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: kleinerDrache am 09 Februar 2017, 10:19:28
Sprachsteuerung ist ne feine Sache. Am meisten stört mich aber das z.B. der Echo STÄNDIG lauscht, muss er ja sonst keine Reaktion. Da das aber alles an den Server übertragen wird und ich nicht weis was und wie lange das gespeichert wird und noch schlimmer wer da alles ran kommt!!!!

Nein Danke da kann ich mir ja auch gleich eine Wanze ans Hemd hängen und allen sagen wie sie die abhören können. Offline wäre mir persönlich lieber. Stimmerkennung , schöne Sache aber wie schon gesagt wurde, NOCH nicht wirklich möglich. Wenn ich mir überlege das selbst eine gut trainierte Sprachsoftware schon mit einer Erkältung überfordert ist naja.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: pataya am 09 Februar 2017, 10:21:58
Genau genommen überträgt der Dot/Echo tatsächlich nur die Anfragen mit dem Codewort "Alexa" an die Amazon-Server und nicht alles.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 09 Februar 2017, 10:55:52
Zitat von: pataya am 09 Februar 2017, 10:21:58
Genau genommen überträgt der Dot/Echo tatsächlich nur die Anfragen mit dem Codewort "Alexa" an die Amazon-Server und nicht alles.

Ist laut Amazon so, ja. Es haben auch schon mehrere Leute mit Wireshark nachgeprüft, soll wohl stimmen, das der echo/dot nur mit den Amazon Servern spricht nachdem das wakeword gesagt wurde.

Ob das so bleibt weiß man nicht...
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: pataya am 09 Februar 2017, 10:59:54
Ich wusste garnicht das Amazon dazu überhaupt Angaben macht ::)
Denke auch nicht das sich da großartig was ändern wird. Aber man muss ja auch nicht gleich wieder anfangen den Aluhut rauszukramen 8)
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 09 Februar 2017, 11:04:44
Zitat von: Prof. Dr. Peter Henning am 09 Februar 2017, 09:56:56
Den Zahn kann ich Euch ziehen.
Eine Stimmdiskriminierung (=Sprechererkennung) ist mit einer Sicherheit von sagen wir 75% auch innerhalb der nächsten 10 Jahre auf kleinen Systemen nicht machbar.
Wir schaffen es ja nicht einmal als Mensch, am Telefon die Stimmen von Mutter und Tochter oder von Vater und Sohn auseinander zu halten, oder gar im Radio die von Stimmimitatoren und dem Original.

Darüber hinaus gibt es je nach Hintergrundgeräusch, Stimmungslage (eilig ? müde ?) so viele Variationen auch im Sprechverhalten einer Person, dass es nicht einmal mit einem Deep Learning Netzwerk möglich ist, zwei Personen sicher zu unterscheiden.

Allenfalls könnte man weiblich-männlich trennen, weil sich das im Spektrum doch sehr bemerkbar macht (Formantenabstand ist anders).

LG

pah

Dachte ich mir schon, dass dies fast unmachbar ist. ;D

Männliche Stimmen von Weiblichen zu unterscheiden scheint mir da auch deutlich einfacher!
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: kleinerDrache am 09 Februar 2017, 11:15:02
Hmmm Dann müsste aber das Wort "Alexa" fest verdrahtet sein oder wie will das Teil sonst dieses Wort erkennen ????? Aluhut kram ich nicht raus aber das vertrauen in große Dienste ist nach so einigen Hacks und Lecks doch etwas erschüttert.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 09 Februar 2017, 11:19:28
Zitat von: kleinerDrache am 09 Februar 2017, 11:15:02
Hmmm Dann müsste aber das Wort "Alexa" fest verdrahtet sein oder wie will das Teil sonst dieses Wort erkennen ????? Aluhut kram ich nicht raus aber das vertrauen in große Dienste ist nach so einigen Hacks und Lecks doch etwas erschüttert.

Naja, die Mikrofone lauschen dauerhaft mit. Ich denke der echo/dot muss eine kleine eigene Spracherkennung haben um dieses Wort zu erkennen. Anschließend ist er bereit mehr zu hören und nimmt dies auf und schickt es an die Amazon Spracherkennungs-Server.

Das ist nur meine Vermutung dahinter, sollte ich falsch liegen korrigiert mich ;)
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: herrmannj am 09 Februar 2017, 11:20:13
bei android doch auch fest verdrahtet. (im flash abgelegt). Eine Zeit lang konnte man das ändern (Hey Google -> Hey Haus). Geht aber imho mittlerweile nicht mehr ..

vg
joerg
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Romoker am 09 Februar 2017, 11:25:42
Richtig. Die Aktivierungsworte "Alexa, Amazon, Echo und Computer" sind fest in der Firmware der Echos verdrahtet, d.h. das permanente Lauschen erfolgt nur lokal. Erst nach Aktivierung durch das konfigurierte Aktivierungswort erfolgt die Übertragung in die Cloud.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: kleinerDrache am 09 Februar 2017, 11:30:03
wenn das so ist ok, dann wird hoffentlich auch nur das übertragen was nötig ist. ;) Für mich persönlich aber trotzdem nix .
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Simon74 am 09 Februar 2017, 11:36:56
Ich teste/spiele seit 2 Tagen mit Amazon Echo Dot,
ich musste feststellen das ich wohl einen angeborenen Sprachfehler habe (hat mir ausser dem Dot noch keiner klar gemacht).
Aber nun gut, wer versteht wohl Österreicher ?  ;D

Ich wünsche mir mit dem Amazon Dot dasselbe als wie es per Android/AMAD per voice Input passiert,
also einfach ein lokales auswerten des übermittelten Strings.
Mir ist jedoch nicht klar ob das so eigentlich schon möglich wäre mit dem Custom Skill ?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 09 Februar 2017, 11:47:18
Zitat von: Simon74 am 09 Februar 2017, 11:36:56
Ich teste/spiele seit 2 Tagen mit Amazon Echo Dot,
ich musste feststellen das ich wohl einen angeborenen Sprachfehler habe (hat mir ausser dem Dot noch keiner klar gemacht).
Aber nun gut, wer versteht wohl Österreicher ?  ;D

Ich wünsche mir mit dem Amazon Dot dasselbe als wie es per Android/AMAD per voice Input passiert,
also einfach ein lokales auswerten des übermittelten Strings.
Mir ist jedoch nicht klar ob das so eigentlich schon möglich wäre mit dem Custom Skill ?

Nein es wird immer alles zu Amazon geschickt und dort ausgewertet!

Amazon bietet im Moment noch keine andere Lösung. Bin mir auch unsicher ob das überhaupt eingeführt wird.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 09 Februar 2017, 15:38:15
Ich sage es doch: Echo/Echo Dot verfügen über innovative Hardware - aber nichts Exotisches.

Es ist problemlos möglich, einem DSP ein Klangmuster mitzugeben und die einlaufenden Signale damit zu vergleichen. Das geht mit "Alexa" sehr gut, mit "Computer" auf Grund der drei Silben schon schlechter (Erkennungswahrscheinlichkeit geringer, weil die Markov-Kette länger ist). Dafür benötigt man nur eine einfache Phonemanalyse, das ist Standard seit vielen Jahren.

Alexa reagiert übrigens auch auf die Worte "Bo-lexa", "Ho-lexa" oder "U-lexa" oder "E-lexa" - das macht es ein wenig lustig (Achtung, die Betonung muss immer auf dem "lex" liegen).

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: visionsurfer am 09 Februar 2017, 16:07:37
Hallo Pah,

deine Gedanken und Ansätze finde ich SEHR interessant. Ich spiele nun schon seit Wochen mit Alexa. Ich hab mittlerweile mein ganzes Haus, bzw. Wohnung mit Alexa ausgestattet. Insgesamt nun 8 Stück. So das ich in jedem Zimmer, Flur, Klo usw. immer Zugriff auf eine Alexa habe. Dazu dann die Steuerung mit FHEM.

Eigentlich läuft alles super. 2 Dinge stören mich aber massiv:

1. Kaum oder nur sehr schwere Möglichkeiten, Alexa was antworten zu lassen. Nach dem Motto:
"Alexa, sag FHEM ich bin zu Hause"....Antwort dann von Alexa: Hallo, willkommen zu Hause, du hast 2 Nachrichten auf dem Anrufbeantworter. Vergiss nicht morgen die Mülltonnen an die Straße zu stellen".

2. Nicht wirklich logische Spracheingabe
Wunsch: Alexa, ich bin zu Hause....geht nicht. Wenn würde wahrscheinlich nur gehen: Alexa, sag FHEM ich bin zu Hause.

Ich hab leider keine Ahnung von Programmierung. Ärgert mich selbst. Wenn ich aber sonst irgendwie Unterstützung geben kann, bitte bescheid sagen.

Grüße,
Visionsurfer
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: nesges am 09 Februar 2017, 17:00:15
Zitat von: Prof. Dr. Peter Henning am 09 Februar 2017, 15:38:15
Alexa reagiert übrigens auch auf die Worte "Bo-lexa", "Ho-lexa" oder "U-lexa" oder "E-lexa" - das macht es ein wenig lustig (Achtung, die Betonung muss immer auf dem "lex" liegen).

Ebenso "Lexa" und "Alex"
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Waldmensch am 09 Februar 2017, 19:47:31
@visionsurfer: du könntest mit "Alexa Hausstatus" einen Dummy aufrufen, der eine Playlist MP3s abspielt. Natürlich nicht aus dem Lautsprecher vom Echo.


Gesendet von iPhone mit Tapatalk
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: visionsurfer am 09 Februar 2017, 20:50:19
@Waldmensch

Genau das ist ja quasi das Problem. Ich hätte es natürlich am liebsten direkt aus dem ECHO oder ECHO DOT.
Im Augenblick habe ich überall wo ich eine ECHO oder ECHO DOT habe, auch eine Sonos Play 1. Aber das ist ja ätzend. Es wäre wünschenswert, wenn ein ECHO oder ECHO DOT diese Aufgaben alleine übernehmen kann.

Grüße,
Visionsurfer
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 10 Februar 2017, 04:44:17
Zitat
1. Kaum oder nur sehr schwere Möglichkeiten, Alexa was antworten zu lassen. Nach dem Motto:
"Alexa, sag FHEM ich bin zu Hause"....Antwort dann von Alexa: Hallo, willkommen zu Hause, du hast 2 Nachrichten auf dem Anrufbeantworter. Vergiss nicht morgen die Mülltonnen an die Straße zu stellen".

Aber das geht doch ganz prima.

Bei mir läuft eine Spracherkennung unter FHEM:

1.Taste "Jeannie" auf dem Tablet drücken, Tablet kann sowohl mit WebVeiwControl als auch mit AMAD die Spracherkennung von Google aufrufen.
2. Kurzer Bestätigungston, Mikrofonsymbol
3. Ich sage: "Gute Nacht".
4. Je nach Zeit sagt das Tablet:
   "Das Haus ist schon im Nachtzustand. Bitte an das Teewasser denken. Weckzeit morgen um 6:15 Uhr. Gute Nacht !"
   oder z.B.
   "Das Haus wird in Kürze gesichert. Bitte an das Teewasser denken. Wecker morgen ausgeschaltet. Gute Nacht !"
   Die Ansagen sind eine bunte Mischung aus a.) vorgefertigten MP3s und b.) Echtzeit-Responses von Ivona (als kostenloser Android-App)

Na, und das kann ich genauso triggern mit

"Alexa, sag Jeannie Gute Nacht". Dann kommt von Alexa nur das doofe "OK" - aber die Stimme von Jeannie eben aus den Wandtablets. Was man vielleicht noch hinbekommen kann, ist das "OK" durch einen kurzen Bestätigungston zu ersetzen.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Ma_Bo am 10 Februar 2017, 08:26:03
In der nächsten Version soll es die Möglichkeit geben, selber zu bestimmen, womit Alexa antwortet...


Gesendet von iPhone mit Tapatalk
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 10 Februar 2017, 08:30:27
Ich denke man muss alexa noch ein Paar Monate Zeit geben. Die sind da immer noch ziemlich am Anfang und am weiter entwickeln...

Das einzige, was sich wahrscheinlich nicht ändern wird, ist: Das Senden der Daten an Amazon zur Auswertung. Würde mich jedenfalls überraschen.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: newan am 10 Februar 2017, 08:34:49
Zitat von: Fixel2012 am 10 Februar 2017, 08:30:27
Ich denke man muss alexa noch ein Paar Monate Zeit geben. Die sind da immer noch ziemlich am Anfang und am weiter entwickeln...

Das einzige, was sich wahrscheinlich nicht ändern wird, ist: Das Senden der Daten an Amazon zur Auswertung. Würde mich jedenfalls überraschen.

Da ist ja auch o.k. Was ich nicht so gut finde ist das, dass Ergebniß auch über Amazon läuft... siehe Custom Skill. Bei Hue etc geht das Ergebnis ja auch direkt vom Echo ins Netzwerk und muss nicht über einen externen Port geführt werden. Hoffe das sich daran noch was ändert.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 10 Februar 2017, 09:23:45
Zitat von: newan am 10 Februar 2017, 08:34:49
Da ist ja auch o.k. Was ich nicht so gut finde ist das, dass Ergebniß auch über Amazon läuft... siehe Custom Skill. Bei Hue etc geht das Ergebnis ja auch direkt vom Echo ins Netzwerk und muss nicht über einen externen Port geführt werden. Hoffe das sich daran noch was ändert.

Wirklich? wenn ich alexa sage sie soll meine Hue Lampen an schalten werden die Voice Daten nicht auf einem externen Server ausgewertet?! So viel rechen Leistung hat der kleine echo/dot doch gar nicht?

Oder verstehe ich dich falsch?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: newan am 10 Februar 2017, 09:30:55
Zitat von: Fixel2012 am 10 Februar 2017, 09:23:45
Wirklich? wenn ich alexa sage sie soll meine Hue Lampen an schalten werden die Voice Daten nicht auf einem externen Server ausgewertet?! So viel rechen Leistung hat der kleine echo/dot doch gar nicht?

Oder verstehe ich dich falsch?

Nein Falsch, oder ich mich falsch ausgedrück. Wenn ich Sage Alexa schalte Hue Lampe xy aus. Dann wird das bei Amazon ausgewertet. Geht aber zurück zum echo und dieser sendet dann im Netzwerk den Befehl an die Hue Bridge. Ich muss quasi keinen Port im Router öffnen.

Beim Custom Skill ist es derzeit so, ich sage Schalte xy auf z dann wird das gesprochene bei Amazon ausgewertet geht nach AWS an eine Lamda Funktion die sich dann über Port 3000 über eine dyndnsadresse zur einer hue bridge simulation (in node js geschreiben) wendet und diese dann an fhem sendet. Also wirklich gedöhns!

Schöner wäre ja Sprachauswertung bei amazon uns der resultierende befehl ins netzwerk und gut.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 10 Februar 2017, 09:46:23
Zitat von: newan am 10 Februar 2017, 09:30:55
Nein Falsch, oder ich mich falsch ausgedrück. Wenn ich Sage Alexa schalte Hue Lampe xy aus. Dann wird das bei Amazon ausgewertet. Geht aber zurück zum echo und dieser sendet dann im Netzwerk den Befehl an die Hue Bridge. Ich muss quasi keinen Port im Router öffnen.

Beim Custom Skill ist es derzeit so, ich sage Schalte xy auf z dann wird das gesprochene bei Amazon ausgewertet geht nach AWS an eine Lamda Funktion die sich dann über Port 3000 über eine dyndnsadresse zur einer hue bridge simulation (in node js geschreiben) wendet und diese dann an fhem sendet. Also wirklich gedöhns!

Schöner wäre ja Sprachauswertung bei amazon uns der resultierende befehl ins netzwerk und gut.

Das mag wohl sein, aber irgendwie müssen die Daten dann ja noch zu Fhem. Darauf ist alexa glaube ich nicht ausgelegt. Ich denke Alexa ist eher ein Standalone gerät und ist nicht vorgesehen mit anderen Smart Home Controllern zu kommunizieren.

Somit ist im Moment wahrscheinlich keine Schnittstelle Verfügbar die Daten zum echo und dann erst zu Fhem zu schicken.

JustMe hat das wahrscheinlich best möglich und am einfachsten Programmiert.

Ich weiß jetzt nicht in wie fern so ein offener Port wirklich eine Sicherheitslücke ist und was damit alles angestellt werden kann, aber optimal ist es sicherlich nicht!
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: newan am 10 Februar 2017, 09:48:52
Das war keine Kritik an der jetzigen Lösung ganz im gegenteil, JustMe  hat das super gelöst.

Das ist ja von Amazon so vorgeben, aber auch anders möglich siehe HUE!
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 10 Februar 2017, 09:53:28
Zitat von: newan am 10 Februar 2017, 09:48:52
Das war keine Kritik an der jetzigen Lösung ganz im gegenteil, JustMe  hat das super gelöst.

Das ist ja von Amazon so vorgeben, aber auch anders möglich siehe HUE!

Habe es auch nicht als Kritik aufgenommen, sorry falls es so rüber kam!

ZitatJustMe  hat das super gelöst.
Da stimme ich dir zu!  :D

Wie gesagt, mal schauen was Amazon mit dem alexa Projekt die nächsten Jahre noch so auf die Beine stellt!

Letzens wurde hier im Forum ein Interessanter Beitrag geteilt, in dem wurde berichtet, dass alexa bald im Sonos Play5 intigriert sein soll.

Mal schauen was da noch so geht!
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: baukater am 10 Februar 2017, 09:56:01
Zitat von: Prof. Dr. Peter Henning am 09 Februar 2017, 08:19:06


Heute dann mal wieder bei Ivona reingeschaut, um ein paar neue "Festnachrichten" auszuprobieren - und siehe da, Ivona wurde von Amazon aufgekauft und wird jetzt als "Amazon Polly"  angeboten.
Auch das Sichern als MP3 geht jetzt babyeinfach:
https://eu-west-1.console.aws.amazon.com/polly/home/SynthesizeSpeech

Damit ist für mich klar, welchen Weg ich gehen will:

- Hardware, um auch bei Hintergrundgeräuschen einen menschlichen Sprecher und seine Worte zu isolieren (Forschungsthema ...)
- Einen Webdienst, um diese Worte in geschriebenen Text umzuwandeln (Amazon, von mir aus, auch Google, von mir aus)
- Meine eigene semantisch aufgepeppte Software zur Umsetzung in konkrete Handlungen
- Eine TTS-Engine, um Sprache auch wieder auszugeben (Amazon, von mir aus).

LG

pah

Ist es denn schon möglich diesen Dienst über fhem anzusprechen und eine MP3 zu erzeugen, die dann als Sprachausgabe genutzt werden kann?

Gruß
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: visionsurfer am 10 Februar 2017, 10:09:27
@Pah

Ja du hast recht. Das würde grundsätzlich alles jetzt schon gehen. Aber nicht direkt über Alexa, oder sauber nur mit Alexa, bzw. Amazon ECHO.
Bevor ich die Amazon ECHOS im Haus hatte, hab ich auch mit Google NOW usw. gespielt und mit einem Nexus Android Tablet was direkt am Bett steht.

Nach dem Motto "OK Google, stelle den Wecker auf 6 Uhr".

Das hat schon super geklappt.

Mir ist z.B. wichtig das ich keinen Knopf drücken muss. Also arbeite ich lieber mit "Aktivierungswort".
Was mich dann beim Tablet sehr gestört hat und was bei Alexa viel besser ist, ist die Erkennung.

Wenn ich das Tablet dann gegenüber auf einen kleinen Schrank stelle, erkennt es nicht mehr "OK Google". Oder ich muss total brüllen.

Der Amazon ECHO reagiert teilweise aus 10 Meter Entfernung, noch ohne Probleme.

Grüße,
Visionsurfer
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Waldmensch am 10 Februar 2017, 12:46:33
Zitat von: Fixel2012 am 10 Februar 2017, 09:46:23
Das mag wohl sein, aber irgendwie müssen die Daten dann ja noch zu Fhem. Darauf ist alexa glaube ich nicht ausgelegt. Ich denke Alexa ist eher ein Standalone gerät und ist nicht vorgesehen mit anderen Smart Home Controllern zu kommunizieren.

Somit ist im Moment wahrscheinlich keine Schnittstelle Verfügbar die Daten zum echo und dann erst zu Fhem zu schicken.

JustMe hat das wahrscheinlich best möglich und am einfachsten Programmiert.

Ich weiß jetzt nicht in wie fern so ein offener Port wirklich eine Sicherheitslücke ist und was damit alles angestellt werden kann, aber optimal ist es sicherlich nicht!
Also über die HA Bridge geht doch die interne Kommunikation ohne offenen Port. Man legt jeweils FHEM URI's für on/off/dim fest und kann damit sehr viel abfackeln. Zum Beispiel "Alexa, Fernseher Küche 50%" oder "Alexa, Heizung Bad 23 Grad "


Gesendet von iPhone mit Tapatalk
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 10 Februar 2017, 12:48:42
Habe ich mich bisher noch nicht befasst ::) Aber danke für den Tipp.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Waldmensch am 10 Februar 2017, 14:00:38
Mein Küchenfernseher hängt an einer alten DBox2, die bietet über das Webinterface (also URI) mute/unmute/Lautstärke 1-100 an. Komplett an/aus für TV und Box läuft über eine FHEM Schaltsteckdose "Alexa, Küche Anlage an/aus"


Gesendet von iPhone mit Tapatalk
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: newan am 10 Februar 2017, 14:05:45
Das müsste auch über den Smart Home skill gehen, da sind ja dann vom Echo/Alexa aus die normalen Hue befehle die nur umgemapped werden.

Was aber nicht geht sind Statien abfragen, wie "Wieviel % steht die Küche" etc. und andere Schaltvorgänge wie "Schalte Küche auf Pro7"..dafür müsstest du ein wenig mehr Logik haben und das geht derzeit nur über den Umweg Cloud -> Port->Bridge->fhem ...
Titel: Spracherkennung und Sprachsynthese
Beitrag von: Waldmensch am 10 Februar 2017, 14:38:41
Mir persönlich ist das zu aufwändig. Zustände setzen reicht mir aus. Zudem weiß ich, wie die Temperatureinstellungen im Automatikmodus sind, da brauche ich nicht groß nachfragen. Wetter kann Alexa schon von Haus aus. Termine werden aus dem Google Kalender geholt und für Musik sorgt die Spotify Kopplung. Ich komme derzeit noch ohne die sehr komplexe Lösung aus.

Edit: warum sollte "Alexa, Küche Pro7 an" nicht funktionieren? Wenn der Receiver das per URI kann, ist es mit der HA Bridge mit ein paar Mausklicks konfiguriert.

Gesendet von iPhone mit Tapatalk
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: newan am 10 Februar 2017, 14:47:05
Ja "Alexa, Küche Pro7 an" geht, aber das ja nciht der natürliche Satz. Dieser wäre "Alexa, SCHALTE Fernseher/Küchen Fernseher auf Pro7" und genau das geht nicht.

Will ja das die Sprachsteuerung mich versteht und nicht andersrum bzw ich genau die Sätze sagen muss die es für richtig / möglich hält ;-)

Das sit für immo natürlich alles ausreichend, ging ja darum wie es in der Zukunft sein kann oder mit ph lösung kombinierbar
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Waldmensch am 10 Februar 2017, 14:58:23
Nur um einen längeren Satz benutzen zu können der Aufwand? ;)
Ich verstehe aber was Du meinst.


Gesendet von iPhone mit Tapatalk
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: visionsurfer am 10 Februar 2017, 16:24:52
Hi,

genau da ist es halt auch noch nicht richtig RUND. Ich komme halbwegs klar, weil ich grundsätzlich weiß, welche Befehle funktionieren und welche nicht.

Aber meine Frau, stottert sich da einen zusammen. Weil man nicht direkt den natürlichen Sprachgebrauch anwenden kann.

Grüße,
Visionsurfer
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Ma_Bo am 10 Februar 2017, 16:39:06
Genau das ist auch mein Problem, man muss erst überlegen, was man sagen soll um es richtig zu machen.

Genial wäre wenn man irgendwie das was man gesprochen hat auch direkt in fhem in z.B. einem dummy, angezeigt bekommt, also der komplett gesprochene Satz.

Kann man nicht die Seite von Alexa ( http://alexa.amazon.de/spa/index.html#settings/dialogs ), auf der der Verlauf steht, irgendwie auslesen oder die App auf dem Handy irgendwie anzapfen?

Grüße Marcel
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 10 Februar 2017, 17:05:39
Na gut, plaudern wir etwas aus dem Nähkästchen.

Das Ziel ist, ganz unterschiedliche Formulierungen desselben Sachverhaltes so zu normieren, dass diese ebenfalls erkannt werden. Dazu gehört also (bei syntaktischer Toleranz) eine semantische Analyse.

Nachstehend ein Beispiel aus meiner Spracherkennung.

Darin nehme ich zunächst an dem (von Google) zurückgelieferten Satz eine semantische Analyse vor:
- Normieren bestimmter Spezialsätze
- Analyse der Eingabe nach device, verb, reading, value
- Weiterreichen an ein ziemlich längliches if..elsif..else zum Abarbeiten der einzelnen Befehle.

Das macht aus den ganz rechts stehenden Sätzen (das sind meine Testfälle) die links stehenden Daten.
Zitat
[voiceRecognition] Semantic analysis category=1.1.0: device=gerät, verb=schalten, reading=ein      <=========== dummy schalte das gerät an
[voiceRecognition] Semantic analysis category=1.2.0: device=gerät, verb=schalten, reading=ein      <=========== dummy schalte gerät an
[voiceRecognition] Semantic analysis category=1.1.1: device=gerät, verb=sagen, reading=status      <=========== dummy sage den status von gerät
[voiceRecognition] Semantic analysis category=1.2.1: device=gerät, verb=sagen, reading=status      <=========== dummy sage status von gerät
[voiceRecognition] Semantic analysis category=1.2.1: device=gerät, verb=sagen, reading=status      <=========== dummy sage status gerät
[voiceRecognition] Semantic analysis category=2.1.1: device=gerät, verb=sagen, reading=wert      <=========== dummy wie ist der wert von gerät
[voiceRecognition] Semantic analysis category=2.2.1: device=gerät, verb=sagen, reading=wert      <=========== dummy wie ist wert von gerät
[voiceRecognition] Semantic analysis category=2.1.2: device=gerät, verb=sagen, reading=wert      <=========== dummy wie ist der wert gerät
[voiceRecognition] Semantic analysis category=2.2.2: device=gerät, verb=sagen, reading=wert      <=========== dummy wie ist wert gerät
[voiceRecognition] Semantic analysis category=3.2.4: device=gerät, verb=schalten, reading=aus      <=========== dummy das gerät ausschalten
[voiceRecognition] Semantic analysis category=3.3.5: device=gerät, verb=schalten, reading=aus      <=========== dummy gerät ausschalten
[voiceRecognition] Semantic analysis category=2.1.3: device=wetter, verb=sagen, reading=morgen      <=========== dummy wie ist das wetter von morgen
[voiceRecognition] Semantic analysis category=2.2.3: device=wetter, verb=sagen, reading=morgen      <=========== dummy wie ist wetter von morgen
[voiceRecognition] Semantic analysis category=2.1.3: device=wetter, verb=sagen, reading=morgen      <=========== dummy wie ist das wetter morgen
[voiceRecognition] Semantic analysis category=2.2.3: device=wetter, verb=sagen, reading=morgen      <=========== dummy wie ist wetter morgen
[voiceRecognition] Semantic analysis category=2.2.4: device=wetter, verb=sagen, reading=morgen      <=========== dummy wie ist morgen das wetter
[voiceRecognition] Semantic analysis category=2.2.2: device=wetter, verb=sagen, reading=morgen      <=========== dummy wie ist morgen wetter
[voiceRecognition] Semantic analysis category=3.3.3: device=wetter, verb=sagen, reading=morgen      <=========== dummy wetter von morgen
[voiceRecognition] Semantic analysis category=3.3.3: device=wetter, verb=sagen, reading=morgen      <=========== dummy wetter morgen
[voiceRecognition] Semantic analysis category=3.1.0: device=zeit, verb=schalten, reading=morgen      <=========== dummy guten morgen
[voiceRecognition] Semantic analysis category=3.1.0: device=zeit, verb=schalten, reading=nacht      <=========== dummy gute nacht
[voiceRecognition] Semantic analysis category=1.1.0: device=wecker, verb=schalten, reading=aus      <=========== dummy schalte den wecker aus
[voiceRecognition] Semantic analysis category=1.2.0: device=wecker, verb=schalten, reading=aus      <=========== dummy schalte wecker aus
[voiceRecognition] Semantic analysis category=3.2.4: device=wecker, verb=schalten, reading=aus      <=========== dummy den wecker ausschalten
[voiceRecognition] Semantic analysis category=3.3.5: device=wecker, verb=schalten, reading=aus      <=========== dummy wecker ausschalten
[voiceRecognition] Semantic analysis category=2.1.5: device=wecker, verb=sagen, reading=status      <=========== dummy wie ist die weckzeit
[voiceRecognition] Semantic analysis category=2.1.1: device=wecker, verb=sagen, reading=status      <=========== dummy wie ist der status des weckers
[voiceRecognition] Semantic analysis category=3.3.5: device=wecker, verb=sagen, reading=status      <=========== dummy weckzeit ansagen
[voiceRecognition] Semantic analysis category=3.4.0: device=wecker, verb=sagen, reading=status      <=========== dummy weckzeit
[voiceRecognition] Semantic analysis category=1.1.0: device=wecker, verb=stellen, reading=auf 4 uhr 3     <=========== dummy wecken um 4 uhr 3
[voiceRecognition] Semantic analysis category=1.1.0: device=wecker, verb=stellen, reading=auf 17:00     <=========== dummy stelle den wecker auf 17:00
[voiceRecognition] Semantic analysis category=1.1.0: device=wecker, verb=stellen, reading=auf 13 uhr     <=========== dummy wecken um 13 uhr
[voiceRecognition] Semantic analysis category=3.2.4: device=haus, verb=sagen, reading=status      <=========== dummy das haus ansagen
[voiceRecognition] Semantic analysis category=3.3.5: device=haus, verb=sagen, reading=status      <=========== dummy haus ansagen
[voiceRecognition] Semantic analysis category=3.3.4: device=haus, verb=sagen, reading=status      <=========== dummy haus status
[voiceRecognition] Semantic analysis category=2.1.1: device=haus, verb=sagen, reading=status      <=========== dummy wie ist der status des hauses
[voiceRecognition] Semantic analysis category=2.1.1: device=haus, verb=sagen, reading=status      <=========== dummy wie ist der status vom haus
[voiceRecognition] Semantic analysis category=3.2.4: device=haus, verb=sichern, reading=zu      <=========== dummy das haus sichern
[voiceRecognition] Semantic analysis category=3.3.5: device=haus, verb=sichern, reading=zu      <=========== dummy haus sichern
[voiceRecognition] Semantic analysis category=3.2.4: device=haus, verb=sichern, reading=ent      <=========== dummy das haus entsichern
[voiceRecognition] Semantic analysis category=3.3.5: device=haus, verb=sichern, reading=ent      <=========== dummy haus entsichern
[voiceRecognition] Semantic analysis category=3.3.5: device=alarm, verb=schalten, reading=ein      <=========== dummy alarmanlage scharfschalten
[voiceRecognition] Semantic analysis category=3.3.5: device=alarm, verb=schalten, reading=aus      <=========== dummy alarmanlage unscharf schalten
[voiceRecognition] Semantic analysis category=3.3.5: device=alarm, verb=rufen, reading=wider      <=========== dummy alarm wider rufen
[voiceRecognition] Semantic analysis category=3.3.5: device=alarm, verb=rufen, reading=wider      <=========== dummy alarm widerrufen
[voiceRecognition] Semantic analysis category=1.2.0: device=beleuchtung, verb=schalten, reading=ein      <=========== dummy schalte beleuchtung an
[voiceRecognition] Semantic analysis category=3.3.5: device=beleuchtung, verb=schalten, reading=ein      <=========== dummy licht anschalten
[voiceRecognition] Semantic analysis category=1.2.0: device=beleuchtung_sitzgruppe, verb=schalten, reading=ein      <=========== dummy schalte beleuchtung sitzgruppe an

Der Code dafür, inklusive Testroutine:


##############################################################################
#
#  Spracherkennung
#
##############################################################################

sub TVR(){
  my $str = "";
  #--
  $str .=      voiceRecognition("none","dummy schalte das gerät an");
  $str .= "\n".voiceRecognition("none","dummy schalte gerät an");
  $str .= "\n".voiceRecognition("none","dummy sage den status von gerät");
  $str .= "\n".voiceRecognition("none","dummy sage status von gerät");
  $str .= "\n".voiceRecognition("none","dummy sage status gerät");
  #--
  $str .= "\n".voiceRecognition("none","dummy wie ist der wert von gerät");
  $str .= "\n".voiceRecognition("none","dummy wie ist wert von gerät");
  $str .= "\n".voiceRecognition("none","dummy wie ist der wert gerät");
  $str .= "\n".voiceRecognition("none","dummy wie ist wert gerät");
  #--
  $str .= "\n".voiceRecognition("none","dummy das gerät ausschalten");
  $str .= "\n".voiceRecognition("none","dummy gerät ausschalten");
  #--
  $str .= "\n".voiceRecognition("none","dummy wie ist das wetter von morgen");
  $str .= "\n".voiceRecognition("none","dummy wie ist wetter von morgen");
  $str .= "\n".voiceRecognition("none","dummy wie ist das wetter morgen");
  $str .= "\n".voiceRecognition("none","dummy wie ist wetter morgen");
  $str .= "\n".voiceRecognition("none","dummy wie ist morgen das wetter");
  $str .= "\n".voiceRecognition("none","dummy wie ist morgen wetter");
  $str .= "\n".voiceRecognition("none","dummy wetter von morgen");
  $str .= "\n".voiceRecognition("none","dummy wetter morgen");
  #--
  $str .= "\n".voiceRecognition("none","dummy guten morgen");
  $str .= "\n".voiceRecognition("none","dummy gute nacht");
  #--
  $str .= "\n".voiceRecognition("none","dummy schalte den wecker aus");
  $str .= "\n".voiceRecognition("none","dummy schalte wecker aus");
  $str .= "\n".voiceRecognition("none","dummy den wecker ausschalten");
  $str .= "\n".voiceRecognition("none","dummy wecker ausschalten");
  $str .= "\n".voiceRecognition("none","dummy wie ist die weckzeit");
  $str .= "\n".voiceRecognition("none","dummy wie ist der status des weckers");
  $str .= "\n".voiceRecognition("none","dummy weckzeit ansagen");
  $str .= "\n".voiceRecognition("none","dummy weckzeit");
  $str .= "\n".voiceRecognition("none","dummy wecken um 4 uhr 3");
  $str .= "\n".voiceRecognition("none","dummy stelle den wecker auf 17:00");
  $str .= "\n".voiceRecognition("none","dummy wecken um 13 Uhr");
  #--
  $str .= "\n".voiceRecognition("none","dummy das haus ansagen");
  $str .= "\n".voiceRecognition("none","dummy haus ansagen");
  $str .= "\n".voiceRecognition("none","dummy haus status");
  $str .= "\n".voiceRecognition("none","dummy wie ist der status des hauses");
  $str .= "\n".voiceRecognition("none","dummy wie ist der status vom haus");
  $str .= "\n".voiceRecognition("none","dummy das haus sichern");
  $str .= "\n".voiceRecognition("none","dummy haus sichern");
  $str .= "\n".voiceRecognition("none","dummy das haus entsichern");
  $str .= "\n".voiceRecognition("none","dummy haus entsichern");
  #--
  $str .= "\n".voiceRecognition("none","dummy alarmanlage scharfschalten");
  $str .= "\n".voiceRecognition("none","dummy alarmanlage unscharf schalten");
  $str .= "\n".voiceRecognition("none","dummy alarm wider rufen");
  $str .= "\n".voiceRecognition("none","dummy alarm widerrufen");
  #--
  $str .= "\n".voiceRecognition("none","dummy schalte beleuchtung an");
  $str .= "\n".voiceRecognition("none","dummy licht anschalten");
  $str .= "\n".voiceRecognition("none","dummy schalte beleuchtung sitzgruppe an");
  return $str;
 
}

sub voiceRecognition($$){

  my ($name,$command) = @_;
 
  $command = lc $command;

  #Log 1,"[voiceRecognition] with name=$name and command=$command";
 
  my ($dum,$cmd,$par) = split(/ /,$command,3);
  #Log 1,"[voiceRecognition] with cmd=$cmd and par=$par";
 
  #-- New structure
  my @vr_states    = ("status","wert","wetter","zeit","we((ck)|g\s?)zeit");
  my @vr_times     = ("heute","morgen","übermorgen","nacht");
  my %vr_verbs     = ("schalte"=>"schalten",
                      "setze"=>"setzen",
                      "stelle"=>"stellen",
                      "schließe"=>"schließen",
                      "sichern"=>"sichern",
                      "sage"=>"sagen",
                      "wecken"=>"wecken",
                      "rufen"=>"rufen");
  my @vr_verbs_prt = ("ein","an","aus","um","zu","auf","ent","wider");
  my @vr_prepo     = ("von","vom","des");
  my @vr_prono     = ("wie","wo","wann");
  my @vr_article   = ("der","die","das","den","des");
 
  my $re_states    = "((".join(")|(",@vr_states)."))";
  my $re_times     = "((".join(")|(",@vr_times)."))";
  my $re_verbs_inf = "((".join(")|(",(values %vr_verbs))."))";
  my $re_verbs_1ps = "((".join(")|(",(keys %vr_verbs))."))";
  my $re_verbs_prt = "((".join(")|(",@vr_verbs_prt)."))";
  my $re_prepo     = "((".join(")|(",@vr_prepo)."))";
  my $re_prono     = "((".join(")|(",@vr_prono)."))";
  my $re_article   = "((".join(")|(",@vr_article)."))";
 
  my $cat      =0;
  my $subcat   =0;
  my $subsubcat=0;
   
  my ($verb,$article,$device,$reading,$state,$prepo,$reserve,$value)=("","","","","","","","");
 
  #-- normalize special phrases
  my $commandn = $command;
  $commandn =~ s/wecken um/stelle den wecker auf/;
  $commandn =~ s/beleuchtung sitzgruppe/beleuchtung_sitzgruppe/;
  $commandn =~ s/beleuchtung essgruppe/beleuchtung_essgruppe/;
  $commandn =~ s/beleuchtung fernsehen/beleuchtung_fernsehen/;
  $commandn =~ s/beleuchtung schlummern/beleuchtung_schlummern/;
  $commandn =~ s/\sListe/_liste/;
  $commandn =~ s/\ssichern/ zusichern/;
  $commandn =~ s/unscharf/aus/;
  $commandn =~ s/scharf/ein/;
           
  my @word = split(' ',$commandn,8);
  #-- schalte das gerät an
  #   schalte gerät an
  #   sage den status von gerät
  #   sage status von gerät
  #   sage status gerät
  #   schalte den wecker aus ;
  #   schalte wecker aus
  if( $word[1] =~ /$re_verbs_1ps/){
    $cat = 1;
    $verb = $vr_verbs{$word[1]};
    if( $word[2] =~ /$re_article/){
      $subcat  = 1;
      $article = $word[2];
      $device  = $word[3];
      $reading = $word[4];
      $reserve = $word[5];
    }else{
      $subcat  = 2;
      $device  = $word[2];
      $reading = $word[3];
      $reserve = $word[4];
    }
    #-- verb="sage" => reading
    if(  $device =~ /$re_states/ ){
      if( $reading =~ /$re_prepo/ ){
        $subsubcat  = 1; 
        $reading = $device;
        $device  = $reserve;
      }else{
        $subsubcat  = 1;
        $reserve = $reading;
        $reading = $device;
        $device  = $reserve;
      }
    }
  #-- wie ist der wert von gerät
  #   wie ist wert von gerät
  #   wie ist der wert gerät
  #   wie ist wert gerät
  #   wie ist das wetter morgen
  #   wie ist wetter morgen
  #   wie ist morgen das wetter
  #   wie ist morgen wetter
  #   wie ist die weckzeit
  #   wie ist der status des weckers
  }elsif( $word[1] =~ /$re_prono/){
     $cat = 2;
     $verb    = "sagen";
     #-- take out article
     if( $word[3] =~ /$re_article/){
       $subcat=1;
       $article = $word[3];
       $reading = $word[4];
       #--take out preposition
       if( $word[5] =~ /$re_prepo/ ){
         $subsubcat = 1;
         $device = $word[6];
       #-- no preposition
       }else{
         $subsubcat = 2;
         $device = $word[5];
       }
    #-- no article
    }else{
      $subcat = 2;
      $reading = $word[3];
      #--take out preposition
      if( $word[4] =~ /$re_prepo/ ){
        $subsubcat = 1;
        $device = $word[5];
      #-- no preposition
      }else{
        $subsubcat = 2;
        $device = $word[4];
      }
    }
    #-- exchange on temporal statement
    if( $device =~ /$re_times/ ){
      $subsubcat = 3;
      $reserve = $device;
      $device  = $reading;
      $reading = $reserve;
    }
    if( $device =~ /$re_article/){
      $subsubcat = 4;
      $device  = $word[5];
    }
    if( $device eq ""){
      $subsubcat = 5;
      $device = $reading;
      $reading = "status";
    }
  #-- das gerät anschalten
  #   gerät anschalten
  #   das wetter von morgen
  #   wetter von morgen
  #   das wetter morgen
  #   wetter morgen
  #   guten morgen
  #   gute nacht
  #   den wecker ausschalten
  #   wecker ausschalten
  #   wecker
  }else{
    $cat = 3;
    my $rex = $re_verbs_prt." ?".$re_verbs_inf;
    if( $word[1] =~ /gut.*/){
      $subcat = 1;
      $device="zeit";
      $reading=$word[2];
      $reserve=$word[3];
      $verb="schalten";
    }elsif( $word[1] =~ /$re_article/){
      $subcat = 2;
      $article = $word[1];
      $device  = $word[2];
      #--take out preposition
      if( $word[3] =~ /$re_prepo/ ){
        $subsubcat = 1;
        $reserve = $word[4];
      }else{
        $subsubcat = 2;
        $reserve = $word[3];
      }
      #-- if time
      if( $reserve =~ /$re_times/ ){
        $subsubcat = 3;
        $reading = $reserve;
        $verb    = "sagen";
      }else{
        $subsubcat = 4;
        $reserve =~ /$rex/;
        $verb    = $10; #number verb_prt + 2
        $reading = $1;
      }
    }elsif($word[2] ne ""){
      $subcat = 3;
      $device  = $word[1];
      #--take out preposition
      if( $word[2] =~ /$re_prepo/ ){
        $subsubcat = 1;
        $reserve = $word[3].$word[4];
      }else{
        $subsubcat = 2;
        $reserve = $word[2].$word[3];
      }
      #-- if time
      if( $reserve =~ /$re_times/ ){
        $subsubcat = 3;
        $reading = $reserve;
        $verb    = "sagen";
      }elsif( $reserve =~ /status/ ){
        $subsubcat = 4;
        $reading = "status";
        $verb    = "sagen";
      }else{
        $subsubcat = 5;
        $reserve =~ /$rex/;
        $verb    = $10; #number verb_prt + 2
        $reading = $1;
      }
    }else{
      $subcat  = 4;
      $device  = $word[1];
      $reading = "status";
      $verb    = "sagen";
    }
  }
  #-- normalize devices
  $device = "haus"
    if( $device =~/hauses/);
  $device = "hauseingangstür"
    if( $device =~/haustür/);
  $device = "wecker"
    if( $device =~/we((ck)|g).*/);
  $device = "alarm"
    if( $device =~/alarm.*/);
  $device =~ s/licht/beleuchtung/;
   
  #-- normalize reading an
  $reading = "status"
    if( ($verb eq "sagen") && ($reading eq "an"));
  $reading = "ein"
    if( $reading eq "an");
   
  #-- normalize value
  $value=substr($commandn,index($commandn,"auf")+4)
    if( $reading eq "auf" );
 
  my $str="[voiceRecognition] Semantic analysis category=$cat.$subcat.$subsubcat: device=$device, verb=$verb, reading=$reading $value  \t<=========== $command";
  if( $name eq "none" ){
    return $str;
  }else{
    Log 1,$str;
  }

... Hier folgt dann der Auswertungsteil mit vielen if..elsif..else, die jeweils auf $device/$reading/$verb schauen und den $value verarbeiten

}


Gerne kann man diesen Code ausprobieren, und natürlich sammle ich weitere Testfälle.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Waldmensch am 10 Februar 2017, 18:52:23
Ich habe gestern irgendwo gelesen, das Amazon die Spracherkennung auch für 3rd Party devices zugänglich machen will. Also für "nicht Echo" Geräte. Ich finde den Artikel nur nicht mehr.


Gesendet von iPhone mit Tapatalk
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Fixel2012 am 10 Februar 2017, 19:08:44
Ja habe ich auch gelesen, Sonos arbeitet das in den Play 5 ein
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 10 Februar 2017, 19:17:32
Das muss schon kommen, wenn sich Amazon gegen Google behaupten will.

Ein Grund mehr, die ganze Steuerung nicht in die Amazon Cloud auszulagern - sondern lokal in FHEM oder einem kleinen Server zu lösen.

Nur noch die Hardware hacken ...

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: kaizo am 12 Februar 2017, 20:17:51

3rd Party:

Siehe z.B. bei Reichelt: http://www.reichelt.de/?ARTICLE=188181 (http://www.reichelt.de/?ARTICLE=188181)
Aud Click, Alexa fähiger Lautsprecher.

Leider hört Alexa erst nach einem Knopfdruck zu....
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Waldmensch am 13 Februar 2017, 00:34:45
Na das ist ja Quatsch, wenn ich erst hinlaufen und Knopf drücken muss, bin ich auch zum Lichtschalter oder Thermostat gelaufen. Zumal man für den Preis auch den Dot bekommt. Als Küchenradio hat der Dot bei uns schon vollen WAF trotz quakigem Sound.


Gesendet von iPhone mit Tapatalk
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Schlimbo am 24 Februar 2017, 08:20:30
Hallo zusammen,
habe gerade ein interessantes Hardware Projekt entdeckt:
MATRIX Voice: Open-Source Voice Platform
www.golem.de/news/matrix-voice-preiswerter-mit-spracherkennung-experimentieren-1702-126358.html (http://www.golem.de/news/matrix-voice-preiswerter-mit-spracherkennung-experimentieren-1702-126358.html)
Das wäre doch genau das richtige für Prof. Dr. Peter Henning's Vorhaben.

Gruß Schlimbo
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 24 Februar 2017, 10:06:27
Danke, habe das umgehend an einen meiner Mitarbeiter gesendet, wir werden uns das ansehen.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: SmokeMaster am 24 Februar 2017, 14:38:14
Matrix Voice hab ich mir auch direkt bestellt. Kostet nicht viel, gute Hardware und vor allem ist es offen. Damit wird in Verbindung mit FHEM deutlich mehr Möglichkeiten sein als mit Amazon Alexa oder Google Home.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: hartenthaler am 25 Februar 2017, 03:12:32
Zitat von: Prof. Dr. Peter Henning am 10 Februar 2017, 17:05:39
Darin nehme ich zunächst an dem (von Google) zurückgelieferten Satz eine semantische Analyse vor:
- Normieren bestimmter Spezialsätze
- Analyse der Eingabe nach device, verb, reading, value
- Weiterreichen an ein ziemlich längliches if..elsif..else zum Abarbeiten der einzelnen Befehle.

Genau so etwas - aber deutlich intuitiver zu konfigurieren - macht das Modul TALKTOME mit der Chatbot-Programmiersprache RiveScript (s. https://forum.fhem.de/index.php/topic,54863.msg583423.html#msg583423).

Die folgenden Testfälle

wie ist wetter von morgen
wie ist das wetter morgen
wie ist wetter morgen
wie ist morgen das wetter
wie ist morgen wetter
wetter von morgen
wetter morgen


würden in RiveScript folgendermassen formuliert werden

! array artikel = der|die|das|den|dem|des|ein|eine|einen

+ [*] wetterbericht [*]
- Hier ist der aktuelle Wetterbericht für Berlin: <call>readingsval Wetter.Berlin.Vorhersage description-2 Error</call>.

+ [wie] [ist|wird] [@artikel] wetter [von] morgen [sein|werden]
@ wetterbericht

+ [wie] [ist|wird] morgen [@artikel] wetter [sein|werden]
@ wetterbericht

wobei die Funktion "<call>readingsval ..." das Reading eines FHEM-Devices ausliest um die Antwort zu formulieren. Mit eckigen Kammern werden optionale Elemente gekennzeichnet, der Stern steht für beliebige Inhalte und der senkrechte Strich bedeutet "oder". Mit Plus wird die Eingabe/Frage eingeleitet, mit Minus die Ausgabe/Antwort und ein @ verweist auf eine andere Frage.

Ich finde RiveScript ist sehr einfach zu erlernen, ausreichend flexibel und leicht in FHEM integrierbar. Es gibt ein gutes Tutorial und einen Online-Debugger. Was es leider (noch) nicht gibt ist eine Anbindung an wikipedia oder Wolfram Alpha, so dass der Anwendungsbereich schon eher auf eine Domäne wie Smart Home beschränkt ist. Aber so kleine Dinge wie "Erzähle mir einen Witz" oder "berechne 5 Fakultät" oder "was ist sin(2 mal pi)" oder "wie ist die Temperatur im Wohnzimmer" oder "öffne die Garage" gehen ganz einfach.

Bei TalkToMe kommt der Text üblicherweise aus einem Chat per Telegram, aber das kann man sicherlich leicht anpassen, so dass der Text auch aus MatrixVoice kommen könnte. Dann kann man auf die Übertragung zu Amazon komplett verzichten und die Alexa-Funktionen rein lokal nachbilden. Ich habe meinem Chatbot (meiner heißt James und nicht Jeannie) schon vieles rund um Smart Home beigebracht, aber das ist natürlich Fleissarbeit und viele Helfer würden das Thema deutlich schneller voranbringen. Auf dem SmartPhone nutze ich übrigens auch Spracheingabe für den Telegram-Chat, aber das ist dann natürlich wieder bei Google und allen, die da mithören, bekannt; deshalb fand ich die Info zu MatrixVoice auch so spannend.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 25 Februar 2017, 10:59:22
Na, da muss ich aber an zwei Stellen widersprechen.

Fangen wir hinten an: MatrxiVoice wird, so wie ich das System verstehe, nur die Audiodaten liefern. Und eben keine Spracherkennung machen.
Für eine moderne Spracherkennung bedarf es umfangreicher statistischer Daten, um die Markov-Kette richtig zu bestücken. Das leistet kein FPGA, eine Weiterleitung an Amazon, Google oder einen anderen Datenkraken ist also immer noch nötig.

Zweiter Widerspruch - ohne RiveScript näher zu kennen, das ich mir in der Tat mal ansehen werde: Die Beispiele sind eben keine semantische Analyse, nur rudimentär (bei den Artikeln) wird etwas abstrahiert. Einfacher ausgedrückt: In dem Beispiel müsste man jeweils

wie wird das wetter morgen
wie wird das wetter übermorgen
wie ist das wetter auf dem golfplatz

separat codieren.

Da sind meine paar Zeilen schon etwas weiter.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: hartenthaler am 25 Februar 2017, 11:14:26
Da geht schon noch mehr in RiveScript. Hier mal (aus dem Kopf, ohne es getestet zu haben) ein Beispiel

! array artikel = der|die|das|den|dem|des|ein|eine|einen
! array zeit    = morgen|übermorgen

+ [*] wetterbericht [für] (@zeit) [in] [*]
- Hier ist der aktuelle Wetterbericht für <star2>: <call>readingsval Wetter.<star2>.Vorhersage <star1> Error</call>.

+ [wie] [ist|wird] (@zeit) [@artikel] wetter [in|auf dem] * [sein|werden]
* <star1> == morgen => {@ wetterbericht für morgen in <star2>}
* <star1> == übermorgen => {@ wetterbericht für übermorgen in <star2>}
- Ich kenne nur das Wetter von morgen und übermorgen.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Thyraz am 27 Februar 2017, 11:29:07
Matrix Voice sieht ja wirklich sehr cool aus. :)
Bin zur Zeit auch sehr vom Echo (Dot) begeistert und auf der anderen Seite genervt vom umständlichen Triggern des Custom Skills.

Gibt ja schon eine existierende (vielseitigere) Variante mit dem Matrix Creator.
Daher gibt es auch schon ein Beispielprojekt um Alexa drauf laufen zu lassen:
http://www.instructables.com/id/Build-a-DIY-Amazons-Alexa-With-a-Raspberry-Pi-and-/?ALLSTEPS

Das Projekt, welches in dem Tutorial verwendet wird findet man hier:
https://github.com/matrix-io/matrix-creator-alexa-voice-demo/blob/master/alexa_voice_demo.py

Dort ist auch zu sehen wie man Audio von der Hardware empfängt, als wav File speichert und an Alexa übergibt.
Hier wäre auch problemlos möglich einen anderen Audio Service wie Google Speech API anzutriggern.
Damit würde man dann einfach den erkannten Text zurück geliefert bekommen, um ihn dann wie hier diskutiert in FHEM auszuwerten.

Ich glaub ich muss mir auch so ein Matrix Voice vorbestellen. :)
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Thyraz am 27 Februar 2017, 12:54:16
Ok, das fehlende Stück war ja noch die lokale "Hotword" Erkennung.

Also das aufwachen bei einem Trigger wie "Alexa".
Gibt es auch schon (kostenlos nutzbar für non-Commercial):

https://github.com/kitt-ai/snowboy

Somit sollte man mit einem Matrix Voice + Raspberry Pi an sich alles beisammen haben was wir suchen.... :)

edit: Falls jemand irgendwann so ein Teil in der Hand hat:
Hier findet man wie man das virtuelle Mic Device (Verarbeitete Audiodaten generiert aus dem Mic-Array) mit Snowboy zum laufen bekommt:
http://community.matrix.one/t/how-to-record-with-pyaudio/357
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: yrwyddfa am 14 April 2017, 11:54:06
Hat jemand schon Erfahrungen mit  Jasper  (https://jasperproject.github.io/) gemacht? In der c't gab es da einen Artikel zum Selbstbau eines Spracherkennungsserver via pi und Jasper (onlike allerdings als Bezahlartikel):

https://m.heise.de/ct/ausgabe/2016-2-Digitaler-Assistent-mit-Offline-Spracherkennung-im-Eigenbau-3057626.html

Der Vorteil wäre auch hier der Verzicht auf eine Sprachanalyse im neugierigen Netz.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 14 April 2017, 16:59:23
Ich habe gerade ein Team aus vier Studenten an einem Projekt mit Snowboy sitzen.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: yrwyddfa am 22 April 2017, 22:09:57
Ach ja: Wofür rivescript interessant ist, wäre eine TTS-Ausgabe variabler zu machen, sprich, variierende Antworten auf die selbe Aufforderung zu generieren:

- Ich habe die Lampe im Wohnzimmer für Dich angeschaltet
- Das Licht im Wohnzimmer ist nun an
- Jetzt ist es im Wohnzimmer etwas heller
- etc.

Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 20 Mai 2017, 20:18:48
Hallo zusammen.

DiE ganze Thematik ist mehr als interessant. Mich interessieht sehr wie ihr es umsetzen wollt die Sprache/text auch zu verstehen. Google besitzt dafür ja die Natural Speaking API. Aber da man ja schon Speech to Text von extern nutzen will....Möchte man die Auswertung auf dem Heimischen Rechner erledigen. Nur wie da am besten anfangen.  Ohne Zig Sätze abzuklappern die gesagt werden könnten. Wie das abgleichen mit den Devices in FHEM? Soll ja alles "von alleine" passihren.
RiveScript sieht ja nicht schlecht aus, ist aber zu starr denke ich.
Wie sieht es dann mit der Semantik und Syntax aus?
Gruß
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 21 Mai 2017, 03:06:04
"Voin alleine" geht gar nichts, schließlich ist das ein Computer und kein Orakel.

Natürlich will man erstens nicht alle Devices unter FHEM per Sprache steuern - viel zu gefährlich. Damit bedarf es in jedem Fall einer Liste von Devices - und damit sind wir genau bei meinem Codebeispiel, das oben gepostet wurde. In ähnlicher Form läuft das bei mir ganz hervorragend.

RiveScript finde ich ziemlichen Mist, nachdem ein Student von mir das sauber aufgearbeitet und dokumentiert hat.

Bei der Hotword-.Erkennung sind wir auch weiter, mein Snowboy-Team sammelt gerade Vergleichsdaten von verschiedenen Leuten.

LG

pah

Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 21 Mai 2017, 05:58:25
Moin,
Natürlich geht so von alleine gar nichts. War vielleicht was salopp dahergesagt.
Aber ist das auflisten der Devices das Ziel?
Ich arbeite in meiner Texterkennung mit qgram Profilen um die Devices  zu identifizieren. Primär erfolgt eine semantische Auswertung...Zumindest versuche ich das. Dann erfolgt ein scoring aufgrund der qgram Profiles. Zum Abgleich der Aliase und rooms. Anschließend die Kontrolle ob das Device eine Freigabe zum bedienen hat.
Also ich habe bis jetzt nur einfache Dinge implementiert. Diese laufen aber erstaunlich gut ( aus/ ein/ umschalten., dimmen, wert setzen, hochfahren runterfahren, Status abfragen)
Da sich nicht jedes Device gleich bedient kann man benutzerdefinierte Befehle hinterlegen

Mit der Auswertung ist es möglich auch verschachtelte Sätze zu stellen und auszuwerten.

Das ganze habe ich in ein Modul geknallt und die Erweiterung auf AMAD und TelegramBot erweitert. Somit wird nicht nur der String von einem AMAD Device ausgewertet sondern auch das geschriebene von Telegram oder halt einen eigenen Satz dem man dem Modul übergeben kann. Die Antwort erfolgt, je nach Eingang, entweder auf dem Amad device(per Sprache oder Text oder umgeleitet auf Sonos Box) über den Telegram Bot an den freigegeben Peer oder in dem Modul selber.

Sprich ich habe kein Device in meinem Code.
Interagieren  ist nur mit Devices möglich die einen alias haben (und ggf room wenn eine Präposition erkannt wurde)
Von den Geräten kann man bei allen den Status abfragen
Schalten kann man nur die Geräte die freigegeben sind.
Ich muss noch ein paar Sachen fixen und dann kann ich es dir mal geben.
Ich hätte da gerne die Meinung eines Fachmanns. Und der ggf etwas mehr von der Thematik versteht.

Gruß
Tim
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: yrwyddfa am 21 Mai 2017, 08:51:53
Zitat von: Prof. Dr. Peter Henning am 21 Mai 2017, 03:06:04
RiveScript finde ich ziemlichen Mist, nachdem ein Student von mir das sauber aufgearbeitet und dokumentiert hat.

Wie kommt's? Warum ist Rivescript Mist? Gibt es denn bessere Alternativen? In meinen Augen ist RS super geeignet, wenn man nicht nur eine stoische Befehl-Ausführen-Antworten-Kette möchte sondern dem Dialog etwas mehr "Pepp" verleihen möchte. "Nerdy" aber spannend finde ich vor allem die Idee, dem Haus einwenig "Persönlichkeit" zu geben, also z.B. je nach "Laune" des Bots entweder auf "Mach bitte die Kaffeemaschine aus" als Antwort entweder ein

"Sehr gern!" oder
"Kaffee soll ja eh nicht gesund sein." oder aber
"Aha, sind wir wieder zu faul es selbst zu machen?"

Da sich RS innerhalb weniger Stunden lernen lässt, finde ich es auch für Menschen wie mich geeignet, die als dritte Fremdsprache weder Perl noch ähnliches können :)
Gibt es denn bessere Alternativen, ohne eine Programmiersprache von Pike auf lernen zu müssen?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 21 Mai 2017, 10:00:33
Soso,
Zitat"Nerdy" aber spannend

Bei mir steht eher die Usability bzw. Gebrauchstauglichkeit im Vordergund: Ein Mensch-Maschine-Dialog muss planbar, inutuitiv verstehbar und erlernbar sein. Wechselnde mehr (oder weniger, in diesem Falle ...) witzige Sprüche erfüllen diese Kriterien nicht, sie haben in einer Steuerung auch als Antworten eigentlich gar nichts verloren.

Und eine "Persönlichkeit" lässt sich so schon gar nicht simulieren - das ist höchstens eine Woche lang witzig.

LG

pah

Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: yrwyddfa am 21 Mai 2017, 15:01:45
Bei so vielen Fragen über "wie kann man Goggle Nows Hotword in "Hey Jarvis" ändern", die im Internet in den Foren kursieren, glaube ich aber schon, dass viele einen solchen Coolness-Faktor begrüßen - was man nun als witzig empfindet bleibt da ja jedem selbst überlassen.

Was ich nicht verstehe, ist, warum alternierende Antworten eine Sprachbedienung weniger intuitiv machen sollen. Die Nachvollziehbarkeit leidet ja eigentlich erst, wenn der Sprachbefehl mal ausgeführt wird und mal nicht. Wenn ich also sage: "Mach bitte das Licht an" und Fhem antwortet "nein", dann wäre das in der Tat wenig intuitiv. Aber allein schon, um eine Sprachbestätigung nicht immer nur mit einem "ok" oder "Ich habe das Licht angemacht" ablaufen zu lassen, sondern mehrere Optionen bieten zu können bietet hier ja schon eine willkommene Abwechslung - gerade wenn du ja auf "spätestens nach einer Woche" anspielst.

Ich glaube einfach, dass RS, was die Interaktion angeht, einfach mehr Optionen eröffnet wie "hartkodierte" Dialoge - wie man sie nutzt, ist ja jedem selbst überlassen - aber wenn es hier andere bzw. einfachere Wege gibt, lass ich mich sehr gern eines Besseren belehren :)
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 21 Mai 2017, 16:04:35
Was soll eigentlich das "hart kodiert" aussagen ?

Wenn man sich dumme Sprüche ansagen lässt, kommen diese natürlich aus einer Tabelle. Das ist aber nicht mehr oder weniger "hart" als ein kurzes Programm, das sich mit Hilfe einer Markov-Kette Antworten zusammenbastelt: In beiden Fällen gibt es nur eine endliche Anzahl von unterschiedlichen Antworten, die nach einem zufälligen Verfahren ausgewählt werden. Ich halte es für absurd, so etwas mit einer "Persönlichkeit" zu assoziieren.

Den "Coolness-Faktor" bevorzuge ich auch (in den SmartHome Hacks habe ich meine Vorliebe für eine Jeannie-Marilyn-HAL TTS ausführlich beschrieben), mein dienstbarer Geist heißt Jeannie. Aber deswegen lasse ich nicht die grundlegenden Regeln der Usability außer Acht.

Etwas Anderes wäre, wenn sich die Sprachansagen personalisieren ließen. Jeannie antwortet mir deshalb auch mit "Ja, Meister" - aber an der Unterscheidung der Stimmen verschiedener Hausbewohner bin ich bisher gescheitert.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 22 Mai 2017, 08:57:42
Moin Leute,

Ich würde gerne auch meine Art mit FHEM zu kommunizieren ins Rennen werfen. Ich habe mich auch mal in RS probiert allerdings ist es mir zu starr und es ist immer mehr Arbeit etwas daran zu ändern.

Mein Modul nennt sich TEERKO und soll Textbefehle (von Telegram, AMAD oder lokal im Device) umsetzen.

Ich habe das Modul in einem eigenen Thread aufgemacht:
https://forum.fhem.de/index.php/topic,72657.0.html (https://forum.fhem.de/index.php/topic,72657.0.html)

Das Modul wird ganz simpel mit folgendem Befehl definiert:
define <name> TEERKO

Schon jetzt ist das Modul in der Lage auf Befehle direkt am Device zu reagieren. (set <TEERKODevice> TextCommand Schalte die Deckenlampe in der Küche an)

Was ist nun möglich?
Das Modul analysiert den ihm übermittelten String auf Prädikat, örtliche Präposition etc usw.
Natürlich alles nur im kleinen Rahmen und nicht alles was der deutsche Wortschatz so hergibt.
Aufgrund eine qgram Profiles werden ebenfalls alias und room gefiltert.

Je nach Konstellation werden Devices:
Ein, Aus und umgeschaltet
Ein, Aus gestellt
Hoch und runter gefahren
Auf einen Wert gedimmt oder gestellt oder gefahren
Der Status abgefragt
Befehle wiederholt (Bsp. Mach das nochmal)
Alte Devices angesprochen(Keyword Gerät ohne das erkennen weiterer Devices)
Bsp. Schalte die Deckenlampe aus-> schaltet Küchen Deckenlampe aus
Bsp. Schalte das Gerät ein-> schaltet Küchen Deckenlampe ein

Vorraussetzung für die Kommunikation ist das korrekte benennen der Devices.
TEERKO soll nicht nur mit Wortfragmenten bedient werden sondern relativ menschlich.
Dementsprechend ist es notwendig auch die Geräte korrekt zu bennenen.
Beispiel:
Device: KU.SA.Deckenlampe (Raum: Küche; Gerät: Deckenlampe)
Also:
attr KU.SA.Deckenlampe alias Deckenlampe
attr KU.SA.Deckenlampe room Küche

Somit ist das Gerät eingerichtet und kann auch von TEERKO über den alias oder über den Room angesprochen werden.
Also:
TEERKO findet keine Geräte die keinen alias besitzen.
Es können keine Geräte einem Raum zugeordnet werden wenn dieser nicht in room angegeben ist.

TEERKO spricht immer nur ein Gerät an. Wie kann man mehrere Geräte in einem Satz schalten?
Beispiel:
Schalte alle Lampen im Erdgeschoss aus

Lege ein "structure" Device mit allen Lampen für das Erdgeschoss an. Das "structure" Device bekommt den alias "alle Lampen" und den Room "Erdgeschoss". Fertig und es kann bedient werden. Wenn der Status eines Structure Devices abgefragt wird, bekommt man den Status eines jeden einzelnen beinhaltenden Devices, selbst wenn ein Structure device ein anderes Structure Device enthält.

Zur Sicherheit:
Den Status kann TEERKO von jedem Device auslesen.
Zum schalten benötigt es das Reading TEERKOControl = 1, erst dann darf TEERKO das Gerät auch schalten, dimmen etc.
Schalten:
attr KU.SA.Deckenlampe TEERKOControl 1

Wenn das TEERKO Modul korrekt mit einem Telegram Device oder AMAD Device verbunden sind erfolgen die Antworten automatisch auch auf dem jeweiligen Device. Wenn ein String direkt an dem TEERKO Modul eingegeben wurde erscheint auch die Antwort in dem Reading Answer. Wichtig für den Betrieb mit AMAD. Der Flow für VoiceControl splittet den String bei "und" und sendet die Teile seperat. Das ist für den Betrieb meines Moduls üüüberhaupt nicht gut. Der String muss als ganzes übertragen werden. Das müsste noch angepasst werden. Es kann zu unerwünschten Nebeneffekten kommen solltet ihr das nicht ändern  ;)

Possible Sets:

TextCommand: <textfield> : Eingabe des auszuwertenden Satzes.
AMADAnswer: text|voice|sonos : Eingaben die über das AMAD Device erkannt werden, werden auf diesen Devices auch beantwortet. Text auf dem Display des AMAD Devices. Voice per TTS auf dem AMAD Device. Sonos auf dem SonosGerät welches unter AMADSonos gesetzt werden kann ( Sonos Speak muss funktionieren)
AMADSonos: <textfield> : Angabe des Sonos Devices wenn AMADAnswer auf sonos gestellt ist
UserDefinedCommand: <textarea> : Definieren eines User definierten Input, Kommandos und Output. Detaillierte Beschreibung später
ActivateUserDefinedCommand: <Number> 1|0 : Aktivieren oder deaktivieren eines User definierten Kommandos
DeleteUserDefindesCommand: <Number> : Der User definierte Kommando wird gelöscht.


Possible Attr:

AMADDevice: <textfiled> : Angabe des AMAD Devices welches Überwacht werden soll
TelegramDevice <textfiled> : Angabe des TelegramDevices welches Überwacht werden soll
TelegramPeer <textfiled> : Angabe der PeerID von welcher Daten angenommen werden dürfen
informlowBatterie: 1|0 : Wenn leere Batterien auftreten werden diese automatisch an alle Ausgänge geschickt
sarReading: <textfield> : Angabe von Readings und wie diese Ersetzt werden:Beispiel:  on=an;off=aus;open=offen;closed=geschlossen;home=zuhause;present=anwesend


Possible Attr in anderen Devices:

TEERKOControl: 1|0 : Darf dieses Device kontrolliert werden
TEERKOUserDef*<textfiled> : Falls die Befehle zum ausführen anderes sind als es TEERKO ausführt kann man es hier hinterlegen. Darüber ist es möglich Befehle "schöner" ausführen zu lassen.
Beispiel:
Schalte die Stehlampe aus (Bewirkt: set <Device> off)
Wenn allerdings TEERKOUserDefOff pct 0 hinterlegt ist bewirkt es  set <Device> pct 0 und die Lampe dimmt sich aus anstatt einfach auszuschalten.



Hier ein paar Beispiele aus meiner Konfiguration:
Schalte die Deckenlampe in der Küche aus
-> Schaltet das Gerät mit dem alias Deckenlampe und room Küche aus
Mach bitte alle Lampen im Wohnzimmer aus und dimme die Stehlampe im Büro auf 30%
-> Schaltet das structure device mit dem alias alle lampen und room Wohnzimmer aus und stellt das device mit dem alias Stehlampe und room Wohnzimmer auf 30

(Tip: Immer ganze Sätze stellen. Status Deckenlampe ist eher abgehackt und wird nicht erkannt. Wogegen wie ist der Status der Deckenlampe den erwünschten Effekt erzielt.

Wie ihr seht kann man auch verschachtelte Sätze stellen.
Dabei ist aber zu beachten das die Angabe eines Raumes und des Prädikates in den Satzteilen nach hinten vererbt wird.
Schalte in der Küche die Deckenlampe aus und die Tischlampe an
->Angesprochen werden in jedem Satzteil ein Device (alias Deckenlampe und alias Tischlampe) beide Devices müssen aber ebenfalls das attr room Küche beinhalten. Schalte wird ebenfalls auf den zweiten Satzteil bezogen allerdings dort mit dem Zusatz an. Somit wird die Deckenlampe in der Küche ausgeschaltet und die Tischlampe in der Küche eingeschaltet

UserDefinedCommand:
In dem Feld kann man ein Benutzerdefinierten Befehl anlegen
Beispiel in der Textarea:
IN:Mache einen Befehl anders
OUT:Ok dann werde ich das anders machen
DO:set testdevice off


Es werden also 3 Zeilen angelegt. IN, OUT und DO. Diese kann man dann mit benutzerdefinierten Befehlen füllen. Der Teil ist noch seeeeeehr schlecht aufgebaut. Aber man kann es testen.

Wenn ein Benutzerdefinierter Befehl in einem Teilstring erkannt wird, wird dieser nicht mehr ausgewertet um Devices zu schalten.


Lasst mich wissen wenn es ok, gut oder schlecht ist. Ich will mir da was schönes basteln und vielleicht kann es der eine oder andere auch gebrauchen
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: chunter1 am 22 Mai 2017, 08:58:47
Zitat von: Prof. Dr. Peter Henning am 21 Mai 2017, 16:04:35
Jeannie antwortet mir deshalb auch mit "Ja, Meister" - aber an der Unterscheidung der Stimmen verschiedener Hausbewohner bin ich bisher gescheitert.

... das muss ganz schön hart sein, wenn Jeannie nicht nur zum Dr.Dr. "Ja, Meister" sagt.  ;)
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 22 Mai 2017, 09:27:12
@chunter: Erstmal habe ich keine 2 Doktortitel - nur zwei Professuren  ;)
Na, und da gibt es natürlich noch einen Trick, mit dem ich verhindere, dass meine Göttergattin als "Meister" angeredet wird.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: the ratman am 22 Mai 2017, 09:35:54
wie könnte man den unterscheiden? denke, frequenzen angucken wäre zu einfach, oder?

btw - warum heißt dein automat nicht igor? würde doch viel besser zum  professor passen *bg*
*duck und weg*
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 22 Mai 2017, 11:15:32
"Igor" - das ist etwas für Mediziner an der Universität Ingolstadt (die gab es wirklich mal).

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: eurolift am 22 Mai 2017, 18:20:26
hallo tiroso
Habe dein Modul schon ausprobiert.Ich habe das Problem das im String mein Hotword mit übertragen wird (brauch ich für was anderes).
Würde es gehen  Wörter (Hotword) auszuklammern? Ansonsten funktioniert es schon prima ,besonders die Antworten  :).

Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Ma_Bo am 22 Mai 2017, 18:24:16
Zitat von: tiroso am 22 Mai 2017, 08:57:42
Moin Leute,

Ich würde gerne auch meine Art mit FHEM zu kommunizieren ins Rennen werfen. Ich habe mich auch mal in RS probiert allerdings ist es mir zu starr und es ist immer mehr Arbeit etwas daran zu ändern.

Mein Modul nennt sich HOMETALK und soll Textbefehle (von Telegram, AMAD oder lokal im Device) umsetzen.

Das Modul wird ganz simpel mit folgendem Befehl definiert:
define <name> HOMETALK

Schon jetzt ist das Modul in der Lage auf Befehle direkt am Device zu reagieren. (set <HomeTalkDevice> TextCommand Schalte die Deckenlampe in der Küche an)

Was ist nun möglich?
Das Modul analysiert den ihm übermittelten String auf Prädikat, örtliche Präposition etc usw.
Natürlich alles nur im kleinen Rahmen und nicht alles was der deutsche Wortschatz so hergibt.
Aufgrund eine qgram Profiles werden ebenfalls alias und room gefiltert.

Je nach Konstellation werden Devices:

  • Ein, Aus und umgeschaltet
  • Ein, Aus gestellt
  • Hoch und runter gefahren
  • Auf einen Wert gedimmt oder gestellt oder gefahren
  • Der Status abgefragt
  • Befehle wiederholt (Bsp. Mach das nochmal)
  • Alte Devices angesprochen(Keyword Gerät ohne das erkennen weiterer Devices)
    Bsp. Schalte die Deckenlampe aus-> schaltet Küchen Deckenlampe aus
    Bsp. Schalte das Gerät ein-> schaltet Küchen Deckenlampe ein

Vorraussetzung für die Kommunikation ist das korrekte benennen der Devices.
HomeTalk soll nicht nur mit Wortfragmenten bedient werden sondern relativ menschlich.
Dementsprechend ist es notwendig auch die Geräte korrekt zu bennenen.
Beispiel:
Device: KU.SA.Deckenlampe (Raum: Küche; Gerät: Deckenlampe)
Also:
attr KU.SA.Deckenlampe alias Deckenlampe
attr KU.SA.Deckenlampe room Küche

Somit ist das Gerät eingerichtet und kann auch von HomeTalk über den alias oder über den Room angesprochen werden.
Also:
HomeTalk findet keine Geräte die keinen alias besitzen.
Es können keine Geräte einem Raum zugeordnet werden wenn dieser nicht in room angegeben ist.

HomeTalk spricht immer nur ein Gerät an. Wie kann man mehrere Geräte in einem Satz schalten?
Beispiel:
Schalte alle Lampen im Erdgeschoss aus

Lege ein "structure" Device mit allen Lampen für das Erdgeschoss an. Das "structure" Device bekommt den alias "alle Lampen" und den Room "Erdgeschoss". Fertig und es kann bedient werden. Wenn der Status eines Structure Devices abgefragt wird, bekommt man den Status eines jeden einzelnen beinhaltenden Devices, selbst wenn ein Structure device ein anderes Structure Device enthält.

Zur Sicherheit:
Den Status kann HomeTalk von jedem Device auslesen.
Zum schalten benötigt es das Reading HomeTalkControl = 1, erst dann darf HomeTalk das Gerät auch schalten, dimmen etc.
Schalten:
attr KU.SA.Deckenlampe HomeTalkControl 1

Wenn das HomeTalk Modul korrekt mit einem Telegram Device oder AMAD Device verbunden sind erfolgen die Antworten automatisch auch auf dem jeweiligen Device. Wenn ein String direkt an dem HomeTalk Modul eingegeben wurde erscheint auch die Antwort in dem Reading Answer. Wichtig für den Betrieb mit AMAD. Der Flow für VoiceControl splittet den String bei "und" und sendet die Teile seperat. Das ist für den Betrieb meines Moduls üüüberhaupt nicht gut. Der String muss als ganzes übertragen werden. Das müsste noch angepasst werden. Es kann zu unerwünschten Nebeneffekten kommen solltet ihr das nicht ändern  ;)

Possible Sets:

  • TextCommand: <textfield> : Eingabe des auszuwertenden Satzes.
  • AMADAnswer: text|voice|sonos : Eingaben die über das AMAD Device erkannt werden, werden auf diesen Devices auch beantwortet. Text auf dem Display des AMAD Devices. Voice per TTS auf dem AMAD Device. Sonos auf dem SonosGerät welches unter AMADSonos gesetzt werden kann ( Sonos Speak muss funktionieren)
  • AMADSonos: <textfield> : Angabe des Sonos Devices wenn AMADAnswer auf sonos gestellt ist
  • UserDefinedCommand: <textarea> : Definieren eines User definierten Input, Kommandos und Output. Detaillierte Beschreibung später
  • ActivateUserDefinedCommand: <Number> 1|0 : Aktivieren oder deaktivieren eines User definierten Kommandos
  • DeleteUserDefindesCommand: <Number> : Der User definierte Kommando wird gelöscht.

Possible Attr:

  • AMADDevice: <textfiled> : Angabe des AMAD Devices welches Überwacht werden soll
  • TelegramDevice <textfiled> : Angabe des TelegramDevices welches Überwacht werden soll
  • TelegramPeer <textfiled> : Angabe der PeerID von welcher Daten angenommen werden dürfen
  • informlowBatterie: 1|0 : Wenn leere Batterien auftreten werden diese automatisch an alle Ausgänge geschickt
  • sarReading: <textfield> : Angabe von Readings und wie diese Ersetzt werden:Beispiel:  on=an;off=aus;open=offen;closed=geschlossen;home=zuhause;present=anwesend

Possible Attr in anderen Devices:

  • HomeTalkControl: 1|0 : Darf dieses Device kontrolliert werden
  • HomeTalkUserDef*<textfiled> : Falls die Befehle zum ausführen anderes sind als es HomeTalk ausführt kann man es hier hinterlegen. Darüber ist es möglich Befehle "schöner" ausführen zu lassen.
    Beispiel:
    Schalte die Stehlampe aus (Bewirkt: set <Device> off)
    Wenn allerdings HomeTalkUserDefOff pct 0 hinterlegt ist bewirkt es  set <Device> pct 0 und die Lampe dimmt sich aus anstatt einfach auszuschalten.

Hier ein paar Beispiele aus meiner Konfiguration:
Schalte die Deckenlampe in der Küche aus
-> Schaltet das Gerät mit dem alias Deckenlampe und room Küche aus
Mach bitte alle Lampen im Wohnzimmer aus und dimme die Stehlampe im Büro auf 30%
-> Schaltet das structure device mit dem alias alle lampen und room Wohnzimmer aus und stellt das device mit dem alias Stehlampe und room Wohnzimmer auf 30

(Tip: Immer ganze Sätze stellen. Status Deckenlampe ist eher abgehackt und wird nicht erkannt. Wogegen wie ist der Status der Deckenlampe den erwünschten Effekt erzielt.

Wie ihr seht kann man auch verschachtelte Sätze stellen.
Dabei ist aber zu beachten das die Angabe eines Raumes und des Prädikates in den Satzteilen nach hinten vererbt wird.
Schalte in der Küche die Deckenlampe aus und die Tischlampe an
->Angesprochen werden in jedem Satzteil ein Device (alias Deckenlampe und alias Tischlampe) beide Devices müssen aber ebenfalls das attr room Küche beinhalten. Schalte wird ebenfalls auf den zweiten Satzteil bezogen allerdings dort mit dem Zusatz an. Somit wird die Deckenlampe in der Küche ausgeschaltet und die Tischlampe in der Küche eingeschaltet

UserDefinedCommand:
In dem Feld kann man ein Benutzerdefinierten Befehl anlegen
Beispiel in der Textarea:
IN:Mache einen Befehl anders
OUT:Ok dann werde ich das anders machen
DO:set testdevice off


Es werden also 3 Zeilen angelegt. IN, OUT und DO. Diese kann man dann mit benutzerdefinierten Befehlen füllen. Der Teil ist noch seeeeeehr schlecht aufgebaut. Aber man kann es testen.

Wenn ein Benutzerdefinierter Befehl in einem Teilstring erkannt wird, wird dieser nicht mehr ausgewertet um Devices zu schalten.


Lasst mich wissen wenn es ok, gut oder schlecht ist. Ich will mir da was schönes basteln und vielleicht kann es der eine oder andere auch gebrauchen

Gibts dafür nen eigenen Thread, hätte ein paar Fragen und ggfs. Erweiterungen/Änderungen als Vorschlag...

Grüße Marcel
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 22 Mai 2017, 18:55:32
Ich bitte darum, dem Modul "HOMETALK" einen anderen Namen zu geben. Derzeit ensteht schon die HOMESTATE-Familie von Modulen - das ist viel zu generisch als Name.

Siehe hier:  https://forum.fhem.de/index.php/topic,72259.0.html

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 22 Mai 2017, 19:24:00
Zitat von: Prof. Dr. Peter Henning am 22 Mai 2017, 18:55:32
Ich bitte darum, dem Modul "HOMETALK" einen anderen Namen zu geben. Derzeit ensteht schon die HOMESTATE-Familie von Modulen - das ist viel zu generisch als Name.

Siehe hier:  https://forum.fhem.de/index.php/topic,72259.0.html

LG

pah

Das verstehe ich. Ich werde den Namen umgehend ändern  :)
Ich will das aber nicht als offizielles Modul einstellen. Einerseits weil ich nicht weiß wie es geht. Und anderseits weil ich nicht weiß ob ich auf dem Konstrukt eine Sprachbasierende Kontrolle weiter aufbauen kann.

Da bräuxhte ich die Meinung eines Fachmanns ob ich in die Richtung weiter machen kann.
Also klar kann ich das. Aber ob es auch Sinn macht. Das ist halt leider nur in meinem Laienhaften Leichtsinn entstanden.

@eurolift:
Was meinst du mit ausklammern? Nicht mit in die Bewertung und Analyse aufnehmen. Oder Sätze in denen kein Hotword vorkommt gar nicht erst auswerten?

@Marcel:
Wenn es generell gut ankommt kann ich das mal in Erwägung ziehen. Aber das passte gut ins Thema.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: yrwyddfa am 22 Mai 2017, 21:26:30
Zitat von: Prof. Dr. Peter Henning am 21 Mai 2017, 16:04:35
Was soll eigentlich das "hart kodiert" aussagen ?

Wenn man sich dumme Sprüche ansagen lässt, kommen diese natürlich aus einer Tabelle. Das ist aber nicht mehr oder weniger "hart" als ein kurzes Programm, das sich mit Hilfe einer Markov-Kette Antworten zusammenbastelt: In beiden Fällen gibt es nur eine endliche Anzahl von unterschiedlichen Antworten, die nach einem zufälligen Verfahren ausgewählt werden. Ich halte es für absurd, so etwas mit einer "Persönlichkeit" zu assoziieren.

Den "Coolness-Faktor" bevorzuge ich auch (in den SmartHome Hacks habe ich meine Vorliebe für eine Jeannie-Marilyn-HAL TTS ausführlich beschrieben), mein dienstbarer Geist heißt Jeannie. Aber deswegen lasse ich nicht die grundlegenden Regeln der Usability außer Acht.

Etwas Anderes wäre, wenn sich die Sprachansagen personalisieren ließen. Jeannie antwortet mir deshalb auch mit "Ja, Meister" - aber an der Unterscheidung der Stimmen verschiedener Hausbewohner bin ich bisher gescheitert.

LG

pah

Wie gesagt, ich kenne mich mit Programmierung nicht aus - und daher sind meiner Termini sicherlich auch nicht so akkurat wie sie sein könnten  ::)
Ich mag einfache Lösungen (und vor allem welche, die ich leicht verstehe  :P ). Und RS ist zwar sicher weder mächtig noch perfekt, aber es ist defacto leicht zu lernen und bringt sehr schnell recht effektive Ergebnisse (was heißt: ich kann mich auch etwas einbringen ^^).
Eine Persönlichkeit als solche zu programmieren ist natürlich nicht möglich, das sollten die Gänsefüßchen auch zum Ausdruck bringen. Aber beispielsweise immer nur 3-4 Standardantworten zu bringen, um dann beim z.B. 7. mal randomisiert irgendeinen blöden Spruch vom Stapel zu lassen hat schon was für sich und hält je nach Nutzungsintensität auch deutlich länger als eine Woche - und das muss der Usability nicht mal einen Abbruch tun (so lange man es nicht so aufsetzt, dass zuerst ein Sermon vom Stapel gelassen werden muss, ehe der eigentliche Befehl ausgeführt wird). Und wenn man dann noch die Möglichkeit hat, einen kurzen Plausch einzubauen, um bei Besuch einen Lacher auf seiner Seite zu haben - warum nicht?
Es ließe sich sogar darüber nachdenken, eine Art "Quickmode" einzubinden, in der man eben nur kurz und knackig die Befehle ohne Brimborium abgibt und eben nur kurz geantwortet wird. Unbekannte Fragen könnten dann mit einem "Du bist im Quickmode, möchtest Du ihn verlassen?" beantwortet werden.


Generell stimmt natürlich, dass man so oder so ohne weiteres keine selbstlernende bzw. sich selbst erweiternde Lösung hat (höchstens, wenn der Bot nach einer unbekannten Anfrage nachfragt, was er in Zukunft darauf antworten soll).
Alles in allem ist es ein super spannendes Thema, und wenn wir schon eine Sprachdatenbank anlegen sollten, warum sollte sie dann nicht auch mit einfacher Syntax zu bearbeiten sein (und vom "Arbeitscode" nicht getrennt)?

Liebe Grüße

yw
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: eurolift am 23 Mai 2017, 15:15:31
Ja ich möchte das das Hotword ausgeklammert wird also nicht durch die Analyse läuft.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 23 Mai 2017, 17:16:42
Uh Das habe ich vergessen. Klar. Werde ich mit reinbasteln


@pah:
Gibt es schon erste tests mit der MatrixVoice? Würde mir das sselber auch gerne holen und die Datei zur Auswertung an die Google API senden. Den String werte ich dann in FHEM mit dem Modul aus.
Kann mir das sonst jemand noch empfehlen und hat Erfahrung damit?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: kleinerDrache am 23 Mai 2017, 18:19:31
Hat von euch eigentlich schon mal jemand Alexa auf dem Raspi laufen lassen ?? LINK (https://github.com/alexa/alexa-avs-sample-app)

Edit: HIER (https://www.youtube.com/watch?v=aj7V2fr_raw) noch ein Video wies geht
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: yrwyddfa am 23 Mai 2017, 18:34:37
Nebenbei: das neue magpi - Magazin hat ein Google-AIY-Hardware-Kit, das mit Googles API zum laufen gebracht werden kann. Vielleicht was für Bastler:

https://www.raspberrypi.org/magpi/issues/57/
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Ma_Bo am 23 Mai 2017, 19:08:32
@tiroso wäre es möglich anstelle von room und alias, ein eigenes ATTR dafür anzulegen?
Meine Räume sind alle in etwa so aufgebaut

0.00_System
0.01_Wohnzimmer
0.02_Schlafzimmer
...


mit nem eigenen ATTR wäre das ganze recht einfach zu lösen und jeder könnte seine Einstellungen so lassen wie sie sind, man braucht halt nur an den devices die man steuern möchte, die beiden entsprechenden ATTR angeben.

Grüße Marcel
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: JoWiemann am 23 Mai 2017, 20:27:16
Zitat von: yrwyddfa am 23 Mai 2017, 18:34:37
Nebenbei: das neue magpi - Magazin hat ein Google-AIY-Hardware-Kit, das mit Googles API zum laufen gebracht werden kann. Vielleicht was für Bastler:

https://www.raspberrypi.org/magpi/issues/57/

sold out  :(
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 24 Mai 2017, 16:47:19
@pah:
Habe es umbenannt. Heisst nun TEERKO  (TExt ERkennung und KOntrolle). Ich muss Recht geben das so viele HOME Module nur für Verwirrung sorgen.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: yrwyddfa am 25 Mai 2017, 19:22:53
Zitat von: JoWiemann am 23 Mai 2017, 20:27:16
sold out  :(

Schade :( Aber war fast zu erwarten, dass die weggehen wie arme Semmeln. Habe auch keinen mehr bekommen.
Andererseits ist ja ziemlich genau beschrieben was gebraucht wird bzw. gibt es auch eine Warteliste:

https://aiyprojects.withgoogle.com/voice/#project-overview

Auf der Seite ist auch der Link zur SDK, vielleicht ist das ja jemandem von Nutzen :)
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 03 Juli 2017, 12:05:50
@pah:
Was machen deine 4 Studenten mit Snowboy?
Habe es soweit ans laufen bekommen. Nicht mit Python sondern mit Perl. Nach Erkennung des Hotwords wird aufgenommen und anschließend per Google in Text übersetzt. Diesen Text schicke ich per HTTP Req an mein FHEM wo ich den Text auswerte.
Habe jetzt auch ein Matrix Voice bestellt und werde das damit testen. Das PS Eye Mikro ist doch nicht so toll.

Wie läuft es bei deinen Studenen? Haben die weitere Erkenntnisse?
Gruß
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 03 Juli 2017, 18:15:22
Ja. Abschlussbericht stelle cih demnächst hie rzur Verfügung.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: sn0000py am 19 August 2017, 20:19:25
Gibt es hier an der Front mittlerweile schon was neues?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: pataya am 19 August 2017, 21:54:34
Google Home soll wohl verschiedene Benutzer als "Multi-User-Support" an der Stimme erkennen können.
Vermutlich nur über die Google-Server. ::)
Ob und inwiefern das à la Echo-Skills verwendet werden kann, keine Ahnung.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: sn0000py am 26 August 2017, 20:28:28
Ja möchte aber zumindest für den normalen Betrieb kein Alexa oder Google haben.
Den für das steuern von Licht und co, habe ich ja eh nur eine gewisse Anzahl von Wörter, da müsste es dann ja eventuell mit snowboy alleine gehen oder?
Und für spezielle Sachen kann man dann ja ein weiteres Hotword "Alexa" nehmen wo es dann doch an Alexa geht ...
Aber "Küche Licht an" und co... Das sind ja nur die Räume, die Aktoren und aktionswörter
Das man sich dann mehr an die syntax halten muss ist mir lieber wie eine länger Reaktionszeit.

Die Frage ist nur ob man sowas mit snowboy realisieren kann?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 27 August 2017, 07:33:00
Ich glaube solange es kurz und knapp bleibt ist es möglich...aber nicht praktikabel.
Du müsstest für jedes Device für jeden Befehl bei Snowboy ein Eintrag anlegen....und dermuss trainiert werden. Und da du dann der einzige bist, ist die Genauigkeit auch nicht so pralle. Vielleicht wird deine Frau sogar gar nicht erkannt.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: sn0000py am 27 August 2017, 09:58:39
ja das stimmt schon, aber ein 0815 für einen Raum brauch ja maximal Licht an/aus/heller/dunker Radio an/aus/lauter/leise Rollos/rauf/runter.

Ich habe halt die Befürchtung, das wenn snowboy, das hotword erkannt hat, ich auf ne Pause warte, das ganze an google oder co schicke und dann das ergebnis warte ...  da eine gefühlte Ewigkeit vergeht.
Und für die standard aufgaben, wäre es halt doch wichtig das es sehr sehr schnell geht.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 27 August 2017, 11:00:19
Snowboy arbeitet mit Puffern. Wenn du SB über Python einrichtest und dich etwas mit Python auseinander setzt dann schaffst du es das die Aufnahme gestartet wird ohne das eine Pause entsteht. Ist wirklich nicht viel Arbeit. Du brauchst nur eine Datei bearbeiten.
Es entsteht eine Pause wenn du den Befehl abgesetzt hast bis SB die Ruhe bemerkt und die Aufnahme beendet.
Und es entsteht eine Pause wie du schon sagtest bei der Übertragung zuGoogle und Co.
Allerdings hatte ich die bei mir unter 1 bis 2 Sekunden eher 1 Sekunde.
Für mich war es wirklich tragbar und ich hatte nicht das Gefühl das es ewig dauert.

Naja für einen Raum fallen auch mehrere Lichter an. Und auch teils mehrere Rollos. Vllt willst du auch Gruppen steuern (alle rollos erdgeschoss runter z.b) da kommen dann ziemlich schnell viele befehle zusammen.

Ich rate dir erstmal die Geschwindigkeit zu prüfen.

Ubd wenn du es seeehr sehr schnell haben willst dann lässt du Google in Echtzeit konvertieren.
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: sn0000py am 29 August 2017, 15:24:30
Übrigens gerade gefunden auf seed gibt es für raspberry ein günstigeres 4fach mikro Modul. (Kosten 25$) zwar erst als Preorder aber schaut schon mal interessant aus

https://www.seeedstudio.com/s/ReSpeaker-4-Mic-Array-for-Raspberry-Pi-p-2941.html
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: sn0000py am 15 September 2017, 13:19:31
Also ich werde mir nächste Woche das Teil mal zum Testen bestellen, kostet zwar 14$ Versand aber naja ...
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Nervenzusammenbruch am 20 September 2017, 11:08:28
Hi
Bin auf diesen sehr interessanten Thread gestossen, aufgrund der Tatsache, dass mich die Cloud basierenden Dienste - vor allem die Sprachsteuerung - doch 'etwas' stören.
Dieses Projekt habe ich die Tage ausprobiert - läuft komplett ohne Cloud auf einem raspi:
https://github.com/snipsco
https://github.com/snipsco/snips-platform-documentation/wiki/Protocol-Specification

Spracherkennung ist zwar derzeit nur in Englisch jedoch werden wohl weitere Sprachen (hoffentlich) demnächst implementiert.

Klasse ist, dass die ausgewerteten Sprachbefehle auf mqtt 'published' werden, und so eine Interaktion mit einem Client recht einfach umzusetzen ist
Meine hue Lampen werden sehr zuverlässig per Sprachbefehl eingeschaltet und auch die Farbe gesetzt.
Hab das mit homeassistant realisiert - also:
Raspi mit mic/lautsprecher im LAN -> Befehl -> MQTT -> homeassistant lauscht auf Topic hermes/nlu/intentParsed -> Lampen werden gesteuert
Ist halt noch early Beta ...
Mich versteht Snips sehr gut - meine Frau nicht .... ::)


Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: nccfast am 23 Oktober 2017, 09:02:18
@Nervenzusammenbruch:

Kann das auch auf einem Linux system installiert werden (kein Raspii)?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: enno am 29 November 2017, 21:44:39
Habt ihr DeepSpeech von Mozilla schon mal angeschaut? Was haltet ihr von dem Ansatz?

https://voice.mozilla.org/

Gruss
  Enno
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 30 November 2017, 05:48:07
Klar kenne ich das, habe auch beigetragen. Bisher aber nur Englisch, es bleibt abzuwarten, wann wir das für unsere Muttersprache verwenden können.


Da ist man bei voxforge http://www.voxforge.org/de schon etwas weiter.


Eine interessante Frage ist, ob wir durch irgendeinen Ansatz diese DNN (Deep Neural Networks) dazu bringen könnten, sich gegenseitig zu trainieren. Das ist gegenwärtig eine wichtige Forschungsfrage, unter anderem arbeitet NVIDIA daran, Roboter in Virtuellen Umgebungen zu trainieren, und die neueste Version von AlphaGo, genannt AlphaGo Prime, hat ebenfalls aus virtuellen Go-Spielen gelernt. Und konnte damit ihren Vorgänger AlphaGo besiegen, ohne dass sie vorher Millionen menschlicher Go-Spiele gelernt hat.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: the ratman am 05 Januar 2018, 23:08:46
da ich auch mal ernst machen will mit der spracherkennung und bald keine androiden mehr haben werde, frag ich mich, was ihr so von matrix voice - im speziellen die wlan-version - haltet?

ein paar fragen dazu:

mein gedankengang (is der gut?) ist: die wlan-version deswegen, weil raspberry hab ich eh bald auch keinen mehr und wlan/bt sollte die geschichte eventuell flexibler machen, wo man das mic-array hinstellen kann.

hat man schon gehäuse für die matrix voice gesichtet?

gibts da schon erfahrungswerte zu der hw und der anbindung an fhem?
und wenn ja, würde man das ganze dau-freundlich dem onkel ratti erklären wollen?
am liebsten würd ich das teil dann mit des herrn prof's babbel und dem text2speech-modul betreiben.

das befüllen von babbel mit erkanntem text ist bis jetzt das größte rätsel für meinereiner. wenn man keinen androiden hat, scheints da bei fhem noch nicht viel zu geben, dabei würd wohl googles übersetzungstool/speech2text api reichen, denk ich mal in meiner unendlichen naivität, oder?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: yrwyddfa am 07 Januar 2018, 18:42:11
Spannend, das scheint zumindest schon mal eine brauchbare Hardwarealternative zum G-Home oder Alexa zu sein. Hat sich das  jemand schon mal zu Gemüte geführt?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 09 Januar 2018, 07:58:01
Hat jemand denn schon ein Matrix Voice?
Ich habe mir ein Matrix Voice und ein 4 Mic Array bestellt. Leider beides noch nicht da.

Also schön und gut wenn die beiden da sind.
Vielleicht hat jemand schon passende Scripte (python vllt) um die aufnahme zu starten, bei google/bing/amazon/o.w.a.i. auswerten und an fhem zu schicken. (Modul?)
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 09 Januar 2018, 08:20:58
Ich habe eine lauffähige Snowboy-Installation, um auf ein Schlüsselwort zu reagieren.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 09 Januar 2018, 08:25:00
Mit Matrix Voice?

So eine lauffähige Version auf Snowboy hatte ich auch allerdings mit einer PS Kamera ;D
Hast du auch eine Lauffähige Version die auf das Keyword reagiert...die Aufnahme bis zur "Ruhezeit" startet und anschließend in Text via SpeechApi  unwandelt? Das wäre super
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: the ratman am 09 Januar 2018, 08:42:08
Zitat von: tiroso am 09 Januar 2018, 07:58:01~snip~ Vielleicht hat jemand schon passende Scripte (python vllt) um die aufnahme zu starten, bei google/bing/amazon/o.w.a.i. auswerten und an fhem zu schicken. (Modul?)
oh ja, oh ja, wir nähern uns meiner träume. 100% anschließe - wäre genau das, was ich suche und würde als eigenständiges modul ja z.b. genau den wünschen der unabhängikeit und universalität unseres herrn professor entsprechen. mir schwebt da schon vor, wie man in ein reading seine eingangs-hw angibt und in nem 2. reading aussuchen kann, welche speechapi man den gerne verwenden wollen würde.
das mit dem lokalen schlüsselwort find ich auch extrem gut - sehr schwer, den snowboy zu installieren und einzurichten?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 09 Januar 2018, 08:49:03
Gemach.

Nein, ich habe auch (noch) keine Matrix Voice. Wir haben das aber mit "normalen" Mikrofonen diversen Tests unterzogen, siehe Anhang.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 09 Januar 2018, 08:59:34
Zitat von: the ratman am 09 Januar 2018, 08:42:08
sehr schwer, den snowboy zu installieren und einzurichten?

Nein. Das ganze ist doch sehr einfach einzurichten.

Man muss das Python script welches von Snowboy schon bereitgestellt wird etwas modifizieren. Und schon kann man Aufnahmen nach dem Keyword sagen. Das Handling mit den BufferedStreams und der VoiceDetecziontion war nur was frickelig.
Titel: Spracherkennung und Sprachsynthese: Audeme MOVI
Beitrag von: Uwe B. am 10 Januar 2018, 14:02:14
Hallo,

hat jemand bereits mit dem Arduino Shield MOVI (http://www.audeme.com) (My Own Voice Interface) Erfahrungen sammeln können?

Bisher konnte ich lesen:
Es ist ein komplett lokal arbeitendes Spracherkennungs- und Synthesemodul, das als HAT auf den Arduino oder (Maker-Lösung) über die serielle Schnittstelle direkt an einen RasPi gekoppelt werden kann. Die Spracherkennung läuft komplett lokal und zielt im Wesentlichen auf das Erkennen von vorgebbaren (Text-Strings) Sentences/Words hinaus - allerdings ohne Anlernen durch den Sprecher sondern bereits Personen neutral. (Allerdings müssen es Erwachsene sein).
Sprachen: Englisch (beste Qualität), Deutsch und Spanisch konfigurierbar mit geringen Geschwindigkeits- und Qualitäts-Einbußen.
Erkennung auf Basis PocketSphinx.
Synthese auf Basis eSpeak bzw. Pico (beides eher weniger gut).
Es wird von ca. 150-200 Sätzen (=Kommandos) gesprochen, die definierbar sind, alles weitere in Abhängigkeit vom Speicherverbrauch, es soll Installationen mit bis zu 1000 Worten geben.
Ein Wörterbuch für die Erkennung ist vorhanden.
API vorhanden via. serieller Schnittstelle oder direkt aus Arduino Sketch.
Liefert wahlweise erkannte Strings bzw. die Nummer des erkannten Patterns.

Kostet ca. 65 Euro.

Illustration: https://www.youtube.com/watch?v=ymL68nrYNZo
Selbstdarstellung: https://www.youtube.com/watch?v=MAwgJyN0blc
Erfahrungsbericht: https://janbpunkt.de/2017/01/21/spracherkennung-mit-dem-arduino/
Projekt auf Deutsch: http://www.instructables.com/id/Connection-less-German-Speech-Recognition-and-Synt/
Handbuch: http://www.audeme.com/uploads/4/3/9/9/43997575/movi_11usermanual111.pdf

Vielleicht hat ja bereits jemand damit Erfahrungen sammeln können?
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 10 Januar 2018, 21:54:04
Von solchen Bastellösungen halte ich wenig. Mein Ziel ist eher, das Modell von Snowboy zu hacken.

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: tiroso am 02 Februar 2018, 14:58:53
Pah...vielleicht kannst du oder einer deiner vielen Studenten helfen :)

Ich habe seit einiger Zeit mein Matrix Voice hier liegen.

Ebenfalls hatte ich einen Testaufbau mit einer PSCam mit Snowboy...

Ich hätte gerne Snowboy mit dem Matrix Voice laufen...und bekomme es partout nicht hin. Ich weiß nicht ob es an dem MicArray liegt oder an meinen Kenntnissen.
Nach dem Hotword würde ich den Stream gerne bis zur nächsten erkannten "Stille" über Google oder Microsoft o.ä. in Text umwandeln lassen und dann an Fhem schicken lassen.
Richtig geil wäre natürlich wenn man über Fhem den LED Ring steuern könnte.

Habt ihr da was? Oder habt ihr die Zeit und die Muße was zu entwickeln?
Ich würde auch als Leihgabe mein Matrix Voice zur Verfügung stellen wenn es hilft :)
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Prof. Dr. Peter Henning am 04 Februar 2018, 13:40:21
Öh, habe leider im Moment zu viele Baustellen, um mir das noch aufzuladen.

Ach ja: Die neueste Version des Babble-Moduls enthält einen RiveScript Chatbot (bisher nur im Thread erhältlich)

LG

pah
Titel: Antw:Spracherkennung und Sprachsynthese
Beitrag von: Stumpf am 20 August 2019, 11:41:30
Hallo zusammen,

da ich das Thema hier gerne verfolge, kann vielleicht der Artikel frischen Wind bringen.


LIVE TRANSCRIBE:
Googles Audio-Übersetzungs-Engine wird Open Source

https://www.golem.de/news/live-transcribe-googles-audio-uebersetzungs-engine-wird-open-source-1908-143282.html (https://www.golem.de/news/live-transcribe-googles-audio-uebersetzungs-engine-wird-open-source-1908-143282.html)

Hier das Projekt auf Github.
https://github.com/google/live-transcribe-speech-engine (https://github.com/google/live-transcribe-speech-engine)

Damit scheint eine ordentliche Umsetzung Sprache/Text möglich zu sein.