Гласово разпознаване, има ли начин да определя какво казва потребителят, вероятно чрез регулярен израз?

Използвам функцията за гласово разпознаване в android, мога да говоря в устройството си и да ми бъде представен списък с възможни думи.

Когато казвам "старт", той ми дава следните думи, които смята, че чува:

  1. запаси
  2. наличност
  3. Спри се
  4. започнете
  5. спира
  6. Старкс

Този списък ще зависи от потребителските акценти наред с различни други фактори. Има ли лесен начин да проверя този списък за конкретна дума?

Ако потребител издаде командата "старт" или "стоп", трябва да мога да направя разликата между двете команди.

Първоначалната ми мисъл беше да използвам регулярен израз, за ​​да проверя за "sta" или "sto" в някой от отговорите, има ли по-ефективен начин?


person Jimmy    schedule 12.02.2011    source източник
comment
Бих препоръчал да маркирате това по различен начин, евентуално Java/Regex. Мисля, че ще намерите повече хора с опит в тези области, отколкото чрез Android. Освен това въпросът ви наистина не е за гласово разпознаване. Става въпрос за това как да анализирате/търсите низа, предоставен от гласовото разпознаване.   -  person user432209    schedule 12.02.2011


Отговори (1)


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

Например start кодира до S363, а stop кодира до S310. Оценяването на тези спрямо думите като процент на съответстващите знаци води до следната таблица:

Word    Soundex  S363   S310
----    -------  ----   ----
stocks  S320     0.50   0.75
stock   S320     0.50   0.75
stop    S310     0.50   1.00
start   S363     1.00   0.50
stops   S312     0.50   0.75
starks  S362     0.75   0.50
                 ----   ----
Average Score    0.63   0.71

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

Можете да заобиколите това, като изберете думи, които не са толкова сходни, като отивай и спри или започни и край. След това можете да се откажете изцяло от Soundex и просто да потърсите вашите целеви думи в върнатия списък. Ще трябва да следите за това в други локализации на вашето приложение, защото други езици могат да имат подобни проблеми (напр. френски, който има allez и arrêtez).

HTH.

person Blrfl    schedule 12.02.2011