Beszédfelismerő program mozgáskorlátozottaknak

Sziasztok!

Egy egyszerű, kötött szavas beszédfelismerő programot fejlesztek egy mozgásképtelen embernek, akinek nagyban megkönnyítené az életét, ha tudna telefonálni és vezérelni néhány dolgot a lakásában (ZigBee hálózatba kapcsolt mikrokontrolleres beavatkozókkal: TV, ágy, vészhívó). Nem tudom mennyire tudjátok elképzelni azt, hogy semmire se vagytok képesek egyedül.

Először is azt szeretném kérdezni tőletek, hogy használtok-e/ismertek-e valamilyen beszédfelismerő programot PC-n, amit a felhasználó egyszerűen betaníthat 5-20 tetszőleges (magyar) szóra/parancsra. Az elsődleges platform Windows és C#, API/SDK előny lenne. Tehát olyan alkalmazás kellene, hogy kimondasz egy szót és egy háttérben futó program meghív egy megfelelő metódust/programot/akármit.

A nagy megbízhatóság (és a kis erőforrás-igény) lenne a cél, de jelenleg ez még nem teljesül. A legnagyobb problémát a szavak elejének detektálása jelenti, ha valakinek van ötlete, hogyan lehetne a mikrofon bemenetet valami körpuffer-szerű szerkezetben vizsgálni (néhány másodpercet tárolni, majd kiírni a lemezre, ha elhangzik egy szó /200 ms-nál hosszabb jel/), azt nagyon megköszönném, kész kódért a hálám minimum egy rekesz sör :)

A teljes kód GPL-es, a hétvégén felrakom az eddig elkészült forráskódokat a projektoldalra, a dokumentációt még meg kell írnom hozzá. Nem tudom érdemes-e verziókezelőt használni, itt van GIT, de még nem használtam.

http://bettercodes.org/projects/recognition-made-simple

Fejlesztői verzió 2010-10-24:
http://nikportal.cickany.hu/view/index.php?dir=GW%20Software/RMS/Turan%…

sicambria@users.sourceforge.net

Köszönettel:
Incze Gáspár
ÓE-NIK

Hozzászólások

De, segíthet az a linkelt Google keresés...Azt írtad, hogy Windows alapon dolgozol a megoldáson.
A találatokban szerepel a Windows Speech Recognition, ez kombinálható batch-szerű kontrollal is.
Hogy nincs hozzá magyar fonéma-felismerő készlet?
Francia viszont van, és a francia nyelv fonémáival szinte hibátlanul leírható minden magyar szó,
csak új -a francia nyelvben természetesen nem létező- szavakat-kifejezéseket kell rá definiálni, megfelelő "helyesírással".
-
"Attempting to crack SpeedLock can damage your sanity"

Javallom, hogy hasznalj vmi parancsszot, ami az utasitas kezdetet jeloli, ekkor csak egy mintara kell figyelni a buffert.

Pl.: 'Computer! Make a coffee!'

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

A probléma az, hogy a felvevő nem reagál elég gyorsan, ráadásul ez az időtartam nem is állandó. Ha azt mondom "Számítógép", akkor lehet hogy a hangfájlban "ámítógép" vagy "mítógép" lesz, de néha még az eleje is belekerül. Az eltérő környezeti zajok miatt a működés kiszámíthatatlan. Talán járható az az út, hogy az aktiváló szó utáni szünetet, illetve a 2. szó jelfelfutását már jobb eséllyel lehet felismerni.

Mindenkeppen erdemes magat az aktivalo szot is figyelni, mert lehet, hogy valaki a gep mellett pont hasonlo szunetet tart a beszed elejen - akarmilyen okbbol -, es nem jo dolog, ha a gep elkezd onmagatol dolgozni.
Nem hiszem, hogy ne lehetne egy szo rogzitesenek veges szamu lehetoseget belekalkulalni a dologba. Ha csak sima TTS-STT lenne, meg akkor is megteheto lenne, sztem.

Amivel meg lehet jatszani, az a hangero.
--


Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.

Hát, Macen ez alap, de úgy melékszem Windows alatt is van ilyen funkció (bár lehet, hogy kivették, mert nem volt tökéletes). A Maces sem 100%-os, csak angol morfémákat ért, ellenben baromi könnyű konfigurálni: adott mappába berakod a scripteket valamilyen néven, és ha azt mondod, hogy "kompjúter, (script neve)", akkor végrehajtja.

Helló!

Pár link, amit talán érdemes lenne átnézni:
- http://www.microsoft.com/speech/
- http://www.microsoft.com/windowsxp/using/setup/expert/moskowitz_02septe…
- http://www.microsoft.com/enable/products/windowsvista/speech.aspx
- http://support.microsoft.com/kb/306901
- http://www.instructables.com/id/Use-Spells-to-Control-Your-Computer!/
- http://www.softpedia.com/get/Multimedia/Audio/Other-AUDIO-Tools/VR-Comm…

Ha 0-ról kéne írni, én valami olyasmit tudnék elképzelni, ahogyan a zeneszerkesztő alkalmazásokban működik a "slicer"(~szeletelő). Ennek a lényege, hogy észleli, ha változás van a hangban, pl. egy dobmintát fel tud szeletelni a leütött részek alapján. Ahol hirtelen megnő az amplitúdó, majd hirtelen csökken, ott lenne egy adott "parancs", amit már össze lehetne hasonlítani az előre felvettekkel. Ezt persze real-time-ban véghezvinni gondolom nem egyszerű móka.

Lehet, hogy hülye ötlet, de esetleg úgy megoldani, hogy 3*3 másodperces mintákat tárol, nézi a mintákat, keres benne megadott spektrum mintát, nézi az első kettő, és az utolsó kettőben együtt a keresett függvényt, eldobja az utolsót, és veszi a következőt?

Huhh... Én utoljára pascalban programoztam amolyan "pató pál szoftver - szakadt csöves" stílusú dolgokat, így tapasztalatom ebben nincs, csak ötletem, hogy laikusként puskával a fejem mellett hogyan fognék hozzá.
Amire emlékszem még innen-onnan, hogy a magánhangzóknak jellegzetes könnyebben beazonosítható spektrumképe van, így fognék egy referencia képet (hullámformát), és megnézetném egy algoritmussal, hogy bizonyos küszöbön belül hasonló-e (illesztéses próba-szerencse móddal, ami akkor kapcsolna be, ha beszédmintát lát egy megelőző script, ami eldönti, hogy zaj vagy jel-e amit lát [hangerő-hossz tulajdonságok alapján]). Teszem azt (nem valós példák, hasraütésszerűen mondom) a "Kitt- gyere értem!" (:D) parancs esetében figyelném, hogy van-e "i kicsit hosszabb szünet e kisszünet e kisszünet é kisszünet e" spektrumkép (azaz ha i csúcsos hegyesebb szögben, e kerek, é pedig tompább szögben hegyes jelet eredményez, akkor ilyesmit várnék: [/\__∩_∩_^_∩_]. Megpróbálnám csak a magánhangzók alapján belőni, mi lehet az utasítás. Persze így megvan a lehetőség arra, hogy két parancs egyezzende ezt a tanításnál ki lehet küszöbölni rugalmasabb szókinccsel, viszont kevesebb és jobb adatatot kell feldolgozni.
Nem tudom ezzel az agymenéssel mennyit segítettem, remélem nem teljesen hülyeség ;)

szerintem egyszerű, kell hozzá egy számítógép, azon vannak ilyen valami algoritmusoknak nevezet izék, azok megoldják ezt a konkrét problémát

(gyk: nem a topikra hanem a hsz-ok ra, akinek nem inge..)