2016-05-16 14 views
17

Ich bin zum Schreiben von Alexa-Fähigkeiten neu und möchte eine Fähigkeit schreiben, um die Wörter des Sprechers zu speichern.
Zum Beispiel, wenn ich sage 'Alexa, speichern {was auch immer ich sage}', sollte es die Wörter in einer Zeichenfolge speichern.
nun von dem, was ich verstehe, die Absicht Schema etwas wieAmazon Alexa: Wörter des Benutzers des Speichers

{ 
    intents:[ 
     "intent" : "SaveIntent" 
    ] 
} 

und Äußerungen wie

SaveIntent save 
SaveIntent store 

In diesem Fall, wie kann ich speichern ‚{was ich sage}‘ enthalten sein sollte?

Antwort

1

Aktualisiert: Diese Antwort ist nicht wahr. erwähnt in den Kommentaren gibt es die Amazon.Literal Slot-Typ, der dies zulassen sollte.


Alexa unterstützt derzeit nicht den Zugriff auf die rohe Spracheingabe des Benutzers. Es ist möglicherweise in der Zukunft möglich, oder Sie können sich andere Sprach-zu-Text-APIs ansehen, wie zum Beispiel Google's.

Die einzige Möglichkeit, dies derzeit mit Alexa zu tun wäre, eine Liste von Wörtern zu haben, die der Benutzer sagen könnte, dass es speichern würde.

Um dies zu tun, können Sie einem der Amazon-Beispiele für die Verwendung eines benutzerdefinierten Steckplatzes type folgen. Dann lege alle möglichen Wörter, die der Benutzer sagen würde, in diese Kategorie.

+1

Hallo Alex, danke für deine Antwort. Es gibt einen eingebauten Befehl, 'Alexa, Simon sagt ...', der wiederholt, was der Sprecher danach sagt. Ich habe mich gefragt, wie die rohe Spracheingabe in diesem Fall gespeichert wird. –

+1

Drittanbieter-Entwickler haben derzeit nicht Zugriff auf alle die Macht von Alexa, können Sie dies in einigen von Amazon Apps wie der Musiksuche sowie einige hochkarätige Apps wie Uber, die den Benutzer Standort, sondern eine allgemeine erhalten können App-Entwickler können nicht. Hoffentlich ändert sich dies in der Zukunft, wenn die Plattform reift. –

+2

Diese Antwort ist nicht wahr - Sie können den Slot-Typ 'AMAZON.Literal' implementieren, der das Erfassen von Freiformeingabe ermöglicht. Sie müssen jedoch eine Vielzahl von Beispieleingaben bereitstellen, um zu trainieren, welche Art von Eingängen zu erwarten sind. –

12

Um Freiform-Spracheingabe zu erfassen (anstatt einer definierten Liste möglicher Werte), müssen Sie den Steckplatztyp AMAZON.LITERAL verwenden. Die Amazon documentation for the Literal slot type beschreibt einen ähnlichen Anwendungsfall, in dem eine Fähigkeit erstellt wird, um einen beliebigen Ausdruck zu nehmen und ihn auf einer Social Media-Website zu veröffentlichen. Dies wird durch die Schaffung einer StatusUpdate Absicht getan:

{ 
    "intents": [ 
    { 
     "intent": "StatusUpdate", 
     "slots": [ 
     { 
      "name": "UpdateText", 
      "type": "AMAZON.LITERAL" 
     } 
     ] 
    } 
    ] 
} 

Da es den AMAZON.LITERAL Schlitztyp verwendet, wird diese Absicht in der Lage, jede beliebige Phrase zu erfassen. Um jedoch sicherzustellen, dass die Sprach-Engine einen ordentlichen Job bei der Erfassung von echten Phrasen leistet, müssen Sie eine Vielzahl von Beispiel-Äußerungen bereitstellen, die den Dingen ähneln, die Sie vom Benutzer erwarten.

im beschriebenen Szenario gegeben, dass Sie versuchen, sehr dynamische Sätze zu erfassen, gibt es ein paar Dinge in der Dokumentation, die Sie zusätzliche Gegenleistung geben möchten werden:

Wenn Sie verwenden die AMAZON.LITERAL Typ Freitext mit großen Schwankungen in der Anzahl der Wörter zu sammeln, die in den Schlitz sein könnte, folgendes zu beachten:

  • Abdeckung dieses gesamte Spektrum (Minimum, Maximum und alle in b zwischen) erfordern einen sehr großen Satz von Proben. Versuchen Sie, mehrere hundert Samples oder mehr zur Verfügung zu stellen, um alle Variationen in Slot-Wert-Wörtern zu adressieren, wie oben notiert.
  • Halten Sie die Phrasen in den Slots kurz genug, dass Benutzer die gesamte Phrase ohne Pause sagen können.

