Laden...

Was ist hinsichtlich von Sprachsteuerung und Sprachverstehen heute möglich?

Erstellt von .NetCoding vor 11 Jahren Letzter Beitrag vor 8 Jahren 11.717 Views
.
.NetCoding Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren
Was ist hinsichtlich von Sprachsteuerung und Sprachverstehen heute möglich?

Hallo 🙂

derzeit sind ja Sprachsteuerungen groß im kommen. Ob Google Now oder Siri.
Ich würde mich selber daran mal versuchen und sowas für mich programmieren.
Auch mit dem Hintergedanken es vielleicht später in ein eigenes Home Automation System zu verknüpfen.

So eine Sprachsteuerung ist ja im Prinzip eine semantische Suchmaschine mit Spracheingabe und Ausgabe. Für mich ergeben sich 3 Hauptprobleme

  1. Spracheingabe / ausgabe
  2. Das gesprochene analysieren und in etwas klar definiertes Umwandeln
  3. Informationen ermitteln was der User haben will

Punkt 1 und 3 sind erstmal nicht so wichtig hier gibt es schon fertige Lösungen. Speech Apis gibt es und an strukturierte Informationen kommt man über Wolframalpha, Freebase oder DBpedia.

Punkt 2 ist am schwierigsten denke ich. Meine Idee ist es die Sätze in vordefinierte Keywords zu ordnen.

Beispiel: Wie alt ist Barack Obama ?
Analyse: wie alt -> Zeitangabe | Barack Obama -> Person. Fazit: Es geht um eine Zeitangabe zu einer Person

Beispiel 2: Sage mir etwas über die Geschichte des Auto
Analyse: Auto -> Objekt | Geschichte -> Entwicklung eines Objekts Fazit: Es geht um die Geschichte eines Objekts

Jetzt müsste man halt erkennen das ein Auto ein Objekt ist und Barack Obama eine Person. Aber wie will man das machen ? Eine riesige Datenbank mit berühmten Personen, Objekten , Bauwerken, etc?

🤔

Würde mich über eine Diskussion hierzu freuen 🙂

lg
.NetCoding

C
2.121 Beiträge seit 2010
vor 11 Jahren

Das dürfte tatsächlich nicht so einfach sein.
Ich glaub auch nicht dass die Sprachsteuerungen in den Smartphones mehr als einen kleinen definierten Umfang beherrschen. Namen abgleichen in Verbindung mit ein paar festen Phrasen wie "SMS an Hans-Dieter" und so weiter.
Hab das allerdings noch nicht wirklich genutzt da alle eine bisherigen Erfahrungen mit Sprachsteuerungen irgendwie viel mehr Zeit und Nerven in Anspruch genommen haben als das gute alte Eintippen 😃

16.807 Beiträge seit 2008
vor 11 Jahren

Punkt 3 ergibt sich aus der Analyse von Punkt 2.
Für Punkt 2, also das Verstehen von Sätzen und nicht nur Anhand von definierten Mustern, werden jedes Jahr Millionen an Euro und Dollar von Forschungseinrichtungen und Unternehmen ausgegeben; Resultate sind sowas wie Siri und Google Now.

Siri hat glaube ich 50 Millionen Euro zwischen Gründung und erstes Release gekostet und ist weit weg von der Perfektion.
Glaubst Du also wirklich, dass Du das als Alleinentwickler schaffst? 😉

Da Du auf eine Diskussion hinaus möchtest habe ich das ganze mal in den Smalltalk-Bereich verschoben.

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo .NetCoding,

für die Umsetzung von gesprochener Sprache in Text gibt es fertige Bibliotheken, die aber meistens was kosten.

Das weitere muss man wohl nicht viel diskutieren. Denn Spracherkennung, also das Verstehen der Bedeutung von beliebigen natürlichsprachlichen Eingaben, ist weiterhin aktuelles Forschungsthema ohne das es hier schon einen echten Durchbruch gab. Außerdem sind das - wie Abt schon angedeutet hat - meist große Projekte mit riesen Etat und mit x Mitarbeitern. Für einen Einzelkämpfer ist da nichts zu reißen. Da kriegt man nur sehr eingeschränkte Sachen hin, also das der Benutzer nur Befehle in einer festen vorgegebenen Syntax verwenden kann, z.B. "Rufe <name> an".

