Rozpoznawanie mowy i sterowanie domem

0

Witam.
Pisze oprogramowanie do zarządzania domem za pomocą komputera.
Idea jest taka że komputer poprzez port LPT steruje 254 kanałowym sterownikiem urządzeń, który je włącza / wyłącza lub sprawdza w jakim sa w danym momęcie stanie . Chciałbym do tego oprogramowania dodać modół sterowania za pomocą głosu. Aby np. na słowo "Komputer" program sie aktywował i reagował na kolejne słowa. ( aby nie doszło do sytuacji kiedy rozmawiamy z kolegą a komputer po rozpoznaiu któregoś słowa wykonywał przypisaną mu procedure :-) ).
Chciałbym aby wyglądało to w podobny sposób:

przykład:

słowo pierwsze: słowo drugie: słowo trzecie
--- swiatło
/
--- włącz ------------- lapmke
/
Komputer ----------- sprawdz -- telewizor

                            --  wyłącz

po wypowiedzeniu ciągu wyrazów np. "Komputer włącz lampke" program wykonuje procedure która poprzez urządzenie włącza lampke :-D . Może to być całkiem osobny program który będzie po prostu przesyłał informacje do mojego programu.
niechcialbym żeby to był program typu ViaVoice który rozpoznaje mowe, tylko taki który najpierw by można nauczyć danego słowa ( coś jak znaki głosowe telefonie kompurkowym) a później przypisać do niego daną operacje :-)

sory za lamerstwo ale jestem dopiero początkującym programistą i prosze wszystkich którzy sie troche znają o pomoc.

0

niewatpliwie do tego rozwiazania tego zadania bedzie (chodz troche) potrzebna ci znajomosc jezyka assemblera... jak na poczatkujacego masz duze ambicje... jak bede cos mial do dam znac :)
jak na razie to nie potrafie sobie tego nawet wyobrazic, mimo iz naprawde fajnie byloby napisac taki program :-D

0

ooo panie ale zes sie porwal
pomysł fajny ale bedziesz miał bardzo dużooo roboty
tak naprawde to assembler bedzie tutaj najmniejszą przeszkodą, gdyż posterować posrtami możesz i bez assmeblera
to z drzewkiem rozkazów to tez mały problem
ale rozpoznawanie mowy to jest naprawde duzy problem
co prawda na necie mozna dorwac biblioteki (open source) do rozpoznawania mowy ale powiem ci ze to sa kobyły. jezeli bedziesz probowal sam cos napisac to jest z tym troche zabawy sa gotowe algorytmy ale dzialaja jak dzialaja i trzeba tam wiele rzeczy doswiadczalnie po ustawiac, sam robilem z rozpoznawania mowy maly projekcik na zaliczenie , coprawda uzylem tam wlasnej wymyslonej metody ale rozpoznowanie dawalo mierne efekty , tzn z 30 slow prawidlowo rozonawal tak 10tzn ustawial je na pierwszym miejscu, drugie 10 lapalo sie w grupie prawdopodbnych , a pozostale byly do d**y
jak poszperam to moze podesle ci linki z dokumentacja do rozoznawania mowy
pozdrawiam i zycze wytrwalosci i powodzenia [cya]

0

fajny pomysl :-) ...
powiedzmy tak jesli mialby to byc tylko Twoj komputer i Twoj glos mial nim sterowac to moznaby (teoretycznie) zrobic tak...

...nagrac na kompa wszystkie potrzebne (wedlug) Ciebie polecenia. masz wtedy cala biblioteke polecen. teraz dogrywasz ponownie po kilka (2-4) razy te same komendy. chodzi o to zeby uzyskac roznorodnosc sygnalow (a to jakies autko przejedzie za oknem, a po cos sie stanie i bedzie halasek itp.). nastepnie taki zestaw skladajacy sie z kilkunastu polecen kazde nagrane po kilka razy moze posluzyc jako zestaw sygnalow uczacych dla sieci neuronowej. puszczasz niech sie biedna "uczy" a jak sie nauczy to jak dobrze pojdzie bedzie rozpoznawac polecenia ktore zapodasz. ale ... :

  1. im wieksze ma byc prawdopodobiecsto prawidlowego rozpoznania tym wiecej musisz miec sygnalow uczasych
  2. trzeba wymyslic (to chyba bedzie trudne) jak podawac te sygnaly do sieci
  3. w sumie powinna wystarczyc siec uczona wedlug alg. delta po do kazdego sygnalu dopasujesz jakies oczekiwane wyjscie...itd. itp. [glowa]

ale jak mowilem teoretycznie dziala :-) pozdrawiam

ps. rozumiem ze to urzadzonko zewnetrze masz... a nie masz go moze *2 ... :d

0

ale sie porwaliscie na to sterowanie glosem... zrobcie najpierw program, ktory po nacisnieciu przycisku zapali ci lampke... ;) wiem ze to nie jest wykonalne ale takie gadanie nic nie da... trzeba dzialac.

0

zrobcie najpierw program, ktory po nacisnieciu przycisku zapali ci lampke...

... to nie jest problem napisania programu tylko zadanie z elektroniki :-)

0

a ja nie polecam do tego sieci neuronowych z kilu powodów:
pierwszy to liczba próbek które trzeba przygotować,to nie będzie kilka jak pisał Unabomber
po drugie to naprawde duzy problem dobrac parametry które podajemy jako wektor na wejscie sieci neuronowej
po trzecie dobranie sieci neuronowej która by się tego nauczyła, tutaj jest problem ze jezeli jedna nie zda egzaminu to trzeba napisac inna

o ile mi wiadomo takie rzeczy robi się zazwyczj na Ukrytrych Modelach Markowa ,
i to są chyba najlepsze algorytmy

0

grees ma chyba racje co do tych sieci ze nie najlepsza to metoda (ze wzgledu na potrzebe uzycia bardzo duze ilosci wektorow uczacych i klopotliwe dobranie sieci) co do ukrytych modeli Markowa to warto przeczytac http://www.eetasia.com/ARTICLES/1999DEC/1999DEC01_DSP_MSD_PD_TA.PDF... anyway nie brzmi to przyjemnie :d

0

po wpisaniu ukrytch modeli markowa do wyszukiwarki nie znalazlem zbyt duzo więc radze wklepac coś tkiego do wyszukiwarki

hidden markov models speech recognition

0

Idea jest taka że komputer poprzez port LPT steruje 254 kanałowym sterownikiem urządzeń, który je włącza / wyłącza lub sprawdza w jakim sa w danym momęcie stanie.

Myślę ,ze wszyscy (jak przystało na forum programistów) zajęli się sprawą sofware'u a nikt nie pomyślał o hardware.
W jaki sposób wyobrażasz sobie podłączenie tych 254 (dlaczego nie 256 -ciu?) urządzeń do kompa? Każde oddzielnym kabelkiem? A co jak np. przestawisz lamkę nocną z jednego kąta pokoju w drugi? Wyciągniesz mozolnie kabelek z pod dywanu i położysz go gdzie indziej?
Ja myślę , że sprawdzonym rozwiązaniem (i chyba jedynym skutecznym) jest magistrala sterująca , do której można podpinać równolegle dowolną (w ramach tych 256) ilość urządzeń, o określonych adresach. Gdy taka magistrala oplata cały dom , mozna podpiąć się do niej w dowolnym miejscu. Problemem i to powążnym sa natomiast protokoły sterujące taką magistralą. Tym bardziej, że najlepiej było by w charakterze magistrali wykorzystać istniejącą instalację (np sieci elektrycznej).
Zyczę miłej pracy i chętnie skorzystam z doświadczeń.

0

Myślę ,ze wszyscy (jak przystało na forum programistów) zajęli się sprawą sofware'u a nikt nie pomyślał o hardware.
W jaki sposób wyobrażasz sobie podłączenie tych 254 (dlaczego nie 256 -ciu?) urządzeń do kompa? Każde oddzielnym kabelkiem? A co jak np. przestawisz lamkę nocną z jednego kąta pokoju w drugi? Wyciągniesz mozolnie kabelek z pod dywanu i położysz go gdzie indziej?

GAVI hardware już jest zaprojektowane , została tylko kwestia zmontowania go :-). Sterowanie będzie sie odbywało za pomocą portu LPT na którym mamy 8 lini danych. pierwsze 4 linie będa wybierały 1 z 16 multiplexerów ( każdy multiplexer będzie połączony z komparatorem który będzie reagował na odpowiedni kod 4 bit. ) następne 4 linie będa ustawiały 1 z 16 wyjśc multiplexera co daje nam 1*16=256 :-D. od tego należy odjąć 2 sytuacje w których na wszystkich liniach będą zera lub jedynki (stan taki występuje podczas włączania komputera, lub gdy komputer jest wyłączony).
na razie przetestowałem "8-kanałowy system sterowania "który sterowałem za pomoca prostego programu napisanego w qbasicu-- sprawował sie świernie. tu masz aders strony na której sie znajduje ten układ: http://www.elektroda.pl/rtvforum/dl.php?act=download&file=inne/edw/57_03.pdf
Jeżeli chodzi o lampke to będzie ona podłączona do gniazdka które będzie możliwość włączenia albo wyłączenia. Przestawienie lampki i podłączenie jej do innego gniazdka będzie tylko wymagało w programie sterującym zmiany adresu pod którym będziemy sterować ta lampką.

A co do sterowania mową to chodziło mi o oprogramowanie podobne do tego jakie wykożystują telefony komurkowe np.N3310, w nich jest coś takiego że porównują plik dzwiękowy zapisany wcześniej z słowem które wypowiedzieliśmy w danej chwili.

Z tego całego systemu będe kożystał tylko ja więc moge wyszystkie potrzebne słowa wcześniej nagrać :d

-----------jeszcze wapdłem na pomysł żeby można wszystkim sterować za pomocą internetu i pilota na podczerwień ( Gildera), fajnie by to było, otworzyć dzwi do domu np z komputera znajdującego sie setki kilometrów dalej. hehe

Pozdrawiam i czekam na wasze opinie.

0

masz juz gotowe oprogramowanie? jak tak to podziel sie ;)

0

macie moze jakies zrodlo programu, ktory porownuje pliki .wav ?

0

szukam takiego programu w sieci , aale jak dotąd to nic jeszcze nie znalazłem :( poza tym program który tylko porównuje 2 pliki *.wav sie do nieczego nie przyda , bo nigdy dokładnie tak samo nie wypowiedamy takich samych słów(dużą role odgrywają emocje) . powinien miec on możliwoś reakcji gdy np 2 próbki dzwiękowe zgadają sie ze sobą np w 80%.

0

Hmm, a gdybys otworzyl oba te pliki w dwoch memo i porownywal po kolei znaki, jesli np zgadzaly by sie w 75% to by wykonywal jakas tam akcje.

Nie znam sie na dzwieku wiec nie wiem czy to wypali.

0
<font color="green"> Hmm, a gdybys otworzyl oba te pliki w dwoch memo i porownywal po kolei znaki, jesli np zgadzaly by sie w 75% to by wykonywal jakas tam akcje. </span>

dwa wawy wypowiedzane przez ta sama osobe beda i tak w 99% rozne
tak sie ttego nie robi

aby cokolwiek porownac to musisz poddac dzwiek obrobce np poprzez FFT(Fast Fourier Transform) llub trasformate falkowa , i nnne takie

nie ma co porownywac ze soba danych zpisanych w wav-ach za pomoca bezposredniego porownanaia tego co jest w plikach

rozopoznawanie mowy to jest zajebiscie trudny temat

0

rozopoznawanie mowy to jest zajebiscie trudny temat

... zapewne ale jaki inspirujacy :-)

0

Aby zrobić progz do rozpoznawania mowy, najpierw trzeba przeprowadzić badania lub wykorzystać czyjeś. Polecam wykorzystać engine innych programów.

0

Wiecie co chyba dam sobie spokuj z tym rozpoznawaniem mowy, zamiast tego spróbuje napisać program do sterowania urządzeniam za pomocą podczerwieni (Gilderek) i internetu :)

I jeszcze jedno pytanko, jak wykozystać Syntezator Wirtualnej Polski żeby program mógł gadać, wiem że jest w gotowcach przykład zastosowania syntezatora Syntalk ale jak go przerobic żeby kozystał z ztego z WP [co]

0

No chyba, ze udalo by Ci sie wyrwac jakis algorytm z np. kursow jezyka angielskiego, ale jesli nie trzymaja tego w dll, to raczej nic z tego.

0

No chyba, ze udalo by Ci sie wyrwac jakis algorytm z np. kursow jezyka angielskiego, ale jesli nie trzymaja tego w dll, to raczej nic z tego.

rotfl.... Kursy korzystają z modułu SAPI od Microsoftu o czym pisałem (tzn dałem linka ale widać nikt tam mnie poszedł :P)

0

jeszcze co do tego co gees napisal: swieta racja. czytalem kiedys o badaniach japonskich na tentemat ich metoda opierara sie na policzeniu FFT dla probki mowy (wav'a) . wyliczali z otrzymanego w ten sposb widma zakres wiodacych czestotliwosci w pewnym krotkim odcinku czasu, a potem rysowali fajniste wykresy na ktorych bylo widac jak takie wiodace czestotliwosciwraz z ich intensywnoscia (amplituda) zmieniaja sie w czasie. Dopiero po takiej obrobce bylo widac cechy charakterystyczne probki glosowej czyli tzw, fonemy. Kazdy fonem to byl wedlug nich pewien odcinek czasu w ktorym dominujaca byla pewna grupa czestotliwosci. No po tym wstepie chcialem powiedziec ze moznaby pogromadzic fonemy w tablicach i uzywajac np funkcji autokorelacji decydowac czy wlasnie otrzymany zbior fonemow jest zgodny ze wzorcem z tablicy czy tez nie...
Tak czy siak kupa zmudnych obliczen jest niezbedna...:(

pozdrawiam

0

Natrafilem w Google na txt o rozpoznawaniu mowy, moze sie komus cos z tad przyda: http://www.gear21.com/speech/srhowto.html

0

TO jak już rozpoznawanie mowy ludzkiej to czemu nie tesz zrobić rozpoznawanie mowy psiej ( tak mi sie przypomniało :d :p)
;p ;p ;p ;p ;p ;p

0

Ehh porownywanie dwóch wavow raczej nic nie da :P
bo naprzyklad ktos moze mowic "aaa" przez 1 sekunde a inny przez 4. Co do FFT to samo w sobie jest to zajebiscie skomplikowane (wiem z doswiadczenia). Prawdopodobnie trza bedzie prowonywac nie sam dzwiek ale jego spektrum, natezenie pewnych czestotliwosci moze oznaczac gloske "a" ktora jest kloczowa do detekcji slowa "aaa". Byc moze trzeba bedzie uwzglednic wysokosc mowy i porownywac nie tylko natezenie czestotliwosci skladowych ale takze odleglosci w Hz wartosci szczytowych oznaczajacych natezenie.

0

Ehh porownywanie dwóch wavow raczej nic nie da :P
bo naprzyklad ktos moze mowic "aaa" przez 1 sekunde a inny przez 4.

<font color="darkblue">Zapomnieliście o jednej Zarypiście ważnej rzeczy!!
Nie chodzi o rozpoznawanie mowy wszystkich ludzi tylko o sprawdzenie czy właściwy człowiek wypowiedział właściwe "hasło" (jeśli inny (niewłaściwy) człowiek (np ten który mówi przez 4s) powie właściwe słowo to program nie powinien go zaakceptować).
Można jeszcze dodać, że "właściwy" człowiek będzie pamiętał w jaki sposób powinien wypowiedzieć kluczowe słowa [stuk] </span>

0

witam wszystkich
nie chce sie tu rozpisywać bo zajęł by to troch .Od jakiegoś czasu buduje program do rozpoznawania mowy - no nie jest to fatwe i teraz ugżęznołem na porównywaniu próbek ,jeśli jest tu ktoś naprawde konkretny to bardzo prosze o kntakt ,jeśli chodzi o sprzęt - sterowanie to naprawde mały problem elektroniczny .
pozdrawiam Samael [email protected]

[browar] dla wszystkich obecnych tu grupowiczów.

0

TO jak już rozpoznawanie mowy ludzkiej to czemu nie tesz zrobić rozpoznawanie mowy psiej ( tak mi sie przypomniało :d :p)
;p ;p ;p ;p ;p ;p

Pies musiałby napisać część programu przechowującą znaczenie i przypisanie poszczególnych dźwięków, bo to on wie co szczeka, a nie my ;p, dlatego jest to slabo mozliwe, poki nie nauczysz psa programować :D

0

Porównać dwa dźwięki można w niezbyt może efektywny, ale prosty sposób. Wystarczy nagrać wzór i próbkę jako pliki *.wav, a potem skompresować. Teoretycznie spadek ich rozmiaru jest miarą ich podobieństwa. Nie próbowałem tego, ale od strony teorii informacji wygląda to dobrze.

0 użytkowników online, w tym zalogowanych: 0, gości: 0