Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-12-18 17:03:50

  johnyjj2 - Użytkownik

johnyjj2
Użytkownik
Zarejestrowany: 2009-12-18

Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

Witam!

Byłbym bardzo wdzięczny, gdyby ktoś mógł odpowiedzieć na moje pytania, przynajmniej jednym zdaniem :-). Albo prosta odpowiedź typu "1-3, 2-1, 3-2" (jest to mój wybór na ten moment) i dać krótkie wyjaśnienie :-).

Znam się trochę na używaniu SphinxTraina i Sphinx4. Chciałbym stworzyć taki system IVR-ASR, że:
a. użytkownik wybiera specjalny numer z telefonu komórkowego
b. mówi dwanaście cyfr
c. serwer rozpoznaje cyfry, oblicza sumę kontrolną i informuje użytkownika o tej sumie
d. kroki drugi i trzeci są powtarzane wiele razy, aż do wypowiedzenia słowa "koniec"

W zasadzie to chciałbym się dowiedzieć, jaki sprzęt lub usługi muszę kupić i jak skonfigurować rozpoznawanie mowy dla mojego modelu akustycznego, czyli komunikację między programami Asterisk i programem rozpoznawania mowy. Pewne rzeczy znalazłem i poniżej przedstawiam swoje pomysły. Niemniej przydałoby mi się, gdyby skomentował je ktoś bardziej doświadczony :-).

---------------------------------------------------------------------------------------
1. JAK UMOŻLIWIĆ DOSTĘP DO ASTERISKA Z TELEFONU KOMÓRKOWEGO (wybór sprzętu i usług)
słowa kluczowe: server, karta Digium, SIP/ITSP provider, PSTN/DID numer
---------------------------------------------------------------------------------------

Mam serwer (rzecz jasna z dostępem do internetu). Niestety jest on odpalony na Windowsach (spróbuję jednak przekonać administratora do jego zmiany na Linuksa i może mi się uda). Co powinienem kupić do serwera? Pomyślałem oL

1-1. http://planet.pl/produkty/telefonia_internetowa_voi … owe/vip_281gs
1-2. karta Digium
1-3. zakup usługi od SIP providera (jaka może być cena takiej usługi?)
1-4. wynajęcie serwera

Ad. 1-2.

Zadałem pytania SIP providerom i oto, czego się dowiedziałem.

