Erstellen Sie eine Sprachanwendung am Beispiel von Google Assistant

    Jeder fünfte Einwohner der Vereinigten Staaten besitzt eine intelligente Kolonne, und es sind 47 Millionen  Menschen. Ein Assistent kann eine Erinnerung erstellen, eine To-Do-Liste erstellen, einen Wecker, einen Timer, Nachrichten lesen, Musik abspielen, Podcasts bestellen, eine Lieferung bestellen, Kinokarten kaufen und ein Taxi rufen. All dies sind "Fähigkeiten" oder "Fähigkeiten" Helfer. Sie werden auch Sprachanwendungen genannt. Für Alexa und Google Assistant werden für 2018 70 000 Anwendungen entwickelt .

    Im Jahr 2017 startete Starbucks eine Funktion zur Bestellung eines Kaffeehauses für Amazon Alexa. Neben der Zunahme der Bestellungen für die Lieferung schrieben alle möglichen Medienunternehmen darüber und schufen so eine coole PR. Dem Beispiel von Starbucks folgten Uber, Dominos, MacDonalds und sogar Tide-Waschpulver hatte seine eigene Fähigkeit für Alexa.

    Wie bei Starbucks führt die Sprachanwendung eine oder zwei Funktionen aus: Kaffee bestellen, Alarm einstellen oder Kurier anrufen. Um so etwas zu entwerfen, ist es nicht notwendig, ein interkontinentales Unternehmen zu sein. Die Idee, das Design, das Testen, die Entwicklung und die Veröffentlichung ähneln ähnlichen Phasen in der Welt der mobilen Entwicklung, weisen jedoch Funktionen für die Sprachübertragung auf. Pavel Guay erzählte ausführlich über den Prozess : Von der Idee bis zur Veröffentlichung, mit Beispielen realer Spiele, mit historischen Inserts und Analysen der Welt der Stimmentwicklung.



    Über Sprecher : Pavel Guay ( Pavelgvay ) - entwickelt Sprachschnittstellen im KODE Mobile Development Studio. Das Studio entwickelt mobile Anwendungen, beispielsweise für Utair, Pobeda, RosEvroBank, BlueOrange Bank und Whiskas. KODE verfügt jedoch über eine Abteilung, die sich mit Sprachanwendungen für Yandex.Alisa und Google Assistant befasst. Pavel hat an mehreren realen Projekten teilgenommen, tauscht Erfahrungen mit Entwicklern und Designern in diesem Bereich, darunter auch aus den USA, aus und spricht auf thematischen Konferenzen. Darüber hinaus ist Pavel der Gründer des Startup tortu.io  - ein Werkzeug für das Design von Sprachanwendungen.

    Was ist eine Konversationsanwendung?


    In einer Konversationsanwendung wird der Interaktionskanal mit dem Benutzer durch eine Konversation aufgebaut : mündlich - mit einer intelligenten Kolumne oder durch eine geschriebene Spalte, beispielsweise mit Google Assistant. Zusätzlich zur Spalte kann das Interaktionsgerät ein Bildschirm sein. Daher sind Konversationsanwendungen auch grafisch.

    Es ist richtig, eine Konversationsanwendung zu sprechen , keine Sprachanwendung, aber dies ist bereits ein fester Begriff, und ich werde ihn auch verwenden.

    Sprachanwendungen haben gegenüber mobilen Geräten einen wichtigen Vorteil: Sie müssen nicht heruntergeladen und installiert werden. Es reicht aus, den Namen zu kennen, und der Assistent beginnt alles selbst.

    Alles in allem, weil nichts heruntergeladen werden muss - sowohl Spracherkennung als auch Geschäftslogik - die gesamte Anwendung befindet sich in der Cloud. Dies ist ein großer Vorteil gegenüber mobilen Anwendungen.

    Ein bisschen Geschichte


    Die Geschichte der Sprachassistenten begann mit  Interactive Voice Response  - einem interaktiven System aufgezeichneter Sprachantworten. Vielleicht hat niemand diesen Begriff gehört, aber alle stießen auf den technischen Support und hörten den Roboter: „Drücken Sie 1, um zum Hauptmenü zu gelangen. Klicken Sie auf 2, um weitere Informationen zu erhalten “- dies ist das IVR- System. Teilweise kann IVR als erste Generation von Sprachanwendungen bezeichnet werden. Obwohl sie bereits Teil der Geschichte sind, können sie uns etwas beibringen.

    Bei der Interaktion mit dem IVR-System versuchen die meisten Personen, den Operator zu kontaktieren. Dies liegt an einer schlechten UX, wenn die Interaktion auf harten Befehlen basiert, was nur unpraktisch ist.

    Dies bringt uns zur Grundregel einer guten Konversationsanwendung.

    Eine gute Konversationsanwendung interagiert mit dem Benutzer nicht durch strikte Befehle, sondern durch eine lebendige, natürliche Konversation, die der Kommunikation zwischen Personen ähnelt.

    Ein Gespräch mit der Anwendung sollte eher wie ein Anruf bei einer Pizzeria sein, um zu bestellen, als mit dem Chat der Teams zu kommunizieren. Die gleiche Flexibilität zu erreichen, wie in einem Gespräch zwischen Menschen, wird nicht funktionieren, aber mit der Anwendung in einer angenehmen und natürlichen Sprache zu sprechen, ist vollkommen.

    Dies ist auch der Vorteil einer Stimme gegenüber grafischen Anwendungen: Sie müssen nicht lernen, sie zu benutzen . Meine Großmutter weiß nicht, wie sie über die App Websites oder Pizza bestellen soll, sie kann jedoch die Zustellung über die Spalte anrufen. Wir müssen diesen Vorteil nutzen und uns darauf einstellen, wie die Leute sagen, und sie nicht lehren, mit unserer Anwendung zu sprechen.

    Von IVR-Systemen wechseln wir in die Gegenwart - zu virtuellen Assistenten.

    Virtuelle Assistenten


    Die Sprachwelt dreht sich um virtuelle Assistenten: Google Assistant , Amazon Alexa und  Alice .

    Alles ist fast wie in der mobilen Welt angeordnet, aber anstelle von iOS- und Android-Plattformen sind Alice, Google Assistant und Alexa anstelle von Grafikanwendungen, Voice mit eigenen Namen oder Namen, und jeder Assistent verfügt über einen eigenen internen Speicher für Sprachanwendungen. Wieder einmal ist „Anwendung“ falsch, weil jede Plattform einen eigenen Begriff hat: Alice hat „Fähigkeiten“, Alex hat „Fähigkeiten“ und Google hat „Aktionen“.

    Um die Fertigkeit zu beginnen, frage ich den Assistenten: „Alex, sag Starbucks, dass ich Kaffee will!“ Alex wird die Kaffeehausanwendung in seinem Laden finden und ihm das Gespräch vermitteln. Dann findet das Gespräch nicht zwischen Alex und dem Benutzer statt, sondernzwischen dem Benutzer und der Anwendung . Viele Leute sind verwirrt und denken, dass der Assistent weiterhin mit ihnen spricht, obwohl die Anwendung eine andere Stimme hat.

    So sehen App Stores aus. Die Oberfläche ähnelt dem App Store und Google Play.


    Entwicklungsstufen für Konversationsanwendungen


    Für den Benutzer hat die Anwendung keinen Grafikteil - alles sieht aus wie ein Dialog. Äußerlich mag es scheinen, dass die Anwendung eine einfache Sache ist, sie zu erstellen ist einfach, ist es aber nicht. Entwicklungsschritte sind die gleichen wie für mobile Anwendungen.

    • Design. Bei Stimmen nicht die Bildschirme zeichnen, sondern die Dialoge ausarbeiten.
    • Die Entwicklung gliedert sich in zwei Teile: die Entwicklung von Sprachverständnissystemen und das Schreiben von Logik.
    • Testen
    • Veröffentlichung

    Die ersten beiden Stufen sind spezifisch, da die Anwendungen miteinander kommunizieren und die letzten zwei Standard sind.

    Gehen wir am Beispiel des Spiels "Rate the price" , das unter Google Assistant läuft , durch die einzelnen Phasen . Die Mechanik ist einfach: Die Anwendung zeigt dem Benutzer eine Karte mit der Ware, und er muss den Preis erraten.

    Beginnen wir den Tauchgang mit der ersten Stufe: Wir haben uns für eine Idee entschieden, eine Analyse durchgeführt, verstanden, dass der Benutzer ein Bedürfnis hat, und eine Sprachanwendung erstellen.

    Entwerfen


    Das Hauptziel ist die Gestaltung der Interaktion zwischen dem Benutzer und der Anwendung. In der mobilen Welt wird diese Stufe als Design bezeichnet. Wenn der Grafikanwendungsdesigner Karten der Bildschirme, Schaltflächen, Formen und Farbauswahl zeichnet, ermittelt der VUI-Designer den Dialog zwischen Benutzer und Anwendung: Er gibt verschiedene Zweige des Dialogs vor, denkt über Gabeln und Nebenszenarien nach, wählt Phrasenvarianten.

    Das Design wird in drei Schritten durchgeführt.

    • Dialog Beispiele
    • Zeichnen eines Flussdiagramms.
    • Aufforderungslisten erstellen.

    Dialog Beispiele


    Als Erstes müssen Sie wissen, wie die Anwendung funktioniert. Verständnis und Visionen müssen auf alle anderen übertragen werden, insbesondere wenn Sie ein Outsourcing-Unternehmen sind, und Sie müssen dem Kunden erklären, was er am Ende erhält.

    Ein mächtiges Hilfsmittel - Dialogbeispiele: eine Unterhaltung zwischen dem Benutzer und der Anwendung auf Rollen , wie im Spiel.

    Ein Beispiel für den Dialog für unser Spiel.



    Die App sagt Hallo, teilt dem Benutzer die Regeln mit, bietet an zu spielen, und wenn die Person damit einverstanden ist, zeigt sie eine Karte mit den Waren, sodass der Benutzer den Preis erraten kann.

    Das Skript hilft dabei, schnell zu verstehen, wie die Anwendung funktioniert und was sie kann, aber Beispiele von Dialogen helfen, den Hauptfehler in der Welt der Sprachschnittstellen auszusortieren.an den falschen Szenarien arbeiten .

    Es gibt eine einfache Regel: Wenn Sie sich nicht vorstellen können, wie Sie ein Skript mit einer anderen Person aussprechen, sollten Sie nicht daran arbeiten.

    Sprache und Grafik unterscheiden sich erheblich, und nicht alles, was auf grafischen Oberflächen funktioniert, funktioniert gut. Fast jede mobile Anwendung hat eine Registrierung, aber ich kann mir nicht vorstellen, wie Sie sich per Sprache registrieren können? Wie man eine intelligente Kennwortspalte diktiert: "Ein Großbuchstabe, ein Kleinbuchstabe, es ist wie ein Dollar ..." - und das alles ist laut. Und wenn ich nicht alleine bin, sondern bei der Arbeit? Dies ist ein Beispiel für ein fehlerhaftes Szenario. Wenn Sie mit der Entwicklung eines Skripts mit einem Fehler beginnen, werden Probleme damit auftreten: Sie werden nicht verstehen, wie das Skript ausgeführt wird, die Benutzer werden es nicht verstehen.

    Beispiele für Dialoge helfen, solche Momente zu finden. Um Fehler in den Szenarien zu finden, zeichnen Sie den Dialog auf, wählen Sie einen Kollegen aus, legen Sie ihn vor und spielen Sie die Rollen: Sie sind der Benutzer, der Kollege ist die Anwendung. Nach dem Rollenspiel des Dialogs wird klar, ob die Anwendung klingt oder nicht und ob der Benutzer sich wohl fühlt.

    Ein solches Problem wird ständig auftreten. Wenn Sie eine Inhouse-Entwicklung haben, werden Sie in Versuchung geraten: „Wir haben bereits eine Website, lassen Sie es einfach in Sprache umwandeln und alles wird gut!“ Oder der Kunde wird kommen und sagen: „Hier ist die mobile Anwendung. Tun Sie dasselbe mit Ihrer Stimme! “Aber das können Sie nicht. Als Spezialist sollten Sie schnell Szenarien finden, an denen nicht gearbeitet werden sollte, und dem Kunden erklären, warum. Dialogbeispiele hier helfen.

    Absolut jeder Texteditor, den Sie gewohnt sind, eignet sich für das Schreiben von Dialogen. Die Hauptsache ist, den Text aufzuschreiben und nach Rollen zu lesen.

    Blockschaltbild


    Dialogbeispiele sind ein leistungsfähiges, schnelles und kostengünstiges Werkzeug, beschreiben jedoch nur lineare Entwicklungen und  Unterhaltungen sind immer nicht linear . In unserem Spiel "Rate den Preis" kann der Benutzer zum Beispiel die Frage richtig oder falsch beantworten - dies ist die erste Verzweigung in der Gruppe derjenigen, die später angetroffen werden.

    Um nicht in allen Bereichen des Dialogs Ihrer Anwendung verwirrt zu sein, erstellen Sie ein Flussdiagramm - Visualisierung des Dialogs. Es besteht nur aus zwei Elementen:

    • Schrittdialog für den Benutzer.
    • Schrittdialog für die Anwendung.



    Das Blockdiagramm ist eine Karte unserer Anwendung, aber mit einer unangenehmen Eigenschaft - sie wächst stark, wird unlesbar und visuell unverständlich. Hier zum Beispiel ein Screenshot mit einem Teil des Flussdiagramms aus dem Szenario, in dem der Benutzer den Preis mit mehreren Gabeln erraten hat.



    Ein paar Gabeln sind nicht die Grenze, es können Dutzende oder Hunderte sein. Wir haben uns Fragen gestellt: „Was passiert, wenn eine Person richtig antwortet? Und wenn nicht? Was passiert, wenn die Versuche enden? Was ist, wenn die Ware ausgeht? Und wenn er den Preis genau rät? Was ist, wenn das Internet bei diesem oder einem anderen Schritt verschwindet? “Als Ergebnis erstellten wir ein riesiges, unlesbares Schema.

    Darin sind wir nicht alleine. Ich sprach mit einem Designer aus den USA, der an einem ernsthaften Projekt arbeitete. In dem Projekt befanden sich gleichzeitig eine IVR, eine Bank und eine Fertigkeit, und es wurde ein Flussdiagramm auf 600 Blätter aufgeblasen. Niemand verstand das Schema bis zum Ende, und als der Designer es sah, hatte sie einfach Angst.

    Ich habe Ratschläge, wie man das verhindern kann. Das Schema wird immer größer, aber versuchen Sie niemals, ein großes Flussdiagramm für die gesamte Anwendung zu erstellen - es wird umständlich sein und niemand außer Ihnen wird es verstehen. Gehen Sie zurück und  teilen Sie die Schaltung in logische Teile auf.: ein separates Szenario zur Preisabschätzung, ein separates Hilfeskript. Unterteilen Sie diese Skripts ggf. in Unterszenarien. Infolgedessen wird es mehr als eine große Karte mit unverständlichen Verbindungen geben, aber viele kleine, lesbare, gut vernetzte Schemata, in denen jeder bequem navigieren kann.

    Für Flussdiagramme passt jedes Werkzeug. Ich habe RealtimeBoard verwendet und habe immer noch Draw.io und sogar XMind . Daher habe ich meine eigene entwickelt, weil es einfach bequemer ist. Im Bild ist es nur dargestellt. Dieses Tool unterstützt unter anderem eine Unterteilung in Subscenarios.

    Aufforderungslisten


    Das letzte Artefakt, das wir in der Designphase bilden werden. Die Aufforderungsliste  ist eine Liste aller möglichen Phrasen, die eine Anwendung sagen kann.

    Es gibt eine Subtilität. Die Konversation mit der Anwendung sollte flexibel sein und einer Konversation mit einer Person ähneln. Dies bedeutet nicht nur die Möglichkeit, verschiedene Zweige zu durchlaufen, die wir auf der Stufe des Flussdiagramms getan haben, sondern auch den Klang der gesamten Unterhaltung. Eine Person wird niemals mit demselben Satz antworten, wenn Sie dieselbe Frage stellen. Die Antwort wird immer neu formuliert und klingt irgendwie anders. Die Anwendung sollte das Gleiche tun, so dass für jeden Schritt des Dialogs im Namen der Anwendung nicht eine Antwort, sondern mindestens fünf geschrieben werden müssen.



    Den Aufforderungslisten zufolge gibt es noch eine andere wichtige Sache. Die Kommunikation sollte nicht nur lebendig und flexibel sein, sondern auch  konsistent sein.in Bezug auf den Sprachstil und das allgemeine Gefühl der Benutzerkommunikation mit Ihrer Anwendung. Designer verwenden dazu eine exzellente Technik - die Charaktererstellung . Wenn ich meinen Freund anrufe, sehe ich ihn nicht, sondern stelle mir unbewusst den Gesprächspartner vor. Der Benutzer ist bei der Kommunikation mit einer intelligenten Spalte derselbe. Dies wird als Pareidalia bezeichnet .

    Auf der Seite mit den Eingabeaufforderungslisten erstellen Sie einen Charakter, für den die Anwendung spricht. Mit einem Charakter verbinden Ihre Benutzer eine Marke und eine App - dies kann eine reale oder eine fiktive Person sein. Arbeiten Sie an seinem Aussehen, seiner Biografie, seinem Charakter und seinem Humor, aber wenn Sie keine Zeit haben, bringen Sie einfach alle Ihre Phrasen in den Aufforderungsbögen zum gleichen Stil Wenn Sie angefangen haben, den Benutzer über "Sie" zu kontaktieren, wenden Sie sich nicht an anderen Stellen über "Sie". Wenn Sie einen informellen Kommunikationsstil haben, bleiben Sie überall.

    Normalerweise werden Excel- oder Google-Tabellenkalkulationen zum Erstellen von Eingabeaufforderungsblättern verwendet. Mit ihnen gehen jedoch die Routinearbeiten vorübergehend verloren. Das Blockschaltbild und die Phrasenplatine sind in keiner Weise miteinander verbunden, Änderungen müssen manuell übertragen werden, was zu einer permanenten und langen Routine führt.

    Ich benutze nicht Excel, sondern mein Werkzeug, da darin alle Phrasen direkt in das Flussdiagramm geschrieben werden und sie dem Schritt des Dialogs zugeordnet werden. Es beseitigt die Routine.

    Im Design arbeiten wir uns durch jedes Szenario: Wir schreiben ein Beispiel für einen Dialog, wir finden Nebenzweige, Fehler, behandeln es mit einem Flussdiagramm und arbeiten dann an der Art der Sprache und den Phrasen.

    Es scheint, dass jetzt alles bereit ist und Sie die Aufgabe den Entwicklern geben können, um zum Code zu gelangen, aber es gibt noch eine wichtige Phase, die noch getestet wird. Wir müssen sicherstellen, dass Designer alles richtig machen, dass die Anwendung wie gewünscht funktioniert, dass alle Sätze im gleichen Stil sind, dass wir alle Nebenzweige behandelt und alle Fehler verarbeitet haben.

    Testen


    Das Testen zu einem so frühen Zeitpunkt ist besonders für Sprachanwendungen wichtig. In der Welt der grafischen Benutzeroberflächen beschränkt sich der Benutzer auf das, was der Designer gezeichnet hat: Er geht nicht über den Bildschirm hinaus, findet keine Schaltfläche, die nicht vorhanden ist, sondern drückt nur das, was ist ...

    In der Welt der Stimme ist alles falsch: Der Benutzer kann alles sagen was immer Sie möchten, und Sie wissen nicht, wie es mit Ihrer Anwendung funktioniert, bis Sie es sehen. Es ist besser, dies bereits in einer frühen Entwurfsphase zu tun und sich auf Überraschungen vorzubereiten, bevor die teure Entwicklung beginnt.



    Anwendungen werden mit der Wizard-of-Oz- Methode getestet.. Es wird in grafischen Anwendungen verwendet, aber seltener, aber in einer Stimme ist es ein Muss. Dies ist eine Methode, wenn ein Benutzer mit dem System interagiert, vorausgesetzt, dass es existiert und eigenständig arbeitet, Sie aber den gesamten Prozess verwalten.

    Die Tests werden mit interaktiven Prototypen durchgeführt. Normalerweise muss der Designer die Entwickler auffordern, einen Prototyp zu erstellen, aber ich persönlich benutze mein Tool, da alles mit einem Klick ausgeführt wird und es nicht nötig ist, auf jemanden zu warten. Wir brauchen auch einen Benutzer. Wir rufen eine Person an, die überhaupt nicht an der Entwicklung beteiligt ist, nichts über die Anwendung weiß und ist idealerweise in Ihrem zentralasiatischen Raum enthalten. Sie laden eine Person ein, erklären, um welche Art von Anwendung es sich handelt, wie sie verwendet wird, sie in einem Raum einrichten, einen interaktiven Prototyp aktivieren und der Benutzer beginnt mit ihm zu sprechen. Der Prototyp erkennt Sprache nicht, und Sie hören, was die Person sagt, und wählen die Antwortoption, mit der die Anwendung auf jede Phrase reagiert.

    Wenn der Benutzer den Bildschirm nicht sieht, scheint es, dass die Anwendung von selbst funktioniert, aber der Prozess wird von Ihnen gesteuert. Dies ist der Test des Zauberers von Oz. Damit hören Sie nicht nur den Klang der Anwendung, sondern sehen auch, wie die Benutzer sie verwenden. Ich garantiere Ihnen, dass Sie viele aufgedeckte Skripte finden.

    Als ich das Spiel getestet habe, rief ich meinen Freund an. Er begann den Preis zu erraten und sagte, eine Salbe sei "pyatikhat" wert. Ich habe mit einem solchen Wort nicht gerechnet, ich dachte, es gäbe Optionen in 500 Rubel, tausend Rubel und nicht "Pyatikhat" oder "Mäher". Dies ist eine Kleinigkeit, die beim Testen zum Vorschein kam. Die Benutzer verwenden die Anwendung anders als Sie sich vorstellen, und beim Testen werden Kleinigkeiten und nicht funktionierende Szenarien deutlich.

    Testen Sie viel und lange, bis Sie mit der Entwicklung beginnen, bis Sie sicher sind, dass die Anwendung funktioniert und die Benutzer wie erwartet mit der Anwendung interagieren.

    Hier endet die Entwurfsphase, und wir haben Beispiele für Dialoge in unseren Händen. Ein Flussdiagramm ist eine logische Beschreibung der Funktionsweise einer Anwendung und Aufforderungslisten lauten die Anwendungen. Wir werden das alles den Entwicklern geben. Bevor ich Ihnen erzähle, wie Entwickler Anwendungen erstellen, teile ich Designtipps mit.

    Tipps


    Verwenden Sie die SSML-Auszeichnungssprache - als HTML nur für Sprache. Mit SSML können Sie eine Pause einlegen, den Grad der Empathie einstellen, betonen, vorschreiben, was Sie buchstabieren und wo Sie sich konzentrieren sollen.



    Markierte Sprache hört sich viel besser an als eine Robotersprache, und je besser die Anwendung klingt, desto angenehmer ist es, sie zu verwenden. Verwenden Sie daher SSML - es ist nicht so kompliziert.

    Denken Sie an die Momente, in denen Benutzer sich an Ihre Anwendung wenden, um Hilfe zu erhalten.Für die Stimme ist es besonders wichtig. Eine Person kann mit einem Sprecher allein in einem Raum sprechen, oder er kann mit dem Bus fahren und mit einem Smartphone sprechen. Dies sind zwei grundsätzlich verschiedene Verhaltensszenarien für eine Sprachanwendung. Bei der Bankanwendung hatten wir eine ähnliche Situation. In der Anwendung gab es ein Skript, wenn der Benutzer Informationen über das Konto erhält. Hierbei handelt es sich um private Informationen. Ich dachte, wenn jemand zu Hause spricht, ist alles in Ordnung, aber wenn er in einem Bus fährt, und die Anwendung beginnt, das Kartengleichgewicht laut auszusprechen, wird es hässlich.

    Wenn Sie über diese Momente nachdenken, können Sie feststellen, dass, wenn der Benutzer mit einem Smartphone spricht, auch wenn dies per Sprache geschieht, es besser ist, keine privaten Informationen auszulesen, sondern sie auf dem Bildschirm anzuzeigen.

    Verwenden Sie multimodales Design.

    Dies ist ein Design für verschiedene Oberflächen und Plattformen. Sprachgeräte sind in ihrer Textur sehr unterschiedlich. In der mobilen Welt unterscheiden sich Geräte nur in Plattform und Bildschirmgröße - Formfaktor. Die Stimme ist anders. Zum Beispiel hat ein Sprecher überhaupt keinen Bildschirm - nur eine Stimme. Das Smartphone verfügt über einen Bildschirm, den Sie mit dem Finger antippen können. Der Bildschirm ist riesig, aber es ist sinnlos, ihn zu berühren. Überlegen Sie, wie Ihre Anwendung auf jeder dieser Oberflächen funktioniert.

    Zum Beispiel hat ein Benutzer einen Kauf getätigt und wir möchten eine Quittung zeigen. Das Auschecken laut zu lesen ist eine schlechte Idee, weil es viele Informationen gibt und sich niemand daran erinnern wird, weil Sprachinformationen schwierig und schwierig wahrgenommen werden.



    Nach dem Prinzip des multimodalen Designs verstehen wir, dass bei einem Bildschirm die Prüfung besser zu zeigen ist als zu lesen. Wenn es keinen Bildschirm gibt, müssen wir die Hauptdaten des Schecks laut aussprechen.

    Dieser Entwurf ist abgeschlossen. Was ich erzählt habe, sind die Grundlagen, die Spitze des Eisbergs. Für das Selbststudium-Design habe ich viel Material zum Design gesammelt, am Ende des Artikels finden Sie Links.

    Entwicklung


    Wir beginnen das Gespräch mit einem universellen Schema der Anwendung auf einer beliebigen Plattform. Das Schema funktioniert mit Alice, Amazon Alexa und Google Assistant.



    Wenn ein Benutzer die Anwendung startet, führt der Assistent dies aus und überträgt die Kontrolle über die Konversation an die Anwendung. Der Benutzer sagt etwas und die Anwendung erhält den Rohtext, der vom Spracherkennungssystem verarbeitet wird.

    • Das Rohtextsystem bestimmt die Absicht des Benutzers - die Absicht , seine Parameter sind Slots und bilden die Antwort: sofort, wenn keine Logik und zusätzliche Informationen erforderlich sind, und der Webhook verwendet , wenn Logik erforderlich ist. Die gesamte Geschäftslogik in Sprachanwendungen liegt im Webhook, von dort werden Anfragen an Datenbanken, API-Aufrufe, gestellt.
    • Die Antwort wird gebildet und dem Benutzer per Sprache übermittelt oder auf dem Bildschirm angezeigt.


    Für die Verarbeitung verwenden wir Dialogflow , seine Struktur ist absolut dieselbe wie bei anderen Sprachverstehenssystemen, und wir werden die Entwicklung anhand ihres Beispiels betrachten.

    Wir bewegen uns auf die erste Verbindung - das menschliche Sprachverständnissystem oder Natural Language Understanding - NLU.

    Dialogflow




    Wir verwenden Dialogflow, da es über reichhaltige Funktionen, eine gute Dokumentation und Live-Support verfügt und einfach und schnell zu meistern ist. Dialogflow-Plattformübergreifendes Tool: Die Hauptqualifikation sind Anwendungen für Google Assistant. Für Yandex-Alice, Amazon Alexa und das Erstellen von Bots in Telegram kann es jedoch auch verwendet werden. Ein weiterer Pluspunkt ist die offene API. Sie können das System verwenden, um die Sprachsteuerung für eine Website oder eine vorhandene mobile Anwendung zu entwickeln.

    Die Hauptkomponenten von Dialogflow.

    • Agent  - Ihr Projekt, was drin ist.
    • Intents  - die Absicht des Benutzers.
    • Entitäten  - Datenobjekte.
    • Kontexte  - Kontexte, Repositorys für Informationen.

    Lassen Sie uns alle Komponenten durchgehen, aber beginnen wir mit der Hauptsache - das ist Intents.

    Absichten


    Dies ist eine Benutzerabsicht , was der Benutzer erreichen möchte. Intention ausgedrückt Phrasen. Zum Beispiel möchte der Benutzer im Spiel die Spielregeln kennen und sagt: "Erzähle die Spielregeln", "Sag mir, wie man spielt", "Hilf mir - ich bin verwirrt" oder so ähnlich. Dementsprechend erstellen wir einen separaten Intent für die Spielregeln, und bei der Eingabe schreiben wir alle diese Phrasen, die wir vom Benutzer erwarten .

    Ich rate Ihnen, 10 oder mehr Sätze zu schreiben. In diesem Fall funktioniert die Spracherkennung besser, da Dialogflow ein neuronales Netzwerk verwendet, das diese 10 Eingabesätze akzeptiert und eine Reihe anderer ähnlicher Phrasen daraus generiert. Je mehr Optionen, desto besser, aber übertreiben Sie es nicht.

    Absicht sollte die Antwort auf alle Benutzerfragen haben. In Dialogflow kann eine Antwort gebildet werden, ohne eine Logik anzuwenden. Wenn Logik erforderlich ist, wird die Antwort vom Webhook übertragen. Die Antworten können unterschiedlich sein, aber der Standard ist der Text: Er wird über die Lautsprecher ausgegeben, über Smartphones angezeigt oder gesprochen.

    Je nach Plattform stehen zusätzliche "Brötchen" zur Verfügung - grafische Elemente. Für Google Assistant sind dies beispielsweise Schaltflächen, Karteikarten, Listen und Karussells. Sie werden nur angezeigt, wenn eine Person mit Google Assistant über ein Smartphone, einen Fernseher oder ein ähnliches Gerät spricht.

    Entitäten


    Die Absicht wird gestartet, wenn der Benutzer etwas sagt. An diesem Punkt werden die Informationen übertragen - die Parameter, die als Slots bezeichnet werden , und der Datentyp der Parameter - Entitäten . Für unser Spiel sind dies beispielsweise Beispiele für Phrasen, die der Benutzer beim Erraten des Preises sagt. Es gibt zwei Parameter: Betrag und Währung.



    Parameter können erforderlich und optional sein . Wenn der Benutzer "zweitausend" antwortet, ist der Satz ausreichend. Standardmäßig nehmen wir Rubel, daher ist die Währung ein optionaler Parameter. Aber ohne die Summe können wir die Antwort nicht verstehen, da der Benutzer die Frage nicht spezifisch beantworten kann:

    Wie viel kostet es?
    viel!

    In solchen Fällen hat Dialogflow das Konzept der erneuten Aufforderung  - dies ist die Phrase, die ausgesprochen wird, wenn der Benutzer den erforderlichen Parameter nicht benennt . Für jeden Parameter wird die Phrase separat eingestellt. Für die Summe könnte es ungefähr so ​​lauten: "Geben Sie die genaue Zahl an, wie viel es kostet ..."

    Jeder Parameter muss einen Datentyp haben - Entities. Dialogflow hat viele Standarddatentypen - Städte, Namen und speichert. Das System selbst bestimmt den Namen, die Nummer und die Stadt. Sie können jedoch auch eigene benutzerdefinierte Typen festlegen. Dialogflow-Währung ist ein benutzerdefinierter Typ. Wir haben es selbst erstellt und einen technischen Systemnamen beschrieben, den wir verwenden werden, sowie Synonyme, die diesem Parameter entsprechen. Für die Währung ist der Rubel, Dollar, Euro. Wenn der Benutzer sagt: „Euro“, betont Dialogflow, dass dies unser Parameter „Währung“ ist.

    Kontext


    Stellen Sie sich dieses Wort wörtlich vor: Kontext  ist der Kontext dessen, worüber Sie mit dem Benutzer sprechen. Sie können zum Beispiel den Assistenten fragen: „Wer hat Mumu geschrieben?“ Und er wird antworten, dass es Turgenev ist. Danach können Sie fragen, wann er geboren wurde. Ich achte darauf, dass wir fragen: "Wann er  geboren wurde", ohne zu spezifizieren, wer. Google wird es verstehen, weil es sich erinnert - im Kontext des Gesprächs Turgenev.



    Aus technischer Sicht Kontext Das  - ist das Repository des „Schlüssel - Wert“in dem die Informationen gespeichert werden. Intent kann entweder den Kontext aus sich selbst ausgeben, etwas hinzufügen oder es als Eingabe akzeptieren und Informationen von dort abrufen. Der Kontext hat eine Lebensdauer. Es wird durch die Anzahl der Schritte des Dialogs ab der letzten Erwähnung bestimmt: Vergessen Sie beispielsweise nach fünf Schritten des Dialogs, was wir über Turgenev gesagt haben.

    Der Kontext hat eine weitere wichtige Funktion - er kann uns dabei helfen, die Anwendung in logische Zonen zu unterteilen: in autorisierte und nicht autorisierte, in eine Spielsitzung oder nicht. Die Aufteilung ist so aufgebaut, dass die Absicht, die den Kontext zur Eingabe verwendet, nicht ohne Kontext gestartet werden kann und der vorherige Start einer anderen Absicht erforderlich ist. So können wir unsere Anwendung logisch verknüpfen und erstellen.



    Ich erwähnte Webhook, Dialogflow hat Bibliotheken für ganz andere Sprachen, wir haben JS verwendet. Google Assistant für Webhook hat eine Einschränkung. Die Antwort sollte spätestens 5 Sekunden dauern. Andernfalls tritt ein Fehler auf und die Anwendung funktioniert im Fallback. Für Alice beträgt die Antwortzeit 1,5 oder 3 Sekunden.

    Wir haben ein Sprachverständnissystem aufgebaut, einen Webhook geschrieben und alles funktioniert für uns, wir haben QA eingeführt und jetzt ist die Zeit für die Veröffentlichung.

    Veröffentlichung




    Die Veröffentlichung ist Standard, fast wie bei mobilen Anwendungen, jedoch mit ein paar Nuancen.

    Achten Sie besonders auf den  Namen der Anwendung . Der Benutzer sagt es bei jedem Start laut aus. Daher sollte der Name für einen Assistenten leicht auszusprechen und leicht zu erkennen sein, da manchmal Probleme auftreten.

    Der Name hat zwei Regeln:

    • Sie können keine gängigen Ausdrücke verwenden . In Yandex.Alisa können Sie keine Verben verwenden. Beispielsweise können Sie den Namen "Taxi Order" nicht annehmen, da dies eine gängige Phrase ist, die viele Leute verwenden möchten.
    • Wenn Sie den Namen Ihres Unternehmens verwenden möchten, müssen Sie sich darauf einstellen , dass Sie aufgefordert werden, die Rechte zur Verwendung der Marke zu bestätigen .

    In Google Assistant lautet der Standardsatz , mit dem eine Anwendung gestartet wird, "OK, Google, sprechen Sie mit ...". Sie können diese Funktion beispielsweise verwenden: "OK, Google, sprechen Sie mit Uber" - und er startet die Anwendung auf dem Hauptbildschirm am Startpunkt. Sie können den Benutzer jedoch dazu bringen, zu sagen: "OK, Google, sagen Sie Uber, er soll mich hier abholen und dorthin bringen!" Wir verkürzen eine Iteration, und der Benutzer beginnt mit der gewünschten Aktion.

    Das Skript wird durch die Phrasen bestimmt, die die Anwendung starten. Sie werden bei der Veröffentlichung festgelegt, arbeiten jedoch häufig falsch - auf Russisch genau. Zum Beispiel in unserem Spiel, die Phrase „Komm si Graeme“ funktioniert, aber „Kommt aufspielen "hat nicht funktioniert. Ich weiß nicht, was der grundlegende Unterschied zwischen "play" und "play" für Google Assistant ist. Er hat beide Sätze richtig erkannt, aber die Anwendung funktionierte nicht, obwohl wir mit der englischen Sprache keine Probleme hatten.

    Der Rest der Veröffentlichung läuft reibungslos und ohne Fragen. Der Support für Google Assistant ist sehr lebhaft, reagiert schnell und die Dokumentation ist gut.

    Ich möchte auch verschiedene Arten von Veröffentlichungen erwähnen.

    • Alpha  - für 20 Personen und ohne Überprüfung.
    • Beta  - für 200 Personen.
    • Produktionsfreigabe  - wenn die Anwendung in den Laden kommt. Wenn wir in der Produktion veröffentlichen, müssen wir eine Rezension bestehen. Personen von Google prüfen manuell, wie die Anwendung funktioniert, und senden Feedback. Wenn alles in Ordnung ist, wird die Anwendung veröffentlicht. Wenn nicht, erhalten Sie einen Brief mit Änderungen, die in Ihrer Anwendung nicht funktionieren und was zu beheben ist.

    Es scheint, dass dies alles ist, aber wir reden hier über die Stimme, also gibt es einen weiteren wichtigen Punkt - das ist der Analytiker.

    Analytics


    Besonders wichtig für die Stimme. Wenn für mobile Anwendungen der Analytiker Pfosten, Fehler und Systemfehler aufweist, offenbart der Analytiker in der Welt der Stimme uns verpasste Möglichkeiten - wie Menschen unsere Anwendung nutzen wollten, konnten dies jedoch nicht.

    Dies ist ein obligatorischer Schritt. Aus diesem Grund verfügt Dialogflow über Standard-Anwendungsanalyse-Tools mit den folgenden Modi:

    • Geschichte  - unpersönliche Geschichte der Gespräche mit Ihrer Anwendung.
    • Lernen  ist ein interessanter Modus, der alle Phrasen anzeigt, die von der Anwendung erkannt wurden, jedoch nicht verarbeitet werden konnten.

    Sie werden in einer Liste angezeigt und sehen aus wie auf dem Bild. Der Benutzer schätzte den Preis eines Motors und sagte: "4 Stück". Ich erinnerte mich an die "Mäher" zum Testen, aber ich habe die "Teile" vergessen - deshalb muss ich sie reparieren.



    Analytics hilft bei der Suche nach Fehlern. Stellen Sie daher sicher, dass Sie in den Protokollen nachsehen, was mit Ihrer Anwendung passiert und was die Benutzer damit tun.

    Das ist alles über Sprachanwendungen. Ich hoffe, dass Sie zumindest ein minimales Verständnis dafür haben, wie sie entwickelt werden. Der Bericht war allgemein, aber alle zusätzlichen Materialien zur Entwicklung, zum Design und zum Geschäftsbereich werden über die Links gesammelt.

    Nützliche Links und Kontakte


    Telegramm Chat Entwickler Sprachschnittstellen
    Telegramm Yandeks.Dialogi Chat
    Slack Entwickler Amazon Alexa Chat
    Slack Chat Entwickler Google Assistent
    Leitlinie Google Assistent
    Leitlinie Amazon Alexa
    Buch «Designing VUI» Cathy Perle
    Buch «VUX Best Practices, VoiceBot»
    Synopsis meines Buches höher auf Medium-
    Dokumentation Google Assistant-
    Dokumentation Amazon Alexa-
    Dokumentation Yandex.Alisa
    News, Analytics-

    Sprecher Pavel Guays Kontakte: Twitter- und Linkedin- Profile  sowie ein Blog zu  Medium .

    Die AppsConf 2019 findet am 22. und 23. April im Zentrum von Moskau in Infospace statt. Wir versprechen Ihnen noch mehr Nutzen für die mobile Entwicklung als im letzten Jahr. Buchen Sie also ein Ticket oder hinterlassen Sie einen Bericht .

    Um über Neuigkeiten und Ankündigungen von Berichten auf dem Laufenden zu bleiben, abonnieren Sie unseren Newsletter und den YouTube-Kanal zur Entwicklung von Mobilgeräten .

    Nur AppsConf, nur Hardcore!

    Jetzt auch beliebt: