Discussion:
Asterisk, Digium, skrypty AGI i rozpoznawanie mowy, czyli IVR/ASR
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
johnyjj2
15 lat temu
Permalink
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_voip/urzadzenia_dwustandardowe/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=ipfon_starter&scenario=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!
Cezar
15 lat temu
Permalink
Witam,

Wycinam wszytko co Twoje bo masz "Content-Transfer-Encoding:
quoted-printable".

Na wstepie... Dlaczego chcesz do Twojego projektu uzyc rozpoznawania mowy?
Do wpisywania cyfr doskonale nadaje sie DTMF - znacznie szybsze, pewniejsze
i mniej obciazajace system.
Chyba ze jest to jakis proof of concept albo praca dyplomowa :)




Ad.1-1
Mozesz uzyc takiej bramki ale koszt jest dosyc spory. Nie wiem czy w tym
przypadku sie to oplaca - musisz sam rozstrzygnac.
Plusem takiego rozwiazania jest to, ze majac darmowe rozmowy w ramach tego
samego operatora lub na jeden wybrany numer, dzwoniacy mogly troche
zaoszczedzic.
Minusem jest duzy dosc koszt bramki oraz to ze jednoczesnie mozesz odebrac
tylko jedna rozmowe. Dostawcy SIP z reguly umozliwjaja wiele jednoczesnych
polaczen (np jeden z moich pozwala na 10 kanalow)

1-2
Wtedy bedziesz potrzebowal linie telefoniczna. W tym przypadku takze masz
limit jednego jednoczesnego polaczenia (w przypadku ISDN BRI - dwa)

1-3
Koszty sa rozne. Wspomniany przez Ciebie Halonet kasuje 30zl/rok za numer.
Sam wiec widzisz ze zakup bramki za 1000zl chyba nigdy Ci sie nie
zrekomensuje.
Z reguly operatorzy nie ukrywaja ceny wiec znajdziesz je na ich stronach.
ITSP to ogólna nazwa dostawców (internet telephony service provider?).
Najczesciej uzywanym protokolem sygnalizacji pomiedzy toba a ITSP jest SIP
dlatego w skrocie mowi sie provider SIP.

1-4
Tutaj male niezrozumienie. Serwer porzebujesz tak czy inaczej. Jezeli Twoj
admin nie chce zrezygnowac z windowsa to niech pomysli o wirtualizacji.
Asterisk dosc dobrze chodzi na vmware. Na OpenVZ nie bardzo - na innych nie
probowalem.
Serwer mozesz takze wynajac gdzies w Data Centre. Moze byc to serwer
fizyczny (dedykowany) lub serwer wirtualny - tzw VPS. W przypadku tego
drugiego spytaj w firmie hostingowej czy bedzie na nim dzialal asterisk.


Jesli chodzi o punkty 2-3 to sie nie wypowiem bo nigdy nie probowalem.
Przejrzalem pobieznie przyklady na voip-info i teoretycznie wszystko powinno
ze soba dzialac.

c.
johnyjj2
15 lat temu
Permalink
Dzięki wielkie za przydatną, kompetentną i szybką odpowiedź :-)
Na wstepie... Dlaczego chcesz do Twojego projektu uzyc rozpoznawania mowy? Do wpisywania cyfr doskonale nadaje sie DTMF - znacznie szybsze, pewniejsze i mniej obciazajace system.
Chcę zrobić rozwiązanie, dzięki któremu użytkownik sam będzie mógł
wybrać czy woli użyć w danej sesji DTMF czy ASR.
Chyba ze jest to jakis proof of concept albo praca dyplomowa :)
Jest to mój pierwszy prawdziwy projekt w IT :-). Cele projektu nie ja
sam ustalałem. Z początku myślałem o aplikacji tylko na komórkę,
wysyłającej tylko rezultaty na serwer. Niestety, PocketSphinksa
dopiero portują na Symbiana.

Nie pomyślałem o wirtualizacji, może to być rozwiązanie moich
problemów z posiadaniem Windowsa zamiast Linuksa, pod warunkiem, że
sprzęt, który zaoferują będzie dość dobry. Jakie są minimalne
wymagania dla tego Vmware albo orientacyjne ceny wynajmu w Data
Centre.

Spróbowałem też zorientować się w usługach firmy LumenVox. Są co
najmniej nierealne, wyrażane w tysiącach dolarów.

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

Ale co ważniejsze teraz - zamierzam się w tym momencie skupić na
przetestowaniu Asteriska na swoim domowym laptopie. 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?

[quote]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[/quote]