Pierwszy z nich (HaloNet) powiedział mi, że w celu skonfigurowania Asteriska i HaloNetu potrzebuję: 1. konta (https://www.halonet.pl/rejestracja), 2. hasła do konta, 3. nazwy serwera SIP (sip.halonet.pl). Dodatkowo, w cleu przetestowania rozmów przychodzących, potrzebuję numeru PSTN. Powiedziano mi, żeby zarejestrować się do usługi i potem wysłać im maila z prośbą o dodanie numeru testowego. Dostarczyli mi oni również przykładową konfigurację dla Asteriska. Jak stworzyć lub uzyskać nazwę mojego SIP serwera?

Drugi z nich (Ipfon) wymaga: 1. stworzenia konta (https://rejestrator.ipfon.pl/index.php?version=ipfo … nario=telefon), 2. skonfigurowania trunk dla Asteriska (http://forum.ipfon.pl/index.php?topic=64).

Zadałem również pytanie na liście mailingowej Ekiga (http://mail.gnome.org/archives/ekiga-list/2009-December/msg00046.html). Powiedziano mi, że nie mogą dostarczyć tego, czego potrzebuję. Dowiedziałem się jednak, że powiniene uzyskać od ITSP (nie SIP) providera numer DID (nie PSTN). Myślałem, że wiem już, że potzrebuję numeru PSTN od SIP providera. Oni napisali o numerze DID od ITSP providera i w sumie nie bardzo wiem, co jest grane. Którego z nich potrzebuję?

Podsumowując będzie to wyglądać następująco: użytkownik -> telefon komórkowy -> rozmowa -> serwery providerów -> internet -> mój serwer -> Asterisk. Mam rację?

Ad 1-4:

Na początku pomyślałem o użyciu serwera, do którego będę miał dostęp. Fizyczny dostęp do posiadanego sprzętu byłby konieczny w przypadkach 1-1 i 1-2. Aczkolwiek dla 1-3 mogę rozważyć dwie opcje (własny serwer lub wypożyczenie z innego miejsca). Normalną rzeczą jest, że można kupić trochę miejsca na serwerze w celu uploadu strony internetowej. Czy są podobne usługi do tego, czego ja potrzebuję? Innymi słowy  potrzebuję serwera Linuksowego z Asteriskiem i zapewne też Sphinksem. Minusem mojego serwera jest to, że będzie odpalony na Windowsach i zapewne będę musiał użyć Asteriska pod Windowsami (choć nie jest to całkiem pewne, może uda mi się przekonać administratora do Linuksa).

---------------------------------------------------------------------------------------
2. JAK UMOŻLIWIĆ ROZPOZNAWANIE MOWY NA SERWERZE Z ASTERISKIEM (wybór oprogramowania)
słowa kluczowe: skrypty AGI, Sphinx4, wtyczka ScribbleJ, PocketSphinx
---------------------------------------------------------------------------------------

2-1. Znalazłem to: http://www.voip-info.org/wiki/view/Sphinx . Jest to skrypt AGI do wywołania z Asteriska. Mam rację, że jedynym czego bym potrzebował to Asterisk i Sphinx4? Stąd też byłbym bardzo ciekaw, czy mogę użyć tego skryptu, żeby połączyć Asteriska ze Sphinksem4.
2-2. Znalazłem to: http://scribblej.com/svn/ . Jaki jest plus użycia tego ScribbleJ, jeśli to samo można dużo prościej zrobić z 2-1? Dla tego rozwiązania będzie to wyglądało tak: Asterisk -> ScribbleJ plugin -> Sphinx4 (jeśli jest to możliwe, żeby zintegrować ze Sphinx4, było testowane tylko dla PocketSphinksa).
2-3. Czy są jeszcze jakieś inne możliwości?

---------------------------------------------------------------------------------------
3. GDZIE UTWORZYĆ ALGORYTM? (Asterisk + Sphinx lub Asterisk + skrypty AGI/AEL/LUA)
---------------------------------------------------------------------------------------

3-1. Gramatyka formalna i kod źródłowy aplikacji Sphinx4

Z początku pomyślałem o napisaniu aplikacji dla Sphinksa4. Aplikacja jest napisana w Javie, normalnie się uruchamia ją przez "java -mx256m -jar bin/ApplicationName.jar". Stworzyłem: a) model akustyczny (nie ma darmowych modeli dla j. polskiego) w SphinxTrain, b) model językowy (przy pomocy lmtoolkit online), c) gramatyki formalne (najważniejsze dla algorytmu), d) listę słów, listę fonemów, e) główną aplikację (kod źródłowy w Javie). Tworzę (a) z (b) i (c), a potem uzywam (c) i (a) dla (e).

3-2. Dialplan ze skryptem AEL/LUA

Później pogadałem trochę na kanale #asterisk na Freenode. (Zainstalowałem Pidgina specjalnie, żeby zapytać autora wtyczki ScribbleJ, czy da się ją odpalić pod Windowsami, ale i tak nie udało mi się z nim skontaktować). Powiedzieli mi "Zaimplementuj logikę w dialplanie. Jeśli wolisz, użyj języka embedded typu AEL lub LUA". Czyżbym więc w ogóle nie potrzebował kodu źródłowego w Javie dla Sphinx4? Czy w ogóle potrzebuję tego Sphinx4, czy tylko Asteriska, model akustyczny i dialplan? Możecie polecić jakieś tutoriale o tworzeniu dialplanów? Czy dalej potrzebuję gramatyk formalnych z 3-1?

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

Offline

 

#2  2009-12-18 21:56:21

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

Ad 1. pytanie zasadnicze do czego to ma tak naprawde sluzyc ... od tego zalezy to czego potrzebujesz ... jezeli ma byc to maly system to wystarcza zwykle konto SIP od jakiegos operatora i asterisk odbierajacy przychodzace polaczenia z PSTN ... jezeli cos wiekszego (wiele numerow etc) to do rozwazenia sa "powazniejsze" metody lacznosci (w tym DID) ...

lacznosc bedzie wygladala tak jak pokazales ... jezeli sprawa ma byc "powazna" warto rozwazyc serwer dedykowany, samej uslugi Asteriska z prawem do zarzadzania tym raczej nikt nie sprzedaje

Ad2. nie znam sie na Sphinx, ale sadze ze glowne roznice beda wydajnosciowe, byc moze wtyczka obudiowuje tez to o czym pisales ze musiales doprogramowac do  Sphinx'a - w zasadzie musisz przeprowadzic rozpoznanie bojem ktory wariant jaest najlepszy ...

Ad3. zalezy o ktory algorytm chodzi, ale ogolnie to:
a) programowanie w dialplanie jest troche upiorne
b) raczej nie da sie tam poustawiac rzeczy bardziej wewnetrznych dla Sphinx (ale nie znam sie na nim)
c) z logika to raczej chodzilo o ta logike w stylu liczenia sumy kontrolnej, reakcji na koniec itd (ogolnie logike IVR) niz tworzenia gramatyki rozpoznawanego jezyka ...

ogolnie to do testowania wystarczy serwer asteriska (nawet na domowym PC) i jakis klient SIP ktorym bedziesz sie do niego laczyl ... ppodpinanie pod PSTN i przenoszenie na prawdziwy serwer ma sens raczej  dopiero gdy caly algrorytm rozpoznawania oraz IVR bedie dzialal

Ostatnio edytowany przez bercik (2009-12-18 21:57:41)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#3  2009-12-19 04:08:13

  johnyjj2 - Użytkownik

johnyjj2
Użytkownik
Zarejestrowany: 2009-12-18

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

Odpowiedź bardzo przydatna, szybka i kompetentna :-), więc dzięki!

ogolnie to do testowania wystarczy serwer asteriska (nawet na domowym PC) i jakis klient SIP ktorym bedziesz sie do niego laczyl

I na tym zamierzam się teraz skupić. Czyli dajmy na to a) założę konto u SIP providera, b) skonfiguruję SIP trunka. W dalszym ciągu nie widzę (po przejrzeniu przykładowego pliku konfiguracyjnego dla Asteriska, który od nich dostałem), skąd mam wiedzieć na jaki numer telefonu musiałbym dzwonić ze swojej komórki, żeby przetestować to rozpoznawanie mowy na domowym PC z Asteriskiem. Podejrzewam, że kluczową sprawą jest ostatnie zdanie maila od HaloNet, czyli "Dodatkowo, aby przetestować połączenia przychodzące niezbędny jest numer PSTN. Proszę zarejestrować się w usłudze, a następnie przesłać do nas maila z prośbą o dodanie numeru testowego". Jak rozumiem jest to tylko numer testowy, a do praktycznych zastosowań oprócz konta SIP będę potrzebował jeszcze tego numeru PSTN, czyli muszę wykupić razem dwie różne usługi. Czy można je wykupić u tej samej firmy, która umożliwia stworzenie konta SIP? Bo w sumie to znalazłem opcje takie jak easycall.pl i callfromweb.pl (http://voipcheap.blogspot.com/2006/04/najtaszy-polski-numer-pstn.html)? Innymi słowy - rejestruję się w HaloNet albo Ipfon, płacę im za konto SIP, instaluję u siebie Asteriska, konfiguruję go i co z tym numerem PSTN? Wykupuję drugą usługę? Kogo lepiej wybrać, IPFON czy HaloNet?

Pomoc techniczna HaloNet: Aby skonfigurować serwer Asteriska pod HaloNet będzie Pan potrzebował:
- konto >>dane dostępne po zalogowaniu się na stronie https://www.halonet.pl/rejestracja
- hasło do konta >> dane dostępne po zarejestrowaniu się na stronie https://www.halonet.pl/rejestracja
- nazwę serwera SIP >> sip.halonet.pl
//oraz przykładowa konfiguracja dla Asteriska

Pomoc techniczna Ipfon: Wystarczy zatem, że założy Pan konto: https://rejestrator.ipfon.pl/index.php?version=ipfo … nario=telefon
i skonfiguruje trunk pod Asteriskiem: http://forum.ipfon.pl/index.php?topic=64

Dodatkowo, aby przetestować połączenia przychodzące niezbędny jest numer PSTN. Proszę zarejestrować się w usłudze, a następnie przesłać do nas maila z prośbą o dodanie numeru testowego.

No i jeszcze kwestia tego, że mam w domu raczej powolny internet (w praktyce ok 0,6 Mbit/s). Widzę, że karta Digium albo bramka VoIP to kwestia tysiąca złotych, zaś SIP provider to tylko trzydzieści złotych. Niemniej jednak w wypadku SIP providera internet musi być szybki, w razie pierwszej opcji nie ma takiego wymogu.

Czyli podsumowując moim najbliższym, krótkoterminowym celem jest skomunikowanie się z telefonu komórkowego z Asteriskiem na domowym laptopie. Kwestią do wyjaśnienia jest zaś numer PSTN, umożliwiający dodzwonienie się na Asteriska. Zastanawiam się też, jak sprawdzić, czy Asterisk przechwytuje mowę po odebraniu rozmowy przychodzącej, bez zajmowania się jeszcze Sphinksem. Podejrzewam, że da się to jakoś zrobić przy pomocy prostego dialplanu typu "zapisz przychodzącą rozmowę do pliku wav".

Ad 1. pytanie zasadnicze do czego to ma tak naprawde sluzyc ... od tego zalezy to czego potrzebujesz ... jezeli ma byc to maly system to wystarcza zwykle konto SIP od jakiegos operatora i asterisk odbierajacy przychodzace polaczenia z PSTN ... jezeli cos wiekszego (wiele numerow etc) to do rozwazenia sa "powazniejsze" metody lacznosci (w tym DID) ...

Raczej mały system. Jedna rozmowa jednocześnie.

Pozdrawiam!

Offline

 

#4  2009-12-19 18:33:32

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

johnyjj2 napisał(-a):

I na tym zamierzam się teraz skupić. Czyli dajmy na to a) założę konto u SIP providera, b) skonfiguruję SIP trunka. W dalszym ciągu nie widzę (po przejrzeniu przykładowego pliku konfiguracyjnego dla Asteriska, który od nich dostałem), skąd mam wiedzieć na jaki numer telefonu musiałbym dzwonić ze swojej komórki,

1. bo numer telefonu nie wynika z danych konfiguracyjnych asteriska ... u niektorych operatorow VoIP mozna miec konto SIP bez numeru PSTN ... u czesci operatorow numer PSTN jest w cenie abonamentu u niektorych jest dodatkowo platny ...
2. jezeli chialbys u innego operatora konto u innego numer ... wtedy tez w zasadzie nie potrzebujesz konta SIP ... o to wlasnie chodzi z tym DID ze jest to numer "bez konta"
3. do testow nie porzebujesz nawet konta u operatora VoIP -wystarczy jakis softphone (np. twinkle) ktorym zadzwonisz do asteriska ... oczywista zaleta jest to ze nie placisz za takie polaczenia (a przy testowaniu pewnie troche ich wykonasz)

johnyjj2 napisał(-a):

Czyli podsumowując moim najbliższym, krótkoterminowym celem jest skomunikowanie się z telefonu komórkowego z Asteriskiem na domowym laptopie. Kwestią do wyjaśnienia jest zaś numer PSTN, umożliwiający dodzwonienie się na Asteriska. Zastanawiam się też, jak sprawdzić, czy Asterisk przechwytuje mowę po odebraniu rozmowy przychodzącej, bez zajmowania się jeszcze Sphinksem. Podejrzewam, że da się to jakoś zrobić przy pomocy prostego dialplanu typu "zapisz przychodzącą rozmowę do pliku wav".

ja bym zaczol od kwestii rozpoznawania mowy (bo tobardziej skomplikowane i mniej popularne - trudniej uzyskac jakas pomoc) i testowal to na czystym SIP (wogole bez wchodzenia do klasycznej telefonii) ... jak juz bedzie dzialal to dolozyl konto u jakiegos dostawcy z numerem PSTN (to juz jest prosta i standardowa sprawa)

johnyjj2 napisał(-a):

Raczej mały system. Jedna rozmowa jednocześnie.

czyli zwykle konto SIP i ptrzyzwoite lacze to zalatwi ... co do lacza to wazna jest najmniejsza z przepustowosci up/down, ale jeszcze wazniejsze sa opoznienia i ich wachania ... (w zasadzie prawdziwe 64kbit up/down z dobra charakterystyka opoznien przy systemie jednopolaczeniowym wystarcza w zupelnosci)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#5  2009-12-20 13:49:55

  johnyjj2 - Użytkownik

johnyjj2
Użytkownik
Zarejestrowany: 2009-12-18

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

Dzięki za odpowiedź!

Wysłałem maile do Ipfon i HaloNet z zapytaniem, czy razem z kontem SIP oferują numer PSTN.