Dir schwebt ja so eine Art freie Kommunikation über beliebige Themen vor. Siehe dazu auch Turing-Test.

herbivore

.
.NetCoding Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren

Danke für die Antworten 😃

klar habe ich nicht unendlich viele Ressourcen wie Google. Aber wenn man mal in den Android Market schaut und sich Apps wie Alicoid oder Alpha anschaut ist es sicherlich möglich da was zu machen. Natürlich bringt man diese Apps auch schnell an ihre Grenze und in den Beschreibungen der Apps sind bereits einige "Frage Beispiele" genannt die man der App stellen kann. Trotzdem haben diese Apps eine gewisse Freiheit also man kann auch etwas von diesen Schemas abweichen.

Hinter Alicoid steckt sicherlich kein Unternehmen wie Google oder Apple.

Ich möchte also eine Methode zu finden um mit vertretbaren Aufwand die Bedeutung von Sätzen zu erkennen. Wie würdest ihr das machen?
Ist meine Keyword Methode dafür angebracht (jedes Wort mit Datenbanken abgleichen) oder wie würdet ihr herausfinden das es jetzt um eine Person in einem Satz geht?

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo .NetCoding,

naja, als Mensch kann man üblicherweise an der Stellung eines (unbekannten) Wortes im Satz herausfinden, dass es sich um einen Namen handeln muss. Bei "Wie geht es xyz?" weiß man, dass mit xyz eine Person (oder ein Tier) gemeint ist, also xyz ein Name ist. Aber da alle Fälle zu berücksichtigen, ist - beim jetzigen Stand der Technik - tierische Fleißarbeit. Andersherum muss man natürlich irgendwas haben, an dem man sich überhaupt festhalten kann, wenn man an der Satzstruktur erkennen möchte, was Subjekt, Prädikat und Objekt ist. Man braucht also wohl schon eine Datenbank, um für viele Worte mindestens ihren Typ Subjektiv, Adjektiv, Verb, ... zu erkennen. Aber wenn du das from scratch machen willst und über "Rufe xyz an" hinauskommen willst, vergiss es.

Klar man kann auch mit wenig Aufwand etwas hinbekommen, was nach viel aussieht, siehe z.B. ELIZA. Aber das läuft dann üblicherweise nicht mit einer generellen Analyse beliebiger Texte, sondern basiert auf sehr einfachen - und fehleranfälligen - Mechanismen, z.B. indem man sich auf festgelegte Schlüsselworte konzentriert.

herbivore

799 Beiträge seit 2007
vor 11 Jahren

Die Android-Apps werden aber wahrscheinlich die Voice API von Google verwenden und das nicht selber schreiben.

Der Rest bleibt dann als Grammatikanalyse wie herbivore sie beschrieben hat übrig.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
6.911 Beiträge seit 2009
vor 11 Jahren

Hallo .NetCoding,

letztlich gehts bei deiner Aufgabe um das Überführen von einer gesprochener Frage in eine Suchanfrage an eine Suchmaschine.

Der Kern besteht somit aus 2 Teilen, dem "Übersetzer" und der "Suchmaschine".

Bei der Suchmaschine könntest du auf bewährte Quellen wie Google, Wikipedia, etc. zurückgreifen. Der Übersetzer ist sicher der schwierigere Teil.

Wenn du aber die Fragen nicht wie in der natürlichen Sprache stellst, sondern "maschinennäher" wie "Alter Barack Obama" und "Geschichte Auto", so ist die Überführung in eine Suchanfrage schon einfacher, aber auch noch nicht leicht. Jedenfalls reduziert sich die Aufgabe so zur Worterkennung und den Rest übernimmt die Suchmaschine. Für die Worterkennung gibt es verschiedenste Ansätze. Ein paar davon wurden in Mikrofon Aufnahmen vergleichen [Spracherkennung], Genauigkeit, Speicherart erwähnt, sonst verweise ich auf die Literatur - v.a. das dieses Gebiet noch sehr im Forschungsstadium ist gibt es laufend neue Möglichkeiten, aber keinen Königsweg der sich bisher abzeichnen konnte.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

