Crearea abilităților vocale pentru Google Assistant și Amazon Alexa

Publicat: 2022-03-10
Rezumat rapid ↬ Asistenții vocali ies din tehnologiile emergente și intră în viața de zi cu zi. În calitate de dezvoltator front-end, aveți deja abilitățile pentru a crea unul, așa că haideți să ne aruncăm în platforme.

În ultimul deceniu, a existat o schimbare seismică către interfețele conversaționale. Pe măsură ce oamenii ating „ecranul de vârf” și chiar încep să-și reducă utilizarea dispozitivului, cu funcții de bunăstare digitală integrate în majoritatea sistemelor de operare.

Pentru a combate oboseala ecranului, asistenții vocali au intrat pe piață pentru a deveni o opțiune preferată pentru recuperarea rapidă a informațiilor. O statistică bine repetată afirmă că 50% din căutări se vor face prin voce în anul 2020. De asemenea, pe măsură ce adoptarea crește, este la latitudinea dezvoltatorilor să adauge „Interfețe conversaționale” și „Asistențe vocale” la centura lor de instrumente.

Proiectarea Invizibilului

Pentru mulți, lansarea într-un proiect de interfață vocală (VUI) poate fi un pic ca a intra în Necunoscut. Aflați mai multe despre lecțiile învățate de William Merrill atunci când proiectați pentru voce. Citiți un articol înrudit →

Ce este o interfață de conversație?

O interfață de conversație (uneori prescurtată la CUI, este orice interfață într-un limbaj uman. Se pare că este o interfață mai naturală pentru publicul larg decât interfața grafică cu utilizatorul, pe care dezvoltatorii front-end sunt obișnuiți să o creeze. O interfață grafică necesită oameni pentru a învăța sintaxele specifice ale interfeței (butoane de gândire, glisoare și meniuri derulante).

Această diferență cheie în utilizarea limbajului uman face CUI mai natural pentru oameni; necesită puține cunoștințe și pune povara înțelegerii asupra dispozitivului.

În mod obișnuit, CUI-urile vine în două forme: chatbot și asistenți vocali. Ambele au cunoscut o creștere masivă a absorbției în ultimul deceniu datorită progreselor în procesarea limbajului natural (NLP).

Înțelegerea jargonului vocal

(Previzualizare mare)
Cuvânt cheie Sens
Îndemânare/Acțiune O aplicație vocală, care poate îndeplini o serie de intenții
Intenție Acțiune intenționată pe care să o îndeplinească abilitatea, ceea ce dorește utilizatorul să facă abilitatea ca răspuns la ceea ce spune.
rostirea Propoziția pe care o spune sau o rostește un utilizator.
Cuvânt trezit Cuvântul sau expresia folosită pentru a începe ascultarea unui asistent vocal, de exemplu, „Hei google”, „Alexa” sau „Hei Siri”
Context Informațiile contextuale dintr-un enunț, care ajută abilitățile să îndeplinească o intenție, de exemplu, „azi”, „acum”, „când ajung acasă”.
Mai multe după săritură! Continuați să citiți mai jos ↓

Ce este un asistent vocal?

Un asistent vocal este un software capabil de NLP (Natural Language Processing). Primește o comandă vocală și returnează un răspuns în format audio. În ultimii ani, domeniul de aplicare a modului în care te poți implica cu un asistent se extinde și evoluează, dar esențialul tehnologiei este limbajul natural în interior, multă calcule, limbajul natural în afara.

Pentru cei care caută mai multe detalii:

  1. Software-ul primește o solicitare audio de la un utilizator, procesează sunetul în foneme, elementele de bază ale limbajului.
  2. Prin magia AI (Specific Speech-To-Text), aceste foneme sunt convertite într-un șir al cererii aproximative, acesta fiind păstrat într-un fișier JSON care conține și informații suplimentare despre utilizator, cerere și sesiune.
  3. JSON este apoi procesat (de obicei în cloud) pentru a stabili contextul și intenția cererii.
  4. Pe baza intenției, un răspuns este returnat, din nou într-un răspuns JSON mai mare, fie ca șir, fie ca SSML (mai multe despre asta mai târziu)
  5. Răspunsul este procesat înapoi folosind AI (în mod firesc invers - Text-To-Speech), care este apoi returnat utilizatorului.

Se întâmplă multe acolo, dintre care majoritatea nu necesită o a doua gândire. Dar fiecare platformă face acest lucru diferit și nuanțele platformei sunt cele care necesită puțin mai multă înțelegere.

(Previzualizare mare)

Dispozitive activate cu voce

Cerințele pentru ca un dispozitiv să poată avea un asistent vocal integrat sunt destul de scăzute. Au nevoie de un microfon, o conexiune la internet și un difuzor. Difuzoarele inteligente precum Nest Mini și Echo Dot oferă acest tip de control vocal low-fi.

Următorul în rânduri este vocea + ecran, acesta este cunoscut ca un dispozitiv „multimodal” (mai multe despre acestea mai târziu) și sunt dispozitive precum Nest Hub și Echo Show. Deoarece smartphone-urile au această funcționalitate, ele pot fi considerate și un tip de dispozitiv multimodal activat pentru voce.

Abilități de voce

În primul rând, fiecare platformă are un nume diferit pentru „Abilitățile vocale”, Amazon folosește abilități, pe care le voi rămâne ca termen universal înțeles. Google optează pentru „Acțiuni”, iar Samsung optează pentru „capsule”.

Fiecare platformă are propriile sale abilități, cum ar fi să întrebați ora, vremea și jocurile sportive. Abilitățile realizate de dezvoltator (de la terți) pot fi invocate cu o anumită expresie sau, dacă platformei îi place, pot fi invocate implicit, fără o frază cheie.

Invocare explicită : „Hei Google, vorbește cu <numele aplicației>.”

Se precizează în mod explicit ce abilitate este cerută:

Invocare implicită : „Hei Google, cum este vremea astăzi?”

Este subînțeles de contextul solicitării ce serviciu dorește utilizatorul.

Ce asistenți vocali există?

Pe piața de vest, asistenții vocali sunt în mare măsură o cursă de trei cai. Apple, Google și Amazon au abordări foarte diferite față de asistenții lor și, ca atare, atrag diferite tipuri de dezvoltatori și clienți.

Siri de la Apple

Nume dispozitiv : „Siri”

Expresie de trezire : „Hei Siri”

Siri are peste 375 de milioane de utilizatori activi, dar, de dragul conciziei, nu intru prea multe detalii despre Siri. Deși poate fi bine adoptat la nivel global și integrat în majoritatea dispozitivelor Apple, necesită dezvoltatorilor să aibă deja o aplicație pe una dintre platformele Apple și este scris în Swift (în timp ce celelalte pot fi scrise în preferatul tuturor: Javascript). Dacă nu sunteți un dezvoltator de aplicații care dorește să-și extindă oferta aplicației, puteți sări peste Apple până când își deschid platforma.

Asistent Google

Numele dispozitivelor : „Google Home, Nest”

Expresie de trezire : „Hei Google”

Google are cele mai multe dispozitive dintre cele trei mari, cu peste 1 miliard la nivel mondial, acest lucru se datorează în mare parte masei de dispozitive Android care au Google Assistant integrat, în ceea ce privește difuzoarele inteligente dedicate, cifrele sunt puțin mai mici. Misiunea generală a Google cu asistentul său este de a încânta utilizatorii, iar aceștia au fost întotdeauna foarte buni în furnizarea de interfețe ușoare și intuitive.

Scopul lor principal pe platformă este să folosească timpul - cu ideea de a deveni o parte regulată a rutinei zilnice a clienților. Ca atare, ei se concentrează în primul rând pe utilitate, distracție în familie și experiențe încântătoare.

Abilitățile create pentru Google sunt cele mai bune atunci când sunt piese de implicare și jocuri, concentrându-se în primul rând pe distracția pentru familie. Adăugarea recentă a pânzei pentru jocuri este o dovadă a acestei abordări. Platforma Google este mult mai strictă pentru trimiterea de competențe și, ca atare, directorul lor este mult mai mic.

Amazon Alexa

Nume dispozitive : „Amazon Fire, Amazon Echo”

Expresie de trezire : „Alexa”

Amazon a depășit 100 de milioane de dispozitive în 2019, acest lucru provine în principal din vânzările de difuzoare inteligente și ecrane inteligente, precum și din gama lor „de foc” sau tablete și dispozitive de streaming.

Abilitățile create pentru Amazon tind să fie vizate în achiziționarea de abilități. Dacă sunteți în căutarea unei platforme pentru a vă extinde comerțul electronic/serviciul sau pentru a oferi un abonament, atunci Amazon este pentru dvs. Acestea fiind spuse, ISP-ul nu este o cerință pentru Alexa Skills, ele acceptă tot felul de utilizări și sunt mult mai deschise la trimiteri.

Ceilalti

Există chiar mai mulți asistenți vocali, cum ar fi Bixby de la Samsung, Cortana de la Microsoft și popularul asistent de voce open-source Mycroft. Toți trei au o urmărire rezonabilă, dar sunt încă minoritari în comparație cu cei trei Goliați ai lui Amazon, Google și Apple.

Pe Amazon Alexa

Ecosistemul Amazon pentru voce a evoluat pentru a le permite dezvoltatorilor să-și dezvolte toate abilitățile în cadrul consolei Alexa, așa că, ca exemplu simplu, voi folosi funcțiile sale încorporate.

(Previzualizare mare)

Alexa se ocupă de procesarea limbajului natural și apoi găsește o intenție adecvată, care este transmisă funcției noastre Lambda pentru a face față logicii. Acest lucru returnează niște biți conversaționali (SSML, text, carduri și așa mai departe) către Alexa, care convertește acești biți în sunet și imagini pentru a le afișa pe dispozitiv.

Lucrul pe Amazon este relativ simplu, deoarece vă permit să creați toate părțile abilității dvs. în Consola pentru dezvoltatori Alexa. Flexibilitatea este acolo pentru a utiliza AWS sau un punct final HTTPS, dar pentru abilități simple, rularea totul în consola Dev ar trebui să fie suficientă.

Să construim o abilitate Alexa simplă

Mergeți la consola Amazon Alexa, creați un cont dacă nu aveți unul și conectați-vă,

Faceți clic pe Create Skill , apoi dați-i un nume,

Alege custom ca model,

și alegeți Alexa-Hosted (Node.js) pentru resursa dvs. de backend.

Odată ce ați terminat de aprovizionare, veți avea o abilitate de bază Alexa, va avea intenția construită pentru dvs. și un cod back-end pentru a începe.

Dacă faceți clic pe HelloWorldIntent din Intențiile dvs., veți vedea câteva exemple de enunțuri deja configurate pentru dvs., să adăugăm una nouă în partea de sus. Abilitatea noastră se numește Hello World, așa că adăugați Hello World ca exemplu de enunț. Ideea este de a captura orice ar putea spune utilizatorul pentru a declanșa această intenție. Acesta ar putea fi „Hi World”, „Howdy World” și așa mai departe.

Ce se întâmplă în The Fulfillment JS?

Deci, ce face codul? Iată codul implicit:

 const HelloWorldIntentHandler = { canHandle(handlerInput) { return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest' && Alexa.getIntentName(handlerInput.requestEnvelope) === 'HelloWorldIntent'; }, handle(handlerInput) { const speakOutput = 'Hello World!'; return handlerInput.responseBuilder .speak(speakOutput) .getResponse(); } };

Acesta utilizează ask-sdk-core și, în esență, construiește JSON pentru noi. canHandle îi informează pe ask că poate gestiona intenții, în special „HelloWorldIntent”. handle preia intrarea și construiește răspunsul. Ce generează aceasta arată astfel:

 { "body": { "version": "1.0", "response": { "outputSpeech": { "type": "SSML", "ssml": " Hello World! " }, "type": "_DEFAULT_RESPONSE" }, "sessionAttributes": {}, "userAgent": "ask-node/2.3.0 Node/v8.10.0" } } { "body": { "version": "1.0", "response": { "outputSpeech": { "type": "SSML", "ssml": " Hello World! " }, "type": "_DEFAULT_RESPONSE" }, "sessionAttributes": {}, "userAgent": "ask-node/2.3.0 Node/v8.10.0" } } { "body": { "version": "1.0", "response": { "outputSpeech": { "type": "SSML", "ssml": " Hello World! " }, "type": "_DEFAULT_RESPONSE" }, "sessionAttributes": {}, "userAgent": "ask-node/2.3.0 Node/v8.10.0" } }

Putem vedea că speak outputs ssml în json-ul nostru, care este ceea ce utilizatorul va auzi așa cum este rostit de Alexa.

Clădire pentru Google Assistant

(Previzualizare mare)

Cel mai simplu mod de a construi Actions pe Google este să folosești consola lor AoG în combinație cu Dialogflow, îți poți extinde abilitățile cu firebase, dar, ca și în cazul tutorialului Amazon Alexa, haideți să păstrăm lucrurile simple.

Asistentul Google folosește trei părți principale, AoG, care se ocupă de NLP, Dialogflow, care vă stabilește intențiile și Firebase, care îndeplinește cererea și produce răspunsul care va fi trimis înapoi către AoG.

La fel ca și în cazul Alexa, Dialogflow vă permite să vă construiți funcțiile direct în cadrul platformei.

Să construim o acțiune pe Google

Există trei platforme pentru a jongla simultan cu soluția Google, care sunt accesate de trei console diferite, așa că tastați!

Configurarea Dialogflow

Să începem prin a ne conecta la consola Dialogflow. După ce v-ați autentificat, creați un agent nou din meniul drop-down chiar sub sigla Dialogflow.

Dați un nume agentului dvs. și adăugați „Google Project Dropdown”, în timp ce selectați „Creați un nou proiect Google”.

Faceți clic pe butonul de creare și lăsați-l să-și facă magia, va dura puțin timp pentru a configura agentul, așa că aveți răbdare.

Configurarea funcțiilor Firebase

Corect, acum putem începe să conectăm logica de îndeplinire.

Mergeți la fila Realizare. Bifați pentru a activa editorul inline și utilizați fragmentele JS de mai jos:

index.js

 'use strict'; // So that you have access to the dialogflow and conversation object const { dialogflow } = require('actions-on-google'); // So you have access to the request response stuff >> functions.https.onRequest(app) const functions = require('firebase-functions'); // Create an instance of dialogflow for your app const app = dialogflow({debug: true}); // Build an intent to be fulfilled by firebase, // the name is the name of the intent that dialogflow passes over app.intent('Default Welcome Intent', (conv) => { // Any extra logic goes here for the intent, before returning a response for firebase to deal with return conv.ask(`Welcome to a firebase fulfillment`); }); // Finally we export as dialogflowFirebaseFulfillment so the inline editor knows to use it exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

pachet.json

 { "name": "functions", "description": "Cloud Functions for Firebase", "scripts": { "lint": "eslint .", "serve": "firebase serve --only functions", "shell": "firebase functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "engines": { "node": "10" }, "dependencies": { "actions-on-google": "^2.12.0", "firebase-admin": "~7.0.0", "firebase-functions": "^3.3.0" }, "devDependencies": { "eslint": "^5.12.0", "eslint-plugin-promise": "^4.0.1", "firebase-functions-test": "^0.1.6" }, "private": true }

Acum reveniți la intențiile dvs., accesați Intenția de bun venit implicită și derulați în jos până la îndeplinire, asigurați-vă că „Activați apelul webhook pentru această intenție” este bifat pentru orice intenție pe care doriți să le îndepliniți cu javascript. Apăsați Salvare.

(Previzualizare mare)

Configurarea AoG

Ne apropiem de linia de sosire acum. Mergeți la fila Integrari și faceți clic pe Setări de integrare în Opțiunea Asistent Google din partea de sus. Aceasta va deschide un modal, deci să facem clic pe test, care va integra Dialogflow-ul cu Google și va deschide o fereastră de testare pe Actions on Google.

În fereastra de testare, putem face clic pe Vorbește cu aplicația mea de testare (Vom schimba acest lucru într-o secundă) și voila, avem mesajul din javascript-ul nostru afișat pe un test de asistent Google.

Putem schimba numele asistentului în fila Dezvoltare, sus în partea de sus.

Deci, ce se întâmplă în The Fulfillment JS?

În primul rând, folosim două pachete npm, actions-on-google care oferă toată îndeplinirea de care au nevoie atât AoG, cât și Dialogflow și, în al doilea rând, firebase-functions, despre care ați ghicit, conține ajutoare pentru firebase.

Apoi creăm „aplicația” care este un obiect care conține toate intențiile noastre.

Fiecare intenție creată a trecut „conv”, care este obiectul de conversație pe care Actions On Google îl trimite. Putem folosi conținutul conv pentru a detecta informații despre interacțiunile anterioare cu utilizatorul (cum ar fi ID-ul acestuia și informații despre sesiunea lor cu noi).

Returnăm un „obiect conv.ask”, care conține mesajul nostru de returnare către utilizator, gata pentru ca acesta să răspundă cu o altă intenție. Am putea folosi „conv.close” pentru a încheia conversația dacă dorim să încheiem conversația acolo.

În cele din urmă, împachetăm totul într-o funcție HTTPS firebase, care se ocupă de logica cerere-răspuns pe partea de server pentru noi.

Din nou, dacă ne uităm la răspunsul care este generat:

 { "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Welcome to a firebase fulfillment" } } ] } } } }