Co zamierzam zrobić:
1. Zainstalować Twinkle w celu emulacji dzwonienia z telefonu na serwer.
2. Na tym samym komputerze instaluję Asteriska.
3. Konfiguruję SIP trunk Asteriska tak, żeby odbierał rozmowy z Twinkle. Jak plik konfiguracji miałby wyglądać dla użycia Asteriska z Twinkle?
4. Instaluję Sphinx4 (ten krok mam już spełniony). Kończę tworzenie aplikacji Sphinx4, która wykorzystuje mój model akustyczny, moją gramatykę i mój algorytm.
5. Używam http://www.voip-info.org/wiki/view/Sphinx albo http://scribblej.com/svn/ w celu umożliwienia komunikacji Asteriska ze Sphinx4. Podejrzewam, że ten krok może sprawić najwięcej trudności, jak również kroki (4) i (6).
6. Tworzę dodatkowy dialplan w celu: a) zapytania użytkownika przy pomocy DTMF czy zamierza używać ASR czy DTMF. Jeśli wybierze ASR, dalej będzie komunikacja ze Sphinx4. Jeśli wybierze DTMF, to dalej wszystko będzie bazować na DTMF. W jaki sposób mogę coś takiego zrobić? Wcześniej myślałem, że będą to dwa niezależnie od siebie działające systemy (midlet na komórce, używający httpconnection, metody post i tomcat na serwerze). Teraz tak sobie myślę, że użycie DTMF w ramach Asteriska powinno być lepszym rozwiązaniem.
7. Testuję aplikację, żeby upewnić się, czy cały system jest postawiony na nogi.
8. Wykupuję konto SIP z numerem PSTN u HaloNet albo Ipfonu. Instaluję Asteriska i Sphinksa4 na serwerze. Możliwe problemy: zbyt wolny internet, wtedy najlepiej będzie zmodyfikować scenariusz i użyć jednak karty Digium albo bramki VoIP zamiast konta SIP, albo też wynajęcie serwera w Data Centre. Inny możliwy problem: konieczność użycia Windowsów zamiast Linuksa. Wtedy spróbuję wdrożyć rozwiązanie pod Windowsami. Jeśli się nie uda - znowu Data Centre.
9. Nagrywam duże próbki głosów docelowych użytkowników systemu. Ponieważ nie ma dobrej (kilkadziesiąt lub kilkaset godzin nagrań) bazy akustycznej dostępnej za darmo dla j. polskiego, jedyne co mi pozostaje to speaker-dependent system. Tworzę nową bazę akustyczną, uwzględniającą nowe próbki mowy.
10. System zaczyna działać.
11. Tworzę jakąś ankietę w celu uzyskania informacji zwrotnych od użytkowników.
12. Tworzę aplikację webową w celu umożliwienia dostępu do uzyskanych przez system informacji z dowolnego miejsca w internecie.

============================================================================================================================================

Ad. 4. Pytanie pierwsze.

Czy muszę specyfikować swój algorytm w Sphinx4 czy w dialplanie?. Chyba że w ogóle nie potrzebuję Sphinx4, tylko model akustyczny ze SphinxTrain?
Pytałeś jaki algorytm (drugi post, ad. 3). Otóż program Sphinksa4 wygląda tak:

/home/mainaccount/tutorial/sphinx4-1.0beta3-src/sphinx4-1.0beta3/src/apps/edu/cmu/sphinx/demo/jsapi/jsgf //src, czyli source code
--------------------------------------------------------------------------------------------------------
a. gramatyki. Jest to kilka plików z rozszerzeniem .gram. Bazuję na jsapi/jsgfDemo, ponieważ jest to jedyny przykład, który umożliwia przełączanie się pomiędzy gramatykami. Zaś ja potrzebuję kilku gramatyk. Pierwsza to początkowa, w której jedynymi dozwolonymi są tak lub nie, w celu odpowiedzi na pytanie, czy użytkownik zamierza używać gramatyki podstawowej czy rozszerzonej. Druga to gramatyka podstawowa, gdzie najpierw użytkownik podaje dwanaście cyfr, później przechodzi do kolejnej grupy cyfr słowem "dalej". Gramatyka rozszerzona to "dwanaście cyfr - słowo <<inne>> - cyfry i słowa kluczowe w celu podania innych danych - słowo <<dalej>> w celu przejścia do kolejnego wpisu". Jest jeszcze czwarty plik gramatyki, nazywa się commands.gram i składa się z trzech linijek:

Kod:

#JSGF V1.0;
grammar commands;
public <standard_commands> = go to the next menu { exit } ;