.
.NetCoding Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren

Ok ich sehe eine Lösung für das Problem gibt es nicht und jeder ist da noch am probieren und forschen 😃 Ich denke ich werde mich diesen Projekts mal annehmen und mal versuchen was möglich ist.

16.807 Beiträge seit 2008
vor 11 Jahren

Wenn Du das schaffen solltest, was Sprachwissenschaftler, Informatiker und sehr sehr schlaue Menschen über all die Jahre und mit all den Millionen an Euro nicht geschafft haben, dann könntest Du mit einem Durchbruch sehr sehr sehr reich werden und es dann gerne in .NET-Komponenten und C#-Snippets veröffentlichen.
Persönlich würde ich den Aufwand als Zeitverschwendung einstufen.

Für einfache Dinge, wie "rufe <name> an", gibt es schon Schnittstellen (zB DragonSpeech) und ist relativ trivial, da es eben feste Muster sind.

.
.NetCoding Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren

Vielleicht habe ich das falsch formuliert habe ich will keines Weges mit den ganz großen mithalten. Aber ich will mehr als "rufe xyz an" sondern vielleicht auch "kannst du bitte für mich xyz anrufen". Eben mit ein bisschen Dynamik und nicht nur feste vorprogrammierte Sätze sondern mit der Orientierung nach Keywords. Keine KI die sich selber was beibringt oder sonst etwas hoch Wissenschaftliches aber auch etwas mehr als

if(user ="hallo")
antwort = "hallo"

Und sowas ist denke ich machbar und auch keine Zeitverschwendung. Ich denke nicht das alles was du privat programmiert zum Geld verdienen dient und damit keine Zeitverschwendung ist.

Für Text to Speech und Speech to Text habe ich schon mal iSpeech ausgelotet. iSpeech wird auch von Alicoid verwendet.

16.807 Beiträge seit 2008
vor 11 Jahren

Ich glaube du solltest erst mal verstehen, wie die deutsche Sprache aufgebaut ist.
Spaetestens dann wirst Du merken, dass der Satz 'kannst du bitte xyz anrufen' selbst fuer die Grossen eine mehr als grosse Herausforderung ist, wenn Du nicht festen Mustern folgst sondern den Satz in sich analysieren willst.

Tut mir leid das jetzt so direkt zu sagen, aber Du gehst hier ohne jegliches Wissen sehr naiv in ein Thema rein, das viel zu gross fuer Dich und Dein Wissenstand sein wird.

Vermutlich wird selbst ein 'rufe xyz an' ohne das Nutzen einer dritten API bereits eine sehr grosse Herausforderung fuer Dich, da Du wie gesagt diesen Bereich der Informatik und Spracheissenschaften absolut unterschaetzt.

Ich werd diesbezueglich nun auch nichts mehr schreiben oder zur Diskussion beitragen, da selbst mein Text hier fuer mich nun den Bereich der Zeitverschwendung erreicht hat.
Trotzdem viel Spass beim 'rumspielen' 😉

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo .NetCoding,

um vielleicht noch ein Missverständnis zu korrigieren. Mit den passenden Bibliotheken kann man oft mit vertretbarem Aufwand das leisten, was die Bibliotheken ermöglichen. Das gilt für alle Themen, bei den die Aufgaben so schwierig sind, dass nur Experten in großen Teams mit viel Geld sie in jahrelanger Arbeit nur teilweise, aber immerhin für diesen Teil halbwegs brauchbar lösen können.

Sich selber daran zu machen, eine WAV-Datei mit gesprochener Sprache in Text umzuwandeln? Vergiss es! Eine Bibliothek zu verwenden, die das tut? Ok, kann man manchen, wenn man so eine Bibliothek findet.