[quote]Pomoc techniczna Ipfon: Wystarczy zatem, że założy Pan konto:
https://rejestrator.ipfon.pl/index.php?version=ipfon_starter&scenario=telefon
i skonfiguruje trunk pod Asteriskiem: http://forum.ipfon.pl/index.php?topic=64[/quote]
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".

Pozdrawiam!
...
Cezar
15 lat temu
Permalink
Post by johnyjj2
Nie pomyślałem o wirtualizacji, może to być rozwiązanie moich
problemów z posiadaniem Windowsa zamiast Linuksa, pod warunkiem, że
sprzęt, który zaoferują będzie dość dobry. Jakie są minimalne
wymagania dla tego Vmware albo orientacyjne ceny wynajmu w Data
Centre.
co do wymagan - poszukaj na stronie vmware
koszty dataceneter zaczynaja sie od kilknastu dolarow/mc


Za duzo czytasz, w koncu sprobuj :)
W wielkim skrocie:
-zaloz konto u ktoregokolwiek providera,
-skonfiguruj to konto na swoim asterisku (przyklady konfiguracji na pewno
znajdziesz na stronach kazdego operatora),
-wykup numer przychodzadzy u tegoz operatora. od chwili jak to zrobisz,
rozmowy przychodzace na ten numer beda przekazywane na Twoje konto SIP.
Post by johnyjj2
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.
0.6 Mb/s (w obu kierunkach?) spokojnie wystarczy. Do poprawej pracy przy
najwyzszej jakosci wystarczy Ci wolne 128kb/s pasma.
Post by johnyjj2
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".
Jezeli to tylko domowe testy to moze zrezygnuj z numeru DID. Cala
funkcjonalnosc mozesz spokojnie przetestowac dodzwaniajac sie do asteriska z
wewnatrznego konta SIP. Do tego mozesz uzyc softphona, taniej bramki za
kilkadziesiat-kilkaset zl lub (wspomniales o symbianie) telefonu nokia z
serii E lub N, ktore maja wbudowanego klienta SIP. Oczywiscie musi to byc
telefon z wifi.

c.
johnyjj2
15 lat temu
Permalink
Dzięki wielkie za odpowiedź!

W zasadzie to głowny problem teraz to jest integracja Asteriska ze
Sphinx4. Wcześniej myślałem o ScribbleJ i jeszcze tamtym drugim linku.
Teraz wiem, że najlepszym rozwiązaniem będzie użycie Cairo/Zanzibar
(OpenIVR). Zapytałem na ich forum:
http://old.nabble.com/using-other-acoustic-models-in-Cairo-Zanzibar-to26879547.html
(mirror: https://sourceforge.net/mailarchive/forum.php?thread_name=26879547.post%40talk.nabble.com&forum_name=cairo-user).
W tym temacie przedstawiłem najbardziej aktualny plan :-), jak tylko
uda mi się dowiedzieć tego, czego dowiedzieć się tam chcę, to - tak
jak sugerujesz - przejdę od czytania do praktyki :). W sumie to główne
problemy sprowadzają się do:
1. Gdzie i jak zapisać algorytm? (Algorytm wyznacza gramatykę,
liczenie sumy kontrolnej, zapis rezultatów do pliku etc). Co do
pytania gdzie to widzę takie opcje po przeczytaniu dokumentacji on-
line: vxml, Cairo client API, runApplication method, kod mojej
aplikacji w Javie dla Sphinx4, mrcp4j api lub ciairo-client api.
Zapewne będzie to wszystko w vxml albo mojej aplikacji Java dla
Sphinx4. No ale sam proces połączenia Asteriska z Cairo/Zanzibar nie
jest taki prosty (punkt drugi poniżej).
2. Sam proces połączenia Asteriska z Cairo/Zanzibar.
3. Jak zawrzeć swój model akustyczny w tym całym Cairo/Zanzibar?

Jest jeszcze drugi, mniejszy, ale konieczny do rozwiązania problem.
Tak właśniwie to program dla Sphinx4 mam prawie gotowy. Pozostała
jeszcze tylko jedna kwestia, tj. [u]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[/u]. Dokumentacja, jak to zrobić jest taka: [b]
[url]http://cmusphinx.sourceforge.net/sphinx4/doc/
UsingSphinxTrainModels.html[/url] , zwłaszcza ostatni akapit[/b]. 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ź
"[u]sphinx4 has documentation on how to use jar:file :URI scheme[/u]".
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

Pozdrawiam!
johnyjj2
15 lat temu
Permalink
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!

Loading...