Putem vedea că conv.ask a fost injectat în zona textToSpeech . Dacă am fi ales conv.close , expectUserResponse ar fi setat la false și conversația s-ar închide după ce mesajul a fost livrat.

Creatori de voce de la terți

La fel ca în industria aplicațiilor, pe măsură ce vocea câștigă acțiune, au început să apară instrumente terță parte în încercarea de a ușura sarcina dezvoltatorilor, permițându-le să construiască o dată și de două ori.

Jovo și Voiceflow sunt în prezent cele două cele mai populare, mai ales după achiziția PullString de către Apple. Fiecare platformă oferă un nivel diferit de abstractizare, așa că depinde doar de cât de simplificat ești ca interfața ta.

Extindeți-vă abilitățile

Acum că v-ați gândit la construirea unei abilități de bază „Hello World”, există o mulțime de clopote și fluiere care pot fi adăugate abilității dumneavoastră. Acestea sunt cireasa de pe partea superioară a asistenței vocale și le vor oferi utilizatorilor dvs. multă valoare suplimentară, ceea ce va duce la personalizare repetă și la potențialele oportunități comerciale.

SSML

SSML înseamnă limbajul de marcare pentru sinteza vorbirii și funcționează cu o sintaxă similară cu HTML, diferența cheie fiind că construiți un răspuns vorbit, nu conținut pe o pagină web.