Sich selber daran zu machen, den Bedeutungsinhalt eines beliebigen (textuellen) Satzes in natürlicher Sprache zu ermitteln? Vergiss es! Eine Bibliothek zu verwenden, die das tut? Ok, kann man manchen, wenn man so eine Bibliothek findet.

Bei der Suche nach einer Bibliothek, für die Erkennung gesprochener Sprache wird man vermutlich fündig werden, wenn vielleicht auch nicht kostenlos. Bei der Suche nach einer Bibliothek, die die Bedeutung von Sätzen erkennt, wird das schon viel schwieriger. Und das zu Fuß machen zu wollen, wenn man halbwegs allgemeine Sätze verstehen will, ist eben Wahnsinn.

Grundsätzlich kann man sagen, dass bei Themen, bei den es extrem schwierig und aufwändig ist, eine Lösung für das Problem in eine Bibliothek zu gießen, sehr wenig Antrieb für die Entwickler besteht, solche Bibliotheken kostenlos anzubieten. Immerhin haben sie oft großen Entwicklungsaufwand verursacht, bei gleichzeitig keiner oder nur minimaler Konkurrenz.

Aber wenn man Glück hat, und eine passende Bibliothek zu vertretbaren Kosten oder gar kostenlos zu finden, kann man natürlich auch als Einzelkämpfer das machen, was die Bibliothek hergibt. Nicht mehr und nicht weniger.

Ich hoffe, damit ist der Rahmen der (Un-)Möglichkeiten klarer umrissen.

herbivore

2.760 Beiträge seit 2006
vor 11 Jahren

Hallo .NetCoding

du kannst dir zum einschätzen des Aufwands und dem aktuellen Stand von freien Lösungen mal FreeHAL ansehen.

.
.NetCoding Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren

Danke 😃 Sehr interessantes Projekt.

Aber sowas will gar nicht machen. Ich denke ihr versteht aktuell nicht wie ich mir das vorstelle und welchen Umfang es haben wird. Eine echte natürliche Konversation mit einem Computer will ich nicht.

Ich habe mich die Tage informiert und einige Apis gefunden die mir mein Vorhaben erleichtern und erste Ideen entwickelt wie ich diese und eigene Algorithmen in einer kleinen Engine vereine. Natürlich wird es kein kleines Projekt aber es ist machbar.

Werde hier sicher bald ein Projekt Thread eröffnen dann wird hoffentlich klar was ich meine 😃

mfg

2.760 Beiträge seit 2006
vor 11 Jahren

Ich meinte hier im speziellen die grammatikalische Analyse.

P
219 Beiträge seit 2008
vor 10 Jahren

Finde das Thema auch im Bezug auf Home-Automation ziemlich interessant 😃
Gibts schon Neuigkeiten?

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo PoWl,

so viel und so schnell tut sich auf dem Gebiet nicht, dass man nach sieben Monaten schon nennenswerte Neuigkeiten erwarten kann.

Home-Automation wird allerdings ohnehin nicht so große Anforderungen stellen, weil an Gerätesteuerung (Licht an, Licht aus, Heizung wärmer, ...) nur ein relativ eng begrenztes Repertoire an Wörtern und relativ einfache Sätze erfordert.

herbivore

P
219 Beiträge seit 2008
vor 10 Jahren

Danke für die Info! Aber die Frage war eher an den TO gerichtet, im Sinne von, ob er sein Projekt schon weitergeführt hat.

.
.NetCoding Themenstarter:in
6 Beiträge seit 2012
vor 10 Jahren

Danke für die Info! Aber die Frage war eher an den TO gerichtet, im Sinne von, ob er sein Projekt schon weitergeführt hat.

Jaein. Im Moment arbeite ich daran nicht mehr. Bis Dezember hatte ich einen kleinen Prototypen fertiggestellt der dann sowas wie ein "Siri Light" war. Das heißt man konnte verschiedene Dinge wie Alter von Personen oder Informationen über dies und das (.etc) in "natürlicher Sprache" erfragen.

