kompilacja sphinx4 helloworld w netbeans - błędy

0

Witam :-)!

Mam pewien problem z buildem projektu w NetBeans. (Właściwie to można pominąć to, co tu napisałem i po prostu rzucić okiem na załączony plik. Albo przeczytać od "Ale żeby stworzyć własną..." jeśli nie macie czasu na przeczytanie całego postu :-P).

Mam dwa katalogi sphinx4-1.0beta3-src i sphinx4-1.0beta3-bin, które są częścią systemu rozpoznawania mowy CMU Sphinx, Sphinx4 jest napisane w Javie. W katalogu S:\tutorial\sphinx4-1.0beta3-bin\bin mam kilka plików .jar, np. HelloDigits.jar. W S:\tutorial\sphinx4-1.0beta3-src nie ma katalogu bin, ale jest trochę katalogów w S:\tutorial\sphinx4-1.0beta3-src\src\apps\edu\cmu\sphinx\demo, np. S:\tutorial\sphinx4-1.0beta3-src\src\apps\edu\cmu\sphinx\demo\hellodigits zawiera pięć plików: digits.gram, hellodigits.config.xml, HelloDigits.java, hellodigits.Manifest, README.html. Plik readme jest taki sam jak tutaj: http://cmusphinx.sourceforge.net/sphinx4/src/apps/edu/cmu/sphinx/demo/helloworld/README.html . Na pewno mam jsapi.jar.

Innymi słowy w jednym katalogu (sphinx4-1.0beta3-bin) mam dwa wykonywalne pliki .jar (lub raczej nie wykonywalne, ale interpretowalne przez JVM). W drugim (sphinx4-1.0beta3-src) mam kod źródłowy tych aplikacji. Jest też trochę dodatkowych plików, nie tylko .java kod źródłowy. Najważniejsze są dwa z nich, to jest .java i .xml.

W celu uruchomienia HelloDigits.jar, wykonuję następującą komendę w wierszu poleceń: "S:\tutorial\sphinx4-1.0beta3-bin\java -mx256m -jar bin/HelloWorld.jar". Pokazuje mi napis "rozpocznij mówienie", więc działa OK.

Dobra, czyli wiem jak uruchomić istniejącą już aplikację. Ale żeby stworzyć własną, potrzebuję zrobić to co tutaj http://cmusphinx.sourceforge.net/sphinx4/#setupide . Po pierwsze tworzę nowy projekt (File -> New Project; zostawiam domyślne wartości). Potrzebuję wykonać pierwszy krok. W Projects -> Source Packages mam "javaapplication -> Main.java". Po prostu robię drag-and-drop z tymi katalogami z S:\tutorial\sphinx4-1.0beta3-src\src (są to apps, research, sphinx4) i po paru sekundach mam dodatkowe rzeczy w Source Packages, np. "apps.edu.cmu.sphinx.demo". W celu spełnienia kroku drugiego, klikam prawym przyciskiem myszy na Libraries i wybieram "Add JAR/Folder". Dodaję z katalogu S:\tutorial\sphinx4-1.0beta3-src\lib trzy pliki, tj. js.jar, jsapi.jar i tags.jar. Zdziwiony byłem, że nie ma tags.jar w S:\tutorial\sphinx4-1.0beta3-src\lib, więc skopiowałem go z katalogu sphinx4-1.0beta3-src. Teraz mam cztery rzeczy w Libraries, trzy nowe i jedną już tam wcześniej będącą (JDK 1.6 (Default)).

W Main.java mam domyślny kod źródłowy NetBeansa, który z całą pewnością nie jest tym, co chcę mieć. Pewne porady co do stworzenia własnej aplikacji są tutaj: http://cmusphinx.sourceforge.net/sphinx4/doc/ProgrammersGuide.html#hellodigits . Zamieniam domyślny kod całkowicie z tym z przykładu. Klikam "Build main project" w menu. Po chwili tworzy mi C:\Documents and Settings\MainAccount\Moje dokumenty\NetBeansProjects\JavaApplication4, ale niestety wyświetla "BUILD FAILED (total time: 8 seconds)". Te błędy zawarłem z tym postem w pliku.

Co powinienem zrobić, żeby wykonać build bez błędów?

Z góry dzięki za pomoc :-)!
Pozdrawiam :-)!

Załącznik:
http://forum.codecall.net/attachments/java-help/2292d1257619727-building-sphinx4-helloworld-netbeans-errors-123b-errors-when-building-helloworld-netbeans.txt

0
  1. Klasy publiczne muszą być w plikach o nazwie opowiadającej nazwie klasy.
    Zmień nazwę Main.java na HelloDigits.java
  2. Pakiety muszą dokładnie odpowiadać strukturze katalogów.
    Jeżeli masz pakiet edu.cmu.sphinx.demo, to pliki powinny być w katalogu src\edu\cmu\sphinx\demo, a u Ciebie są w src\apps\edu\cmu\sphinx\demo (zakładając, że classpath wskazuje na src).
0

Dzięki :-)!

Zrobiłem tak, jak pisałeś. We właściwościach zamieniłem nazwę pliku, potem zaakceptowałem wykonanie refaktoryzacji przez NetBeansa. Następnie przeniosłem folder edu z katalogu apps do folderu nadrzędnego i dodałem do projektu te trzy katalogi (edu, research, sphinx4) zamiast jak wcześniej (apps, research, sphinx4).

Niestety, wynikałoby, że dalej są problemy z tym co i w jakim katalogu się znajduje: http://images38.fotosik.pl/220/c8f62af10b74a9b3.jpg

Stworzyłem sobie na podstawie błędów wyświetlonych przez NetBeansa plik tekstowy, w którym widzę jak ma wyglądać struktura katalogów. Drugi plik, który załączam to obecnie istniejąca struktura katalogów (polecenie dir /ad /s /b > 2.txt). Oba pliki tekstowe są tutaj: http://www.speedyshare.com/220749497.html

