Всичко за модула за разпознаване на глас EasyVR (бивш VRbot)

глас

Днес най-накрая ще взема и епично ще откъсна кориците на тези много EasyVR модули, тъй като темата за циците, искам да кажа, на практика не е разкрита. Ще "откъсна напълно корицата, ще я откъсна напълно", така че пригответе се:)

И така, започна с факта, че исках да добавя гласово управление към колата (системата comfot) и към стаята у дома. Въпреки че, повече, разбира се, исках да "играя" и да видя какво ще излезе от него. Вече бях чувал за VRBot някъде, но не го държах в ръцете си, така че вече знаех, че има някои готови решения.

Ровенето в интернет показа, че като такива VRBots вече не съществуват и ме доведе до сайта на техния производител и наследник VeeaR. Наследникът на VRBot е модул, който практически не се различава от своя предшественик - EasyVR. Също така се появи и неговата „по-хладна“ версия - SmartVR, която ви позволи да напишете свои собствени приложения за някакъв вид вградена виртуална машина. Но за SmartVR беше необходимо да се завърши поне малко, но външният комплект за тяло (или да се купи скъпа платка за разработчици), така че за начало, без никакво колебание, поръчах чифт EasyVR за "бране", дори и без мислейки си, че моите дрънкания ще стигнат толкова далеч ...

След като модулите дойдоха при мен, започнах да играя с тях. Инсталирах стандартния софтуер, свързах го, научих го, разгледах възможностите. Разбира се, функционалността на тези модули извън кутията е доста тясна - разпознаването на определен брой команди за управление на робота (IMHO, те вече не са подходящи за нищо), включени във фърмуера на няколко европейски езика + възможност за добавете до 32 от вашите собствени команди (т.е. за които са поръчани модулите). Също така имаше много примамлива възможност да се направи „къща за говорене“ - да се включат в модула набори от звуци, които след това да се възпроизведат чрез него като отговори.
Разпознаването на твърди кабелни команди беше „независимо от човека“, тоест всъщност модулът не се интересуваше кой и какъв глас нарича командите - той уверено ги разпознаваше (само беше необходимо да се гарантира правилното произношение). От друга страна, персонализираните екипи първо са се нуждаели от обучение за конкретен потребител. Имаше и възможност за разпознаване на конкретен човек по характеристиките на гласа му - „гласова парола“, което работеше доста добре и беше също доста интересна характеристика.

Всичко изглеждаше добре, но бях много обезпокоен от въпроса: „защо мога да напиша свои програми за SmartVR, но не и за EasyVR?“ И по дяволите ме дръпна да копая цялата тази кухня по-дълбоко.
Започнах с намирането на такъв момент - и двата модула работят на абсолютно еднакви чипове, RSC-4128 от Sensory. Нещо, което чух отдавна, ми каза, че чипът е добър, използваем, стабилен и е използван в куп роботизирани играчки като Furby. И така се оказа.
С големи трудности бяха намерени и изтеглени различни докове на сайта на разработчика - лист с данни на чип, описание на технологични библиотеки, SDK, примери и много, много други боклуци. След като изучих всички добри неща, аз се влюбих в този чип:) Всъщност неговите възможности се оказаха уникални: нямаше други специализирани решения с един чип (с изключение на по-старото семейство на същата компания) то беше. И така, по ред.

FluentChip

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

  • Възпроизвеждане на звук: използвайки специалната програма QuickSynthesys, можете да подготвите библиотеки от звуци, думи и изречения от тях; музика за вградения MIDI секвенсор. С помощта на прости библиотечни функции можете да възпроизвеждате звуци, думи, миди с вашите инструменти и дори с думи върху музика; можете да играете DTMF, бипкане и да изпращате токени SonicNet във всяка комбинация. Има много добра компресия за говор - SX.
  • Запис на звук: всъщност звукозапис с последващо възпроизвеждане. Ние не сме от значение, защото за това ви е необходима специална монтирана RAM памет или приличен обем флаш устройство, което не може да бъде свързано към модулите.
  • Разпознаване на реч: отделен разговор. За тази функционалност ще говорим по-долу.
  • SonicNet: ви позволява да изпращате през високоговорителя и да слушате микрофона специални токени за изпращане, които не се чуват от човек и по този начин комуникират между няколко устройства.
  • "Анимация": набор от функции за интерактивна обратна връзка. Детектор на ритъм и предиктор, детектор на височина или нота, "синхронизиране на устните" както за предварително окабелени библиотеки за звук, така и в реално време от микрофон.
  • Източник на звука: с помощта на малък комплект за тяло е възможно да се построят „електронни уши“, да се разпознае положението на източника на звука и например да се обърне устройството или неговата „глава“ към високоговорителя. За съжаление няма да можем да използваме прелестите поради ограничения брой изходни GPIO на модула.
  • Помощни функции, като функции за настройка на таймери, достъп до буфери в RAM, управление на захранването, генериране на закъснения и др. Има готов софтуер за драйвери на UART.