Ehrlich gesagt war das auch gar nicht so schwer. Hauptproblem (und da denke ich Zerbrechen sich auch die Siri und Google Now Entwickler den Kopf) ist die Spracherkennung(also das Umwandeln des gesprochenen in Textform) und das Filtern und Suchen der richtigen Informationen aus den weiten des Internets (hier gibt es schon Projekte aber die stehen auch noch am Anfang). Besonders für die deutsche Sprache sind die vorhandenen Werkzeuge extrem unausgereift.

Was ich aus dem Projekt mitgenommen habe: Auch als Hobbyprogrammierer ist die natürliche Sprache sehr interessant und auch anwendbar. Nur muss man sich auf einen Bereich konzentrieren also ein bestimmtes Ziel verfolgen. Sowas wie Siri oder Google Now ist natürlich nicht machbar.

S
1 Beiträge seit 2015
vor 8 Jahren

Hey liebe Sharper,

ich bin auch dabei einen Prototypen fertigzustellen und hab auch schon einwenig was geschafft. Gerade was die HomeAutomation angeht finde ich das sehr nützlich. Ich muss da manchen Forumsteilnehmern allerdings wiedersprechen das es eine Nummer zu hoch ist für einfache Sprachbefehle mit einwenig Dynamik. Ich bin in der Lage über Keywords meinem Programm alles zu sagen und er sucht mir das passende Raus.

zu deinem Punkt 1) Die Spracheingabe habe ich über Dragon Natural Speaking 13 realsiert. Diese besitzt mittlerweile einen ziemlich hohen Grad an Präzision was Speech to Text angeht.

Punkt 2) Ich hab viel Nachgedacht und mir Projekte angeschaut. Am einfachsten ist es wohl unter MainKeywords und SecondKeywords zu filtern.
Zum Beispiel. MainKeys: Musik, Witze
Second: rock, soft usw... natürlich ist es einmal fleißarbeit die wörter runterzuschreiben. Aber nach 30 min hat man fast alles...

Das heißt: Ich würde gerne rockige Musik hören, auf das meine Nachbarn rüberkommen.
Würde das Programm Musik und rockige erkennen und mir rockmusik abspielen mit.
Ich hab es schon soweit das ich über eine Spotify API und Wikipedia API mir alles abspielen lassen kann und mir alle Daten ziehen kann.

Punkt 3) Sprachausgabe (TTS).. da tu ich mich momentan noch schwer... Die von Windows mitgebrachte ist ja wiederlich. Bin Dabei Luquendo TTS anzubinden...

so far, dranbleiben.

grüße

2.760 Beiträge seit 2006
vor 8 Jahren

Inzwischen hat sich in dem Bereich ja doch ein bisschen was getan.
Was man sich wohl ansehen sollte wenn man über diesen Thread stolpert, wäre wohl Sirius.

Wollte es nur nicht unerwähnt lassen.

49.485 Beiträge seit 2005
vor 8 Jahren

Hallo Sharpoleos,

mit entsprechenden Vereinfachungen bekommt man sicher irgendwas hin, was in der Praxis in vielen Fällen funktioniert, insbesondere wenn der spätere Benutzer weiß, wie das System funktioniert, wo seine Möglichkeiten und Grenzen liegen und damit auch weiß, was und wie er formulieren muss, damit er verstanden wird. Nur wird so ein rein keywordbasiertes System wohl auch dann Rock spielen, wenn man ihm sagt: "Heute habe ich keine Lust auf rockige Musik, spiel was anderes." Alle der unzähligen Möglichkeiten der Verneinung zu erkennen würde da wohl den Rahmen sprengen. Dann wäre man ganz schnell wieder dabei, eben doch den vollen Inhalt des Satzes erkennen zu müssen. Und das man davon bezogen auf vollkommen beliebige Aussagen noch entfernt ist, war ja wohl der Kern der Einwände. Auf der anderen Seite stimme ich jaensen zu, dass in Sachen Praxistauglichkeit von Sprachverstehen in letzter Zeit etwas tut.

herbivore