Jest on później includowany i używany w innych gramatykach:

Kod:

import <commands.standard_commands>;
...
public <commands> = <standard_commands> ;

Celem tej czwartej gramatyki jest umożliwienie użycia słowa "koniec" w celu wyjścia z programu.

b. Plik .java z kodem źródłowym. W konstruktorze wywołuje new ConfigurationManager(url), gdzie url to jsgf.config.xml. Również ustala, że wejściem jest mikrofon:

Kod:

microphone = (Microphone) cm.lookup("microphone");

Główna część kodu wygląda tak (przed moimi modyfikacjami):

Kod:

while (!done)  {
    Result result = recognizer.recognize();
    String bestResult = result.getBestFinalResultNoFiller(); //bestResult bazuje na wszystkich propozycjach systemu rozpoznawania mowy, co do tego, co użytkownik mógł powiedzieć
    RuleGrammar ruleGrammar = jsgfGrammarManager.getRuleGrammar();
    RuleParse ruleParse = ruleGrammar.parse(bestResult, null);
    if (ruleParse != null) { //co chwilę sprawdza, czy jest jakiś nowy ciąg rozpoznany, jeśli jest to wartość ruleParse jest rózna od null
        System.out.println("\n  " + bestResult + "\n"); //domyślnie wyświetla najlepszy wynik
        done = isExit(ruleParse); //jeśli powiedziano słowo "koniec" to wychodzi z programu
    } 
}

c. Plik build.xml, specyfikuje np. "Properties common to all tests", czyli m.in. ścieżkę dostępu i nazwę pliku, w którym znajduje się gotowy, jednoplikowy model akustyczny .jar. I tak, jak sama nazwa pliku wskazuje, jest on używany tylko do zbudowania programu .jar na podstawie tych wszystkich plików.

d. Plik jsgf.config.xml, specyfikuje różne wewnętrzne ustawienia programu, np. jakiego prunera, scorera itd. ma użyć. Są to komponenty systemu rozpoznawania mowy.

e. Plik jsgf.Manifest zawiera dwie linijki:

Kod:

Main-Class: edu.cmu.sphinx.demo.jsapi.jsgf.JSGFDemo
Class-Path: ../lib/sphinx4.jar ../lib/jsapi.jar ../lib/WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar

f. README.html

/home/mainaccount/tutorial/sphinx4-1.0beta3-bin/sphinx4-1.0beta3/bin //bin, czyli binary stworzony przez "make" dla source code
--------------------------------------------------------------------
Tylko plik JSGFDemo.jar, który wykonuje się poleceniem "java -mx200m -jar bin/JSGFDemo.jar".

============================================================================================================================================

Ad. 4. Pytanie drugie.

Swój model akustyczny tworzyłem przy pomocy plików wav, nagranych w Audacity. Dowiedziałem się, że "The requency should be 16 khz, the quality 16 bit. Audio should be mono". Parametry ustawiłem na takie: Audio I/O -> Kanały: 1 (Mono), Jakość -> Standardowa częstotliwość: Inne... -> 16000, Jakość -> Standardowa rozdzielczość -> 16-bit, Formaty pliku -> Eksport niezkompresowanych danych: WAV (Microsoft 16 bit PCM), Spektrogramy -> Rozmiar FFT: 256 - domyślnie, Spektrogray -> Maksymalna częstotliwość (Hz): 8000. Jednak te parametry zasugerowano mi ogólnie, zapewne bez uwzględnienia kontekstu, czyli jakości takiej, jaka jest przy połączeniach telefonicznych. Czy zostawić te parametry nagrywania próbek dźwięku w Audacity czy nagrać nowy model akustyczny przy użyciu innych parametrów, dostosowanych do telefonii komórkowej? Jeśli nowych, to na jakie wartości zmienić?

============================================================================================================================================

Ad. 4. W międzyczasie zdziwiła mnie też jedna rzecz (w sumie to dużo mniej istotna w tym momencie, bo aplikację mogę sobie przetestować na Windowsach, a domyślnie i tak nie będę używał mikrofonu, tylko rozmowy telefonicznej odebranej przez Asteriska). A mianowicie używanie mikrofonu w aplikacjach Javy pod Linuksem. Napisali, żeby użyć jdk 1.4, a jeśli ono nie działa to jdk 1.5 (albo vice versa). Sprawdziłem przy pomocy Synaptic, że mam sun-java6-bin w wersji 6-15-1, sun-java6-jdk 6-15-1 i sun-java6-jre 6-15-1. Dowiedziałem się, że jdk 1.4 jest z 2002 roku, jdk 1.5 z 2004. Tak w ogóle to dla Sphinx4 "Last update on June 30, 2004". Wydaje mi się, że to nie jest problem, bo właściwie to podstawy matematyki się nie zmieniły od tamtego czasu (mam na myśli Hidden Markov Model używany do rozpoznawania mowy). No a kwestia wersji Javy jest niejako drugorzędna. Zresztą na Sphinx4 zdecydowałem się, gdy znalazłem najpopularniejsze systemy rozpoznawania mowy, tj. CMU Sphinx, HTK i Julius. Stwierdziłem, że CMU Sphinx ma najlepszą dokumentację i najlepsze wsparcie. Użycie mikrofonu pod Linuksem dla Sphinx4 jest wyjaśnione tutaj http://forum.purepc.pl/redirect.php?url=http%3A%2F% … rophone_linux . Wykonałem kroki 1-3 i utknąłem na 4.

Pozdrawiam!

============================================================================================================================================

PS

bercik napisał(-a):

testowal to na czystym SIP (wogole bez wchodzenia do klasycznej telefonii)

Co dokładniej masz na myśli? Jeśli użyję Twinkle, to nie potrzebuję nawet SIP-a. Jeśli nie użyję Twinkle to raczej do niczego mi się nie przyda sam SIP bez numeru PSTN, bo i tak się nie dodzwonię do Asteriska.

Ostatnio edytowany przez johnyjj2 (2009-12-20 15:48:17)

Offline

 

#6  2009-12-20 15:54:36

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

johnyjj2 napisał(-a):

bercik napisał(-a):

testowal to na czystym SIP (wogole bez wchodzenia do klasycznej telefonii)

Co dokładniej masz na myśli? Jeśli użyję Twinkle, to nie potrzebuję nawet SIP-a. Jeśli nie użyję Twinkle to raczej do niczego mi się nie przyda sam SIP bez numeru PSTN, bo i tak się nie dodzwonię do Asteriska.

1. SIP jest protokolem komunikacyjnym zajmujacym sie sygnalizacja na potrzeby VoIP i opisany jest w stosownych RFC
2. Asterisk jako protokolow VoIP uzywa SIP, IAX2 lub (w zasadzie archaicznego juz H.323) ... na razie przymujemy ze interesuje Ciebie komunikacja poprzez SIP
3. Twinkle jhest wlasnie softphone SIP i poprzez ten protokol rozmawia z Asteriskiem lub innymi softphonami, serwerami dostawcow kont SIP, etc ...


johnyjj2 napisał(-a):

Czy muszę specyfikować swój algorytm w Sphinx4 czy w dialplanie?

raczej w Sphinx4 ... co do DTMF to to mozna ladnie zrobic na samym Asterisku ...


johnyjj2 napisał(-a):

3. Konfiguruję SIP trunk Asteriska tak, żeby odbierał rozmowy z Twinkle. Jak plik konfiguracji miałby wyglądać dla użycia Asteriska z Twinkle?

w zasadzie przy domyslnej (paczkowej) konfiguracji Asteriska po wybraniu w twinkle (w konfiguracji jako "SIP service Provider" wybierasz "none direct IP to IP") numeru IP serwera asterisk powinenes polaczyc sie z przykladowym IVR

uwaga: jezeli bedziesz to robil na jednym kompie musisz zmienic port ktorego uzywa twinkle bo standardowy (5060) bedzie zajety przez Asteriska


P.S. obecnie sugeruje zainstalowanie Asteriska oraz Twinkle i probe pobawienia sie tym defaultowym IVR ... powinno to rozjasnic troche sprawe samego konfigurowania Asteriska


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#7  2009-12-20 22:09:18

  johnyjj2 - Użytkownik

johnyjj2
Użytkownik
Zarejestrowany: 2009-12-18

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

Dzięki za odpowiedź!

Na moje pytanie na forum Sphinksa "Are you familiar with integrating Asterisk with Sphinx4? I found these: http://www.voip-info.org/wiki/view/Sphinx and http://scribblej.com/svn/" uzyskałem następującą odpowiedź "mrcp via cairo/zanzibar can hook asterisk to sphinx4. Scribblej's stuff does it for pocketsphinx using a simple client server approach". Jednak jakiś dłuższy czas temu zadałem pytanie na forum projektu Zanzibar, na które natrafiłem w czasie swoich poszukiwań (https://sourceforge.net/projects/openivr/forums/for … topic/3476716) i niestety, nikt mi nie udzielił odpowiedzi. Ściągam teraz Cairo i Zanzibar i będę musiał przejrzeć dokładniej dokumentację tych projektów.

Pozdrawiam!

PS Czy mógłbyś polecić jakieś tutoriale, w jaki sposób przetestować sobie zwykłe połączenie Twinkle z Asteriskiem, konfigurację Asteriska, tworzenie dialplanów, używanie DTMF z Asteriskiem itd.?

Ostatnio edytowany przez johnyjj2 (2009-12-20 22:24:03)

Offline

 

#8  2009-12-21 00:10:45

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

jakis spojnych tutoriali nie znam, ale moge polecic:
1. przejrzenie tego co dostajesz razem z paczka (jest tam sporo przykladow i to dosc dobrze opisanych)
2. materialy na http://www.voip-info.org/wiki/
3. moje przykladowe konfigi (ale to troszke inny krag tematyczny) - http://www.opcode.eu.org/usage_and_config/ip_networ … _sip_asterisk


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#9  2009-12-21 22:00:30

  johnyjj2 - Użytkownik

johnyjj2
Użytkownik
Zarejestrowany: 2009-12-18

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

Dzięki za odpowiedź!

Na pewno przejrzę te materiały, które są razem z paczką, rzucę też okiem na linki.

W międzyczasie przeczytałem dokumentację on-line dla Cairo/Zanzibar. Umożliwiają one połączenie Asteriska ze Sphinx4. Zadałem pytanie odnośnie Cairo/Zanzibar na ich liście mailowej: http://old.nabble.com/using-other-acoustic-models-i … 26879547.html (mirror: https://sourceforge.net/mailarchive/forum.php?threa … me=cairo-user). Wynikało by z tego, że raczej jednak algorytm będę specyfikować w kodzie aplikacji Sphinx4. Nie wyjaśnili jednak kwestii, w jaki sposób zawrzeć swój model akustyczny, zamiast domyślnych TIdigits lub WSJ. A jest to kluczowa sprawa.

W zasadzie program dla Sphinx4 mam prawie gotowy. Pozostała jeszcze tylko jedna kwestia, tj. zamienienie wyjściowych plików ze SphinxTrain na jeden plik .jar, który później będę mógł zaincludować w xml-u swojej aplikacji. Dokumentacja, jak to zrobić jest taka: http://cmusphinx.sourceforge.net/sphinx4/doc/UsingS … inModels.html , zwłaszcza ostatni akapit. Na moje pytanie "I rather wanted to pack it into .jar file because of simplicity of usage. <<You need to use jar:file: URI scheme for the reference>>. What exactly do you mean by that?" uzystałem odpowiedź "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=ja … rt=0&sa=N

Pozdrawiam!

Offline

 

#10  2009-12-28 16:06:32

  johnyjj2 - Użytkownik

johnyjj2
Użytkownik
Zarejestrowany: 2009-12-18

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

W tym momencie mam dwie małe trudności, to znaczy z użyciem własnego modelu akustycznego oraz z vxml. Swoje próby pokazałem tutaj: http://johnyjj2.page.tl/ . To samo można ściągnąć stąd: http://www.speedyshare.com/files/20015137/foto.rar . W przedostatnim pliku podsumowałem pytania.

Czy mogę liczyć przynajmniej, że rzucisz okiem na pliki, proszę?

Pozdrawiam!

Offline

 

#11  2009-12-30 14:09:50

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR

rzucilem okiem ... widze ze jednak robisz to na Asterisku pod Windows i na X-lite ... o ile ten pierwszy nie powinien duzo roznic sie od wersji linuxowej (ale moga byc jakies problemy okolo cygwinowe) to tego drugiego nie znam ...

pisalem o Twinkle (i w domysle Astersiku linuxowym) bo zestaw ten znam, mam przetestowany i moglbym cos ewentualnie pomoc ...

nie wiem po co probojesz zrobic aby soft-phone rejestrowal sie w asterisku ... to nie jest do niczego potrzebne (docelowo to i tak asterisk bedzie sie rejestrowal)

na temat Sphinxa sie nie wypowiadam bo sie nie znam ...


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)