Langwierige gesprochene Eingabe kann zu geringerer Genauigkeit Erfahrungen führen, so vermeiden eine gesprochene Sprache Schnittstelle entwerfen, die mehr als ein paar Worte für einen Slot Wert erfordert. Eine Phrase, die ein Benutzer nicht sprechen kann, ohne anzuhalten, ist zu lang für einen Slot-Wert.

Das heißt, hier ist das Beispiel Beispiel Utterances aus der Dokumentation, wieder:

StatusUpdate das Update veröffentlichen {angekommen | Update}

StatusUpdate veröffentlichen das Update {Abendessen Zeit | Update}

StatusAktualisieren Sie das Update {out at lunch | UpdateText}

... (mehr Beispiele zeigen Sätze wi th 4-10 Wörter)

StatusUpdate das Update veröffentlichen {gehen durch den Supermarkt an diesem Abend stoppen | Update}

Wenn Sie genügend Beispiele für unterschiedliche Längen liefern ein genaues Bild von dem Bereich zu geben, erwartete Benutzeräußerungen, dann ist Ihre Absicht in der Lage, dynamische Phrasen in realen Anwendungsfällen, auf die Sie im Bereich UpdateText zugreifen können, genau zu erfassen. Auf dieser Grundlage sollten Sie in der Lage sein, eine auf Ihre Bedürfnisse zugeschnittene Absicht umzusetzen.

+0

Wie würde ich das LITERAL "trainieren", wenn meine Eingabe so zufällig sein könnte wie "TBD-2019-UK", "17_TBD_UK_Leicester", "17_TBD_UK_Leicester 1", "18_TBD_UK_Leicester 2", "Chicago IL United States" usw. ? Es ist nicht "sehr" zufällig, aber es ist eine ziemlich zufällige Kombination des Jahres, Stadt, Staat, Land, irgendein anderer Schlüsseltext in keiner bestimmten Reihenfolge.Auch wenn 'Chicago IL United States' in Sample Utterances angegeben ist, kann LITERAL nicht etwas wie 'Pittsburgh PA USA' erfassen, es sei denn, das wird ebenfalls bereitgestellt. Es gibt keine Möglichkeit, mit ALLEN möglichen Kombinationen und Permutationen zu kommen. – Kal

+0

Plus, mehr Werte könnten vom Benutzer hinzugefügt werden. Für den Moment, auch wenn wir die Sonderzeichen ignorieren, wie können wir die Sprache des Benutzers in Text bringen? Das Problem ist, dass, wenn keine übereinstimmende Absicht gefunden wird, anstatt den Sprachtext des Benutzers zurückzugeben, meine Alexa einfach nichts unternimmt. Geht einfach ohne etwas ab. Irgendwelche Ideen? Wie in Kuldeep Ghates Kommentar unten würde ich gerne wissen, wie "Alexa, Simon sagt ..." funktioniert. Genau das versuche ich zu erreichen. Vielleicht sollte ich einen neuen Thread eröffnen? – Kal

+0

Sie werden in der Lage sein, um nicht herausfinden, wie die Simon-Funktion arbeitet, sagt, weil es eine First-Party-Fähigkeit ist, so dass es möglicherweise verwendet Funktionen, die nicht in der Öffentlichkeit Fähigkeiten Kit SDK. Als Entwickler von Drittanbietern, die beste Wahl ist, einfach eine große Vielfalt der Arten von Phrasen bieten Sie von einem Benutzer erwarten, und das Sprach-Engine wird sein Bestes tun, von denen zu extrapolieren, zu allem bereit zu sein. Leider ist das so gut wie das öffentliche SDK. –

0

(8/5/17) Leider wurde dieses Feature von Amazon mit der Beseitigung von AMAZON.LITERALS entfernt.

jedoch, je nachdem, wie interessiert Sie sind in freier Form Eingänge erfassen Sie können mit einem Eingang MODE zufrieden sein, dass ein Wort erfasst, Name, Ort, Anzahl, Brief, Symbol usw. zu einer Zeit und reiht sie zusammen in eine einzige Variable ohne Nachricht dazwischen.

Ich habe an einem Passwort-Eingabemodus gearbeitet, der geändert werden kann, um Benutzereingaben zu sammeln und zu verketten. Wenn Sie Ihre Lambda-Funktion optimieren, können Sie möglicherweise eine schnellere Benutzererfahrung für die Eingabe einiger weniger Sätze erzielen. Die Struktur ist wichtig. Der Code könnte leicht angepasst werden.

Wie Eingabe für Amazon Alexa Skills Kit (ASK) gemischte Zeichenfolge mit Zahlen? https://stackoverflow.com/a/45515598/8408056

Verwandte Themen