No to sobie przeanalizowałem te dwa pliki i zauważyłem, że katalog apps jest w porządku, jednak muszę wyrzucić dwa katalogi (edu i com) do katalogu nadrzędnego z research i sphinx4. Zrobiłem to, jeszcze raz robię drag-and-drop na katalogach (tym razem apps, com i edu zamiast apps, research i sphinx4). Dodaję biblioteki. Zmieniam nazwę pliku (Projects -> Source Packages -> ... -> Properties) z Main.java na HelloDigits.java. Niestety, choć wcześniej potrafił wykonać refaktoryzację, teraz mu się to nie udaje:

Cannot refactor library class "demo.sphinx.hellodigits"

Pozdrawiam :-)!

PS Ubuntu zainstalowałem sobie tydzień temu i bardzo jestem z niego zadowolony :-), choć z Windowsów jeszcze trochę czasu minie, zanim całkiem zrezygnuję :-P.

0

Usuń "javaapplication5" z nazw pakietów.

Ścieżki powinny wyglądać np. tak
JavaApplication5/src/demo/sphinx/hellodigits
a nie
JavaApplication5/src/javaapplication5/demo/sphinx/hellodigits

Jeżeli nie możesz tego zrobić w IDE, to zrób to ręcznie (najpierw zamknij Netbeansa).

Wszystko, co jest w katalogu JavaApplication5/src/javaapplication5 przenieś do katalogu o jeden poziom wyżej (tzn. do JavaApplication5/src).

Pusty katalog JavaApplication5/src/javaapplication5 możesz usunąć.

Plik HelloDigits.java musi znajdować się w katalogu JavaApplication5/src/demo/sphinx/hellodigits

0

Dzięki wielkie za Twoją pomoc :-)!

Niemniej w dalszym ciągu są pewne trudności. Pomyślałem, że jak zapytam na stronie tego projektu to oni mi coś więcej będą w stanie na ten temat powiedzieć, ponieważ cały czas pracują nad tym projektem CMU Sphinx, niektórzy w NetBeans. Temat jest tutaj: https://sourceforge.net/projects/cmusphinx/forums/forum/382337/topic/3453042

Owszem, podpowiedzieli mi co zrobić. Nie do końca udaje mi się jednak zastosować do tych wskazówek:
Ad. 1 -> Create a new project -> Stworzyłem nowy projekt z domyślnymi wartościami.
Ad. 2 -> Add sphinx4.jar to it's libraries -> sphinx4-bin/lib/sphinx4.jar
Ad. 3 -> Create a main class in it -> Otworzyłem Libraries/sphinx4.jar/META-INF/MANIFEST.MF i spróbowałem zmienić z "Main-Class: edu.cmu.sphinx.util.SphinxHelp" na "Main-Class: edu.cmu.sphinx.demo.Main". Niestety, "File META-INF/MANIFEST.MF cannot be locked because it is read-only".
Ad. 4 -> Import sphinx4 -> Otworzyłem File/Project Properties/Libraries/Add i nie bardzo wiem, co tam dodać (próbowałem czegoś tutaj szukać: S:\tutorial\sphinx4-1.0beta3-src\src\sphinx4\edu\cmu\sphinx).
Ad. 5 -> Implement recognizer -> Czy to po prostu znaczy stworzenie kodu w Main.java, np. skopiowanie kodu z HelloWorld.java?

Zasugerowali też, żebym przeczytał jakiś tutorial, spróbowałem tego https://sourceforge.net/projects/cmusphinx/forums/forum/382337/topic/3453042 ale ta lektura niezbyt mi pomogła.

Pozdrawiam :-)!

0

Kompilacja pakietem Ant się udaje natomiast też próbuję skompilować sphinxa 4 pod NetBeansem i się nie udaje. Wysłałem maila, ale odnieśli mnie do strony na której nic nie pisze :(

0

Spędziłem sporo czasu nad tym całym NetBeansem i Eclipsem i uważam ten czas za zmarnowany, chociaż do pewnych wniosków doszedłem.

Samemu pracuję pod Linuksem Ubuntu 9.10 (Karmic). No i dałem sobie spokój z tymi całymi IDE, po prostu tworzę swój projekt, korzystając z demo (kopiując kod źródłowy do nowego katalogu i zmieniając to, co potrzebuję w kodzie źródłowym i innych plikach), następnie to, co normalnie bym zrobił w IDE, zmieniam po prostu w pliku xml (build.xml odsyła do demo.xml, do tego każdy projekt ma swoje xml-e). Następnie znowu wykonuję Ant:

mainaccount@mainaccount-laptop:~/tutorial/sphinx4-1.0beta3-src/sphinx4-1.0beta3$ ant
Buildfile: build.xml

Pozdrawiam!

PS Jeśli Ty lub inni użytkownicy forum znacie się na Asterisku, proszę, rzućcie okiem tutaj: http://forum.dug.net.pl/viewtopic.php?pid=136897 oraz http://old.nabble.com/using-other-acoustic-models-in-Cairo-Zanzibar-to26879547.html . Jeśli chcecie, mogę ponowić pytania na tym forum.

Co do Sphinksa to mam problem z jednym z ostatnich kroków, tj. integracją wyjściowych plików wytrenowanego modelu akustycznego do jednego pliku .jar. Uzyskałem od nich odpowiedź, że "sphinx4 has documentation on how to use jar:file :URI scheme". Niestety, nie jestem w stanie tego znaleźć w dokumentacji: http://www.google.com/search?hl=en&lr=&q=jar:file:+URI+scheme+sphinx4&start=0&sa=N

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