„SSML” ca termen este puțin înșelător, poate face mult mai mult decât sinteza vorbirii! Puteți avea voci care merg în paralel, puteți include zgomote de ambianță, speechcons (merită să fie ascultate în sine, gândiți-vă emoji-uri pentru fraze celebre) și muzică.

Când ar trebui să folosesc SSML?

SSML este grozav; face o experiență mult mai captivantă pentru utilizator, dar ceea ce face, de asemenea, este reducerea flexibilității ieșirii audio. Recomand să-l folosiți pentru zone mai statice de vorbire. Puteți folosi variabile în el pentru nume etc., dar dacă nu intenționați să construiți un generator SSML, majoritatea SSML va fi destul de statică.

Începeți cu o vorbire simplă în abilitățile dvs. și, odată ce este finalizată, îmbunătățiți zonele care sunt mai statice cu SSML, dar îndreptați-vă de bază înainte de a trece la clopoței și fluiere. Acestea fiind spuse, un raport recent spune că 71% dintre utilizatori preferă o voce umană (reală) față de una sintetizată, așa că dacă aveți posibilitatea de a face acest lucru, ieșiți și fă-o!

(Previzualizare mare)

În Achiziții de competențe

Achizițiile în abilități (sau ISP) sunt similare cu conceptul de achiziții în aplicație. Abilitățile tind să fie gratuite, dar unele permit achiziționarea de conținut/abonamente „premium” în cadrul aplicației, acestea pot îmbunătăți experiența pentru un utilizator, pot debloca noi niveluri în jocuri sau pot permite accesul la conținut cu pereți de plată.

Multimodal

Răspunsurile multimodale acoperă mult mai mult decât voce, aici asistenții vocali pot străluci cu adevărat cu imagini complementare pe dispozitivele care îi acceptă. Definiția experiențelor multimodale este mult mai largă și înseamnă, în esență, intrări multiple (Tastatură, Mouse, Ecran tactil, Voce și așa mai departe.).

Abilitățile multimodale sunt menite să completeze experiența vocală de bază, oferind informații suplimentare complementare pentru a stimula UX. Când construiți o experiență multimodală, amintiți-vă că vocea este purtătorul principal de informații. Multe dispozitive nu au ecran, așa că abilitățile dvs. trebuie să funcționeze în continuare fără unul, așa că asigurați-vă că testați cu mai multe tipuri de dispozitive; fie real, fie în simulator.

(Previzualizare mare)

Multilingv

Abilitățile multilingve sunt abilități care funcționează în mai multe limbi și îți deschid abilitățile către mai multe piețe.

Complexitatea de a face abilitățile tale multilingve se datorează cât de dinamice sunt răspunsurile tale. Abilitățile cu răspunsuri relativ statice, de exemplu returnarea aceleiași fraze de fiecare dată sau folosirea doar a unei găleți mici de fraze, sunt mult mai ușor de făcut multilingve decât abilitățile dinamice extinse.

Trucul cu multilingv este să ai un partener de traducere de încredere, fie că este printr-o agenție sau un traducător pe Fiverr. Trebuie să aveți încredere în traducerile furnizate, mai ales dacă nu înțelegeți limba în care este tradusă. Google Translate nu va tăia muștarul aici!

Concluzie

Dacă a existat vreodată un timp pentru a intra în industria vocală, acesta ar fi acum. Atât la începutul ei, cât și la început, precum și cei nouă mari, arat miliarde pentru a-l crește și pentru a aduce asistenți vocali în casele și rutinele zilnice ale tuturor.

Alegerea platformei de utilizat poate fi dificilă, dar în funcție de ceea ce intenționați să construiți, platforma de utilizat ar trebui să strălucească sau, în caz contrar, să utilizați un instrument terță parte pentru a vă acoperi pariurile și a construi pe mai multe platforme, mai ales dacă abilitățile dvs. este mai puțin complicată cu mai puține părți mobile.

Eu, unul, sunt încântat de viitorul vocii, pe măsură ce acesta devine omniprezent; Încrederea în ecran se va reduce, iar clienții vor putea interacționa în mod natural cu asistentul lor. Dar mai întâi, depinde de noi să construim abilitățile pe care oamenii le vor dori de la asistentul lor.