Основен преглед на виртуалния асистент на https://robinjs.party.

Как да напиша модулен клон Алекса в 40 реда на JavaScript

Известно време се оглеждах за прилична библиотека с реч в текст, която е лесна за настройка, лесна за използване и безплатна. След като потърсих известно време, се отказах и започнах работа по друг проект. До вчера, когато се натъкнах на този страхотен урок от Уес Бос.

Тази статия ще ви помогне да напишете основен виртуален асистент, който ще работи в Chrome. За този пример ще трябва да сервирате вашите файлове на сървър. За тази цел ще използвам основно приложение за прецизност, тъй като улеснява настройката на сървър и дава възможност за настройване на някои потребителски интерфейс след това, без да получавам главоболие. Демонстрация за това, което ще бъде създадено тук, можете да намерите на robinjs.party.

Актуализация: Не е необходимо да се използва рамка като Preact, но аз реших да направя това, така че не е необходимо ръчно да настройвам проект, пакет и babel. Няма причина да се налага да използвате Preact. Ако не искате да го използвате, просто пропуснете следващия параграф и се потопете право в „Създайте сърцето на асистента“. Благодаря за обратната връзка!

Създайте ново приложение за преактивите

Нека да настроим основно приложение за преактуация с командата create-preact-app. Това дава възможност да се изгради ново приложение доста бързо.

Създайте нов преактивен проект с create-preact-app.

Ще създадем нов файл в папката източник, наречен помощник.js, заедно с нова директория с име умения, които ще използваме, за да поставим нашите умения. Можете да намерите целия код на тази статия в хранилището на уеб сайта robinjs.

Създайте сърцето на асистента

Нека започнем с дефинирането на сърцето на нашия виртуален асистент, който приема персонализирана конфигурация. Това прави възможно създаването на собствен помощник с друго име и говори езика по ваш избор.

Основен клас за нашия асистент (Assist.js).

Виртуалният асистент трябва да може да преобразува вход в отговор. След получаване на отговора асистентът го представя на потребителя. Аз наричам тези два процеса процес и казвам. Асистентът започва с обработка на входа и след това казва изхода. Засега ще накараме нашия асистент да записва отговорите му и винаги ще предоставяме отговора по подразбиране на потребителя, който сме посочили в нашата конфигурация.

Основните функции на процеса и кажете на нашия помощник (помощник.js).

Страхотно! Вече можем да предоставим изречения на нашия асистент и той ще изведе отговорите си в конзолата. Нашият асистент обаче все още е безполезен. Нека да поправим това, като добавим някои умения, които могат да генерират динамични отговори.

Създайте някои умения

Умението е основен набор от две функции - една, която определя дали това умение трябва да се задейства или не въз основа на въвеждането и тази, която преобразува действителния вход в отговора. Двете функции, които наричам задействане и разрешаване, са единствените, необходими за създаване на умение.

В този пример ще направя функцията на задействане синхронна, докато функцията за разрешаване ще бъде асинхронна. Човек може да избере да направи асинхронната функция за задействане, но засега няма да използваме този тип задействания.

Нека създадем папка с умения с два файла - time.js и whatsup.js. Тези две основни умения ще бъдат използвани за нашия асистент.

Две основни умения, които ще използваме в нашия Асистент (папка с умения).

Последната стъпка на създаването на процесора е да намери правилното умение и да извика функцията му за разрешаване. Можем да направим това, като актуализираме изпълнението на функцията на процеса като фрагмента по-долу.

Изпълнение на функцията на процеса (помощник.js).

Честито! Завършихте сърцето на вашия собствен (текстово) виртуален асистент. Вече можете да използвате кода по-горе, за да създадете нов екземпляр и да заредите своите умения.

Основно използване на текстовата версия на помощника (index.js).

Слушайте и говорете

Време за последната част от внедряването на виртуалния асистент. Това е мястото, където караме асистентът да ни отговори на неговите отговори и да слуша какво трябва да кажем. Да започнем с лесната част, текст в реч.

Ние ще внесем функцията казвам и ще я накараме да използва вградения API, за да започне да говори. От днес нашият код ще работи само в браузъра, тъй като ще използваме променливи, които са прикачени към променливата на прозореца. Използваме редовния израз / evidence&\/\\#,+()$~%.'"*?<>{}Sense/g, за да филтрираме всички знаци, които асистентът трябва да произнесе.

Основна реализация на функцията казвам (помощник.js).

Сега, когато нашият асистент може да говори, той все още трябва да слуша какво трябва да кажем. За да направим това, трябва да създадем инстанция на webkitSpeechRecognition екземпляр, да зададем езика му на този, който сме посочили в нашата конфигурация, уверете се, че рестартирате, след като чуе изречение и го свържете към нашата функция на процеса.

Това може да звучи много, но изобщо не е толкова много. Можем да включим кода, за да настроим всичко това точно в конструктора, когато създадем нов асистент. Обърнете внимание, че сега имаме обратен сигнал, при който получаваме инстанция за разпознаване, която трябва да преобразуваме в низ и да предадем на нашата функция на процеса. Добавих и проста старт функция за стартиране на разпознаващия.

Инициализирайте основен разпознавател в конструктора (помощник.js).

Ако искате да знаете повече за променливата за разпознаване, можете да отпечатате екземпляра в конзолата, за да проучите структурата му. Засега вече съм написал някакъв код, за да преобразувам инстанцията в препис, което е изречението, което разпознаващият е чул.

След като имаме изречението, което разпознавателят е идентифицирал, проверяваме дали първата дума е името на нашия помощник. Само ако това е така, ние предаваме останалата част от изречението на функцията процес. Ако изречението не започва с името на нашия помощник, просто трябва да го игнорираме.

Цялостно изпълнение на преобразуването на преписа (помощник.js).

Незабавно асистент

Това е! Можете да започнете да използвате свой собствен асистент и да продължите да добавяте различни умения във времето. Тъй като всяко умение има един и същ API, можете дори да можете да разпространявате и инсталирате умения чрез npm.

Незабавно стартирайте и стартирайте нов помощник (index.js).

Програмен код

Можете да прегледате целия код на тази статия в хранилището на robinjs-уебсайта. Примерът, който създадох тук, също се хоства на robinjs.party, така че можете да стартирате демонстрацията веднага.

заключение

Това може да е изключително основна версия на виртуален асистент, но поради потребителските умения наистина можете да направите много неща. Надявам се да сте харесали урока и да се забавлявате да изградите своя собствена версия на Alexa!

Ако имате въпроси или ви харесва този проект, уведомете ме!

Щастливо кодиране