Сега да поговорим за разпознаването на речта. Библиотеката може да изпълнява два принципно различни метода за разпознаване: T2SI (независим от текст към говорител, всеки може да говори) и SD (зависи от оратора, който е преподавал системата, трябва да говори).

T2SI използва доста сложен и интересен подход. Първо, речниците се формират на компютър в специална програма (QuickT2SI) чрез въвеждане на необходимите думи или фрази от клавиатурата. След това програмата, в зависимост от избрания езиков модел, преобразува тези думи и фрази в фонеми (ако е необходимо, резултатът може да бъде коригиран, до ръчно въвеждане на думи с IPA фонеми). След това можете да прецизирате разпознаването и да генерирате обектни файлове с данни за вашия набор от думи, които трябва да бъдат включени в програмата. Такива набори може да има много и необходимият просто се избира при извикване на функцията за разпознаване на библиотеката.
Този метод е технически труден, използва модели на акустична фонема за различни езици, невронни мрежи за тяхното разпознаване и скрит модел на Марков (HMM) за статистически анализ и отгатване на думи. Въпросът е, че най-трудната работа - изграждане и обучение на невронна мрежа и формиране на скрит модел на Марков - се извършва на компютър, а в устройството е зашита готова невронна мрежа (има софтуерен невропроцесор и HMM анализатор в библиотеката на чипа). Готовата невронна мрежа и модел съдържа само необходимите състояния и фонеми за въвеждане, така че се оказва много компактен и бърз.
Резултатът от този метод е, разбира се, впечатляващ. Получава се много точно разпознаване, дори с големи речници и с различни "говорители". Но методът има един много голям недостатък за нас. Няма руски езиков модел:( Освен това по принцип няма ограничения за това, но разработчикът, кампанията, всъщност не се нуждае от него. Въпреки това е възможно да се използват повече или по-малко подобни модели на испански/италиански с някои ограничения и да се въвеждат желаните думи с фонеми наведнъж, но това не е толкова удобно, въпреки че качеството на разпознаване на руски думи, записани по този начин е доста добър.

Втори метод - SD - въз основа на изчисляване на пликовете на дума/фраза и, евентуално, някаква друга информация, като FFT и генериране на "шаблон" - отпечатък, съответстващ на тази дума или фраза. Очевидно това е някакъв векторен масив, като модели, описващи пръстов отпечатък след векторния анализ. Само тук като начална информация действа не картината на папиларния модел, а уловената звукова информация. Всеки шаблон заема строго определен брой байтове в паметта - 256. От няколко шаблона в процеса на обучение се комбинира „шаблон“ (също 256 байта), който след това се съхранява в паметта, присвоява се на речник и след това можете да започнете разпознаване с помощта на този речник.
На практика, с малък речник с думи с различно произношение, системата е в състояние точно да разпознава думи, дори ако друг човек ги говори, което е много, много добре!
На същия принцип се изгражда и SV - проверка на говорител, "гласова парола". Единствената разлика е, че информацията се векторизира според други характеристики и се обръща повече внимание на специфичните характеристики на гласа на говорителя. Ето защо се получава „паролата“. И технически работи точно същото като SD.
Възможно е да се изпълняват едновременно T2SI и SD/SV разпознаване, като се използват различни набори. Функциите на библиотеката са доста прости и ясни, има куп примери, доста четима помощ и бележки. Няма да се удавите.
За запазване на шаблони е необходима малко памет. Библиотеката се предлага с няколко модула за работа с различни видове външна памет. Достатъчно е просто да ги свържете и конфигурирате в конфигурационния файл, а библиотеката ще се погрижи за останалото. Нашите модули имат инсталирана 24LC64 I2C памет за тези цели, което просто ви позволява да съхранявате 32 шаблона. В доставката на библиотеката има драйвер за I2C памет. Дори и с източника. Има и примери за работа.

Среда за развитие
Модул EasyVR

глас

24LC64 се препоява напълно безшумно в 24LC256 и става възможно да се съхраняват вече 128 шаблона. 24LC512 за съжаление е по-широк по корпус и не се побира на дъската:)

По този начин получихме доста мощен и евтин инструмент за работа с естествена реч, който можем да извайваме сами, както искаме, без да сме ограничени от фърмуера на производителя. Можете да направите каквото ви е достатъчно въображението:) Освен това хардуерът и технологиите са наистина уникални, интересни и много качествени, облизвани от производителя (момчетата от Sensory са страхотни).

В прикачения файл ще намерите връзка към архива с всичко необходимо (архивът със софтуер и хапчета е уникален и няма да го получите никъде другаде):
1. Най-новите версии на инструментариума Sensory: QuickT2SI 3.1.7 (с излекуване), QuickSynthesis 5.2.1, FluentChip 3.1.6 библиотеки с примери и цялата документация, включително чипа и хардуера.
2. Phyton Toolkit: Project-SE 1.22.00 (с лечение)
3. Инструментарий VeeaR: VeeLoader.exe и най-новия фърмуер EasyVR, ако искате да върнете нормалната функционалност