Pokaż wyniki od 1 do 5 z 5

Wątek: uruchomienie aplikacji w C na telefonie z Androidem

  1. #1

    Dołączył
    11 2009
    Posty
    6
    Sieć
    Plus
    Piwa (Postawione)
    1
    Piwa (Otrzymane)
    0

    Domyślnie uruchomienie aplikacji w C na telefonie z Androidem

    Witam :-)!

    PODSUMOWANIE: Jak uruchomić pocketsphinx_continuous na telefonie komórkowym z Androidem, i jak zrobić to z symulatorem komórki z Androidem? PocketSphinx można ściągnąć za darmo tutaj, zarówno pod Windowsy jak i Linuksa: http://cmusphinx.sourceforge.net/html/download.php .
    ------------------------------------------------------------------------------------------------------------

    KRÓTKIE WYJAŚNIENIE

    Chciałbym stworzyć aplikację na telefon komórkowy, taką żeby:
    1. Użytkownik uruchamiał aplikację na telefonie z Androidem, aplikacja będzie używać PocketSphinx. Jest to oprogramowanie typu Automatic Speech Recognition, czyli Automatyczne Rozpoznawanie Mowy dla urządzeń takich, jak telefony komórkowe, napisane w C. Ktoś mi napisał, że "PocketSphinx może być bez problemu uruchomiony na Symbianie z minimalnym wysiłkiem". (Jednak myślę, że Android to lepsza opcja, niż Symbian). Moja wiedza o Androidzie jest ograniczona, ale wiem trochę na temat CMU Sphinx. Czy możecie pomóc mi, proszę, uruchomić PocketSphinksa na Androidzie? Potrzebuję też znaleźć symulator telefonu komórkowego z Androidem. Znalazłem Wireless Toolkit i przetestowałem jak używać ten emulator, ale myślę, że nie pozwala on na symulację komórki z Androidem. (Swoją drogą muszę się zdecydować na telefon nie droższy nić 700 zł; która wersja Androida będzie najlepsza dla mojej aplikacji?
    2. Ta aplikacja będzie się komunikować z użytkownikiem. Użytkownik mówi cyfry i parę innych słów (słownik zawiera około piętnastu wyrazów, jestem w stanie samemu stworzyć modele językowy i akustyczny, jak również gramatykę formalną w CMU Sphinx, przy użyciu SphinxTrain). Aplikacja będzie rozpoznawać te cyfry.
    3. Bazując na rozmowie, telefon komórkowy wysyła informacje o rezultatach rozpoznawania mowy na serwer. Mogę to zrobić w Javie dla CLDC/MIDP z httpconnection, metodą POST po stronie telefonu komórkowego i serwerem Tomcat po po stronie komputera. Myślę, że httpconnection musi być również możliwe nie tylko w Javie ME, ale również w Androidzie C. Tym jednak będę się martwił później, najpierw chcę uruchomić pocketsphinx_continuous na Androidzie i spróbować zmodyfikować go pod kątem moich potrzeb.

    Podsumowując, chciałbym wiedzieć jak uruchomić demo pocketsphinx_continuous na telefonie komórkowym z Androidem i jak zrobić to na symulatorze telefonu komórkowego z Androidem. (Mam Wireless Toolkit, ale myślę, że nie jest on zdony do emulacji Androida). PocketSphinx może być ściągnięty za darmo, zarówno pod Windowsy jak i Linuksa, stąd: http://cmusphinx.sourceforge.net/html/download.php . Są dwie opcje instalacji PocketSphinksa pod Ubuntu. Pierwsza to rozpakować (jest to tar.gz), wejść do jego katalogu i wpisać "./configure", "make", "sudo make install". Druga, inna, jest opisana w pliku README, to jest uruchomić autogen.sh, "./configure", "make clean all", "make test", "make install". Powinno to utworzyć między innymi javadoc w katalogu doc.

    ------------------------------------------------------------------------------------------------------------

    DŁUGIE WYJAŚNIENIE

    Wszystko co jest potrzebne, żeby mi podpowiedzieć, zostało opisane powyżej. Więc jeśli nie chcecie / nie macie czasu czytać wszystkiego, samo powyższe wyjaśnienie jest wystarczające. Pomimo tego poniżej opisuję inne sposoby, w jakie próbowałem osiągnąć swój cel. Są one gorsze, niż pierwszy pomysł, opisany powyżej, ale również spróbowałem je wykorzystać i mogą one dać dokładniejsze spojrzenie na to, co próbuję osiągnąć.

    CMU Sphinx zawiera SphinxTrain do stworzenia modelu akustycznego. Ma on kilka różnych programów do rozpoznawania, czyli recognizers (zwane również dekoderami), są to PocketSphinx, Sphinx4 i parę innych. PocketSphinx jest napisany w C i jest dla urządzeń takich, jak telefony komórkowe. Sphinx4 jest aplikacją w Javie dla komputerów PC, ponieważ wymaga lepszego sprzętu. Jest dobry tutorial o używaniu SphinxTrain ze Sphinx4. Znajduje się on tutaj: http://www.speech.cs.cmu.edu/sphinx/tutorial.html . Nie ma podobnego tutoriala dla PocketSphinksa. Chociaż myślę, że z odrobiną wiedzy na temat Androida i C jest możliwe uruchomienie PocketSphinksa pod Androidem. Inną możliwością niż PocketSphinx jest użycie Sphinx4. Aczkolwiek wymaga to połączenia między telefonem komórkowym i serwerem, wysyłania danych audio z telefonu komórkowego na serwer. Może to być osiągnięte ze Skypem, ale wciąż jest problem na stronie serwera z przekierowywaniem dźwięku ze Skype'a do Sphinksa4. Więc jak widzicie są dwie możłiwości. Jedna to uruchomienie rozpoznawania mowy na telefonie z PocketSphinksem i Androidem. Druga to rozpoznawaniem mowy na serwerze ze Sphinx4. Jest kilka sposobów na wykonanie tej drugiej opcji. Jedna to Skype zarówno na serwerze jak i telefonie komórkowym. (Ale jest problem z przekierowaniem mowy ze Skype'a do Sphinksa4). Inna to zbyt droga karta Digium. Pozostaje jeszcze IVR, ale wciąż szukam dobrego oprogramowania open-source typu IVR. Wszystkie te trzy sposoby drugiej opcji wymagają Sphinksa4. Dużo prostsze jest stworzenie aplikacji ze Sphinx4. Jest ono dla PC, a nie telefonów komórkowych, ponieważ wymaga lepszego urządzenia, tzw. "extensive floating point math" i paru innych rzeczy. Ale ma lepszą dokumentację, niż PocketSphinx. Niemniej chciałbym użyć PocketSphinksa, ponieważ wtedy nie musiał bym płacić nikomu za wysłanie małego pliku tekstowego przy użyciu httpconnection, metody POST. Oto dlaczego proszę, żebyście mi pomogli z uruchomieniem pocketsphinx_continuous na symulatorze telefonu z Androidem, z PocketSphinksem. (Swoją drogą mam u siebie na dysku zainstalowane S60 Developer Tools -> 3rd Edition FP1 SDK -> MIDP -> Emulator).

    Podsumowując w postaci listy, następujące programy są w CMU Sphinx:
    I. SphinxTrain, którego używam do stworzenia plików potrzebnych do rozpoznawania polskiej mowy
    II. dekodery, które używają wejścia mowy i paru innych plików, które tworzę ze SphinxTrain, w celu umożliwienia rozpoznawania mowy (wejściowa mowa + pliki ze SphinxTrain = są używane przez dekoder)
    II-1. PocketSphinx, napisany w C, dla urządzeń takich jak telefony komórkowe
    II-2. Sphinx3, napisany w C, dla komputerów PC, obecnie najbardziej rozwijany
    II-3. Sphinx4, napisany w Javie, dla komputerów PC, z najlepszą dokumentacją
    II-4. Parę innych, starszych wersji

    Widzę następujące sposoby rozwiązania mojego problemu:
    I. Rozpoznawanie mowy na telefonie komórkowym z PocketSphinksem. Jest to opcja lepsza, niż [II].
    Problemy: 1. uruchomienie PocketSphinksa na telefonie z Androidem, 2. symulacja telefonu komórkowego z Androidem na komputerze PC. Pomyślałem też, że może powinienem zastanowić się nad Maemo, co o tym sądzicie? Lub użyć innego programu rozpoznawania mowy, np. Simon, HTK, Julius. Poczytałem trochę o tych innych silnikach rozpoznawania mowy i myślę, że PocketSphinx będzie najlepszą opcją.
    II. Rozpoznawanie mowy na serwerze ze Sphinx4. Jest kilka sposobów ustanowienia połączenia głosowego pomiędzy telefonem i serwerem:
    II-1. zwykła rozmowa z telefonu na serwer; serwer ma kartę Digium. Minus: karty Digium są drogie.
    II-2. użycie Skype'a na telefonie komórkowym i serwerze. Problem: przekierowanie dźwięku ze Skype'a do Sphinksa4 i vice versa.
    II-3. czy macie pomysł jak inaczej to rozwiązać? Pomyślałem, że Asterisk może być użyteczny.

    Pozdrawiam :-)!

    Przeniosłem pytanie do odpowiedniego działu - [nick]piskor[/nick]

  2. #2
    Awatar muha

    Dołączył
    08 2009
    Posty
    38
    Telefon
    SGS
    Sieć
    Plus
    Piwa (Postawione)
    0
    Piwa (Otrzymane)
    1

    Domyślnie

    Co do emulacji Androida. Zainstaluj sobie np. Eclipse lub Netbeans z Android SDK i masz gotowy emulator.

  3. #3
    Awatar Rad-X

    Dołączył
    07 2009
    Posty
    312
    Telefon
    G1
    Sieć
    Play
    Piwa (Postawione)
    4
    Piwa (Otrzymane)
    5

    Domyślnie

    Ta wtyczka na NetBeans jest niby rozwijana?

  4. #4

    Dołączył
    11 2009
    Posty
    6
    Sieć
    Plus
    Piwa (Postawione)
    1
    Piwa (Otrzymane)
    0

    Domyślnie

    Dzięki za odpowiedź!

    W międzyczasie udało mi się znaleźć emulator. Mam jednak trochę inny, zapewne prosty problem.

    CMU Sphinx składa on się ze SphinxTrain do tworzenia modeli akustycznych (potrafię się nim obsłużyć) i dekoderów: Sphinx3 (najbardziej rozwijany, w C), Sphinx4 (również bardzo dobry, w Javie), PocketSphinx (w C, na urządzenia przenośne, telefony). Mnie interesują teraz tylko dwa, tj. Sphinx4 (Java) i PocketSphinx (C). W obu tych aplikacjach są przykładowe programy. W Sphinx4 są one tutaj S:\tutorial\sphinx4-1.0beta3-src\src\apps\edu\cmu\sphinx\demo\helloworld, każdy katalog zawiera wszystkie pliki potrzebne do skompilowania, które da się zrobić korzystając z Anta i plików Makefile. Programy uruchamia sie prosto http://cmusphinx.sourceforge.net/sphinx4/#demos.

    PocketSphinx również zawiera przykładowe programy (mnie interesuje S:\tutorial\pocketsphinx\doc\pocketsphinx_continuo us), wystarczy wejść do tego katalogu z wiersza poleceń i odpalić nazwę programu. Niestety, nie udało mi się znaleźć jakiegoś jednego, konkretnego katalogu, w którym byłyby wszystkie pliki źródłowe tego pocketsphinx_continuous. Rzecz wygląda tak, że mam działający program pod Sphinx4, napisany przez siebie, ale muszę go odpalić pod PocketSphinksem. Zapytałem na forum CMU Sphinx jak to zrobić i otrzymałem odpowiedź

    "Let's say I've got working application in Sphinx4. How to move it to PocketSphinx? Their different engines. They use the same models but they are different. Even different languages. A sphinx4 app wont work in pocketsphinx. You will need to rewrite it.".
    Innymi słowy muszę stworzyć swoją aplikację jeszcze raz. No dobra, ale o ile udało mi się stworzyć własną aplikację w Sphinx4 na podstawie kodów źródłowych przykładowych aplikacji, po prostu edytując wszystkie pliki znajdujące się w katalogu danego programu i odpalając Anta, o tyle nie udaje mi się podobna sztuczka z PocketSphinksem. Czy mógłby mi ktoś, prosze, wskazać wszystkie pliki, które są odpowiedzialne za przykład pocketsphinx_continuous i które muszę edytować, żeby dostosować tą aplikację do swoich potrzeb? Wiem, że nie jest to szczyt programowania, jeśli zamiast kodować edytuję kody źródłowe przykładowych aplikacji, ale jest to sposób raczej dużo prostszy. PocketSphinx można pobrać stąd za darmo, zarówno pod Windowsy jak i Linuksa: http://cmusphinx.sourceforge.net/html/download.php.

    Pozdrawiam!

  5. #5

    Dołączył
    01 2009
    Posty
    636
    Sieć
    .
    Piwa (Postawione)
    0
    Piwa (Otrzymane)
    97

    Domyślnie

    Cytat Zamieszczone przez johnyjj2 Zobacz posta
    Widzę następujące sposoby rozwiązania mojego problemu:
    I. Rozpoznawanie mowy na telefonie komórkowym z PocketSphinksem. Jest to opcja lepsza, niż [II].
    Problemy: 1. uruchomienie PocketSphinksa na telefonie z Androidem, 2. symulacja telefonu komórkowego z Androidem na komputerze PC. Pomyślałem też, że może powinienem zastanowić się nad Maemo, co o tym sądzicie? Lub użyć innego programu rozpoznawania mowy, np. Simon, HTK, Julius. Poczytałem trochę o tych innych silnikach rozpoznawania mowy i myślę, że PocketSphinx będzie najlepszą opcją.
    II. Rozpoznawanie mowy na serwerze ze Sphinx4. Jest kilka sposobów ustanowienia połączenia głosowego pomiędzy telefonem i serwerem:
    II-1. zwykła rozmowa z telefonu na serwer; serwer ma kartę Digium. Minus: karty Digium są drogie.
    II-2. użycie Skype'a na telefonie komórkowym i serwerze. Problem: przekierowanie dźwięku ze Skype'a do Sphinksa4 i vice versa.
    II-3. czy macie pomysł jak inaczej to rozwiązać? Pomyślałem, że Asterisk może być użyteczny.
    1. Odpada - jest przeznaczony tylko jak nazwa wskazuje na PocketPC (Windows CE i Mobile).
    Jeśli jest to aplikacja konsolowa to wystarczy skompilować kompilatorem gcc z tergetem na Arm (np. w android ndk masz taki) i odpalać za pomocą emulatora konsoli z marketu (jest tam co najmniej kilka) - w wypadku gdy jest to graficzna aplikacja trzeba oddzielić backend od frontednu i skompilować do biblioteki (dodać interface JNI) i wykorzystać przy pisaniu aplikacji w javie. Maemo to faktycznie może być dobry pomysł, bo to zwykły linuks z normalnymi Xami, więc nawet jeśli graficzna powinna działać po skompilowaniu na arm (o ile będzie się dało jej używać, bo mimo to że są tam Xy to ekran jest mały, nie ma wszystkich bibliotek i może wymagać dodatkowych zabiegów (kompilacja potrzebnych bibliotek na arm), oraz może być nieczytelna/nieużyteczna - nie jest przystosowana do telefonu).

    2. Ogólnie dobry pomysł, ale też trzeba napisać komunikacje klient-serwer i dodatkowo narażasz się na koszty przesyłu danych.

Tagi dla tego wątku

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Windows Phone :: Android :: Forum Windows Phone