Programowanie w Prologu różni się zasadniczo od programowania w językach strukturalnych, takich jak Pascal czy C i językach obiektowych jak Java. Dla wielu osób zaczynających przygodę z Prologiem zaskoczeniem jest fakt, że pisanie programu w tym języku nie polega na kodowaniu algorytmu. Programista opisuje obiekty i związki między nimi, a także podaje warunki, jakie powinno spełniać szukane rozwiązanie. System sam przeprowadza obliczenia w oparciu o podane zależności logiczne, zaś programista jedynie częściowo może wpływać na sposób działania programu.
Książka "Prolog. Programowanie" to podręcznik tego niezwykłego języka programowania stosowanego przy rozwiązywaniu problemów z różnych dziedzin: od logiki matematycznej i symbolicznego rozwiązywania równań przez analizę języka naturalnego, aż do zagadnień związanych ze sztuczną inteligencją. Zawiera ona:
* Wprowadzenie do Prologu
* Podstawowe struktury danych
* Nawracanie, sterowanie nawracaniem za pomocą symbolu odcięcia
* Operacje wejścia/wyjścia
* Predykaty
* Składnię reguł gramatycznych i analizę języka naturalnego
* Wiele przykładowych programów
Wszystkim rozdziałom towarzyszą ćwiczenia. Uzupełnieniem tekstu książki są dodatki omawiające m.in. rozwiązania ćwiczeń i różnice między najważniejszymi wersjami Prologu.
"Prolog. Programowanie" to książka dla studentów matematyki i informatyki, a także dla wszystkich zainteresowanych programowaniem opartym na regułach logicznych. Jeśli chcesz podjąć wyzwanie i nauczyć się Prologu, jest książka dla Ciebie.
Teoria i praktyka prowadzenia projektów programistycznych
* Naucz się zasad programowania ekstremalnego i zastosuj je w praktyce
* Od konceptualizacji do przekazania działającego systemu -- poznaj najlepsze sposoby pracy na każdym etapie tworzenia oprogramowania
* Poznaj znaczenie wszystkich uczestników procesu tworzenia oprogramowania: programistów, menedżerów i klientów
* Dowiedz się, jak rozwiązać najczęstsze problemy powstające przy wdrażaniu metodologii programowania ekstemalnego
"eXtreme programming" przedstawia nową metodologię i praktykę programowania w przystępny, a jednocześnie kompleksowy sposób. Autorzy omawiają podstawowe pojęcia programowania ekstremalnego: planowanie edycji, programowanie w parach, wczesne testowanie, "zręczne modelowanie" i refaktoryzację. Zostały one zaprezentowane na przykładzie konkretnego projektu, którego realizację omówiono w książce.
Kto powinien przeczytać tę książkę? Będzie ona niewątpliwie pożyteczną lekturą dla każdego, kto choć częściowo związał swe życie z tworzeniem oprogramowania -- programisty, menedżera czy koordynatora projektu. I nawet gdyby miało skończyć się tylko na czytaniu -- bez praktycznego zastosowania w najbliższym projekcie poznanych reguł, wiedza o programowaniu ekstremalnym okaże się bez wątpienia pożyteczna.
* Naucz się zasad programowania ekstremalnego i zastosuj je w praktyce
* Od konceptualizacji do oddania działającego systemu -- poznaj najlepsze sposoby pracy na każdym etapie tworzenia programowania
* Poznaj znaczenie wszystkich uczestników procesu tworzenia oprogramowania: programistów, menedżerów i klientów
* Dowiedz się, jak rozwiązać najczęstsze problemy powstające przy wdrażaniu metodologii programowania ekstemalnego
Przysłowie "kto pyta, nie błądzi" nie zawiera całej prawdy. Nie wystarczy pytać, trzeba jeszcze znajdować odpowiedzi. Książka "Programowanie w języku C. FAQ" to zbiór kilkuset odpowiedzi na najczęściej zadawane pytania na temat tego języka programowania. Z pewnością część z przedstawionych tu pytań już pojawiła się w Twojej praktyce programistycznej (pamiętasz, ile czasu straciłeś poszukując odpowiedzi?). Inne problemy dopiero się pojawią i jeśli na Twojej półce będzie ta książka, szybko znajdziesz w niej zwięzłe, ale wyczerpujące rozwiązanie często wzbogacone przykładem kodu źródłowego.
Chociaż książka żadną miarą nie powinna być traktowana jako podręcznik, z którego można nauczyć się programowania w C, z pewnością przyda się każdej osobie używającej tego języka w codziennej praktyce. Autor porusza wiele przydatnych zagadnień obejmujących szeroki zestaw tematów.
Omówiono między innymi:
* Deklaracje
* Struktury i unie
* Puste wskaźniki
* Wyrażenia
* Makroprocesor
* Alokację pamięci
* Różnice między standardami C
* Standardową bibliotekę wejścia-wyjścia
* Kwestie związane z systemami operacyjnymi
Java. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i EclipseWydawnictwo Helion
Tworzenie zaawansowanych projektów korporacyjnych w Javie
* Poznaj sprawdzone metodologie i procesy
* Naucz się stosować praktyczne technologie i narzędzia
* Twórz w Javie kompletne rozwiązania w optymalny sposób
Chciałbyś tworzyć rozbudowane aplikacje w języku Java szybciej i w prostszy sposób? Liczne narzędzia i technologie budowania programów w Javie często ułatwiają wykonywanie niektórych zadań, ale jednocześnie niepotrzebnie komplikują i wydłużają proces powstawania gotowych produktów. Jak dobrać odpowiednie techniki i zastosować metodologię, która usprawni i przyspieszy pracę? Niektórzy już to wiedzą -- Ty też możesz skorzystać z ich doświadczeń!
"Java. Tworzenie aplikacji sieciowych za pomocą Spring, Hibernate i Eclipse" to praktyczny poradnik opisujący wydajną i sprawdzoną metodologię szybkiego pisania oprogramowania w języku Java. Dzięki tej książce poznasz techniki programowania ekstremalnego oraz metodologii Agile i nauczysz się stosować je podczas pracy nad programami. Dowiesz się, jak zaprojektować aplikację, przygotować środowisko i korzystać z wiersza poleceń oraz proponowanego zestawu narzędzi -- platformy Spring, mechanizmu odwzorowań Hibernate i IDE Eclipse -- co pozwoli Ci w prosty sposób użyć zaawansowanych rozwiązań.
* Techniki programowania ekstremalnego (XP)
* Wprowadzenie do metodologii Agile
* Korzystanie z platformy Spring
* Utrwalanie obiektów za pomocą Hibernate
* Praca w IDE Eclipse
* Debugowanie oprogramowania
* Monitorowanie i profilowanie aplikacji
* Refaktoryzacja kodu
Zwiększ swą wydajność dzięki zastosowaniu efektywnych procesów i narzędzi do tworzenia oprogramowania w języku Java.
Poznaj tajniki najpopularniejszego języka programowania
w erze Internetu
Chyba wszyscy użytkownicy internetu spotkali się z Javą, często nawet o tym nie wiedząc. W ciągu ostatnich 10 lat zyskała ona ogromną popularność, szczególnie wśród programistów aplikacji sieciowych. Jednakże kojarzenie jej z językiem przeznaczonym wyłącznie do tworzenia takich programów jest dużym błędem. Java to w pełni funkcjonalny i doskonale dopracowany język programowania, nadający się do tworzenia różnych aplikacji, a nie tylko apletów działających na stronach internetowych.
W Javie pisane są gry sieciowe, systemy bankowości elektronicznej, pakiety wspomagające sprzedaż i obsługę klienta, a nawet aplikacje działające w telefonach komórkowych i komputerach przenośnych. Podstawową zaletą języka Java jest przenośność kodu -- raz napisany program można uruchomić na każdym urządzeniu, na którym zainstalowane jest odpowiednie środowisko uruchomieniowe, zwane JRE.
Książka "Praktyczny kurs Java" przeznaczona jest dla osób rozpoczynających swoją przygodę z programowaniem w tym języku. Opisuje podstawy języka, zasady programowania obiektowego i tworzenia własnych apletów i aplikacji. Czytając kolejne rozdziały, dowiesz się:
* Jakie typy danych wykorzystywane są w Javie
* Jak deklarować zmienne i wyprowadzać ich wartości na ekran
* W jaki sposób sterować przebiegiem wykonywania programu
* Jakie zasady rządzą programowaniem obiektowym
* Czym są klasy, obiekty, argumenty i metody
* Co to są wyjątki i jak je obsługiwać w programie
* Jak wykorzystać zaawansowane techniki programowania obiektowego w swoich aplikacjach
* W jaki sposób uzyskiwać dostęp do systemu plików z poziomu swojej aplikacji
* Jak tworzyć aplety i samodzielne aplikacje
Zapoznaj się z podstawami programowania w Javie i naucz się zasad programowania obiektowego, a także dowiedz się, czym są wyjątki w Javie i stwórz własne aplety i aplikacje.
Czytanie kodu. Punkt widzenia twórców oprogramowania open sourceWydawnictwo Helion
Książka "Czytanie kodu. Punkt widzenia twórców oprogramowania" open source to pierwszy na rynku podręcznik poświęcony czytaniu kodu źródłowego jako osobnej dziedzinie wiedzy, której znajomość jest przydatna każdemu programiście. Ponad 600 przykładów, w których wykorzystywane są kody oprogramowania open source , przedstawia sposoby identyfikowania dobrego i złego kodu, czytania go, przeszukiwania pod kątem konkretnych funkcji oraz wykorzystywania umiejętności czytania kodu do poprawy jakości kodów źródłowych pisanych samodzielnie.
* Podstawowe konstrukcje sterujące działaniem programu
* Proste i złożone typy danych
* Struktury i unie
* Dynamiczne zarządzanie pamięcią
* Metody analizy projektów informatycznych
* Konwencje pisania i formatowania kodu źródłowego
* Tworzenie i czytanie dokumentacji
* Architektura systemów
Poznaj umiejętność czytania kodu źródłowego i popraw samodzielnie pisany kod.
Perełki programowania gier. Vademecum profesjonalisty. Tom 2Wydawnictwo Helion
Jeśli zajmujesz się lub zamierzasz się zająć programowaniem gier komputerowych, nie odkładaj tej książki na półkę. Znajdziesz w niej siedemdziesiąt rozwiązań rozmaitych problemów, przed którymi staje programista gier. Są to rozwiązania do natychmiastowego zastosowania lub pomysły, które mogą znacznie zredukować nakład pracy. Ich autorami są najwybitniejsi autorzy gier, współtwórcy wielu prawdziwych hitów. Dość powiedzieć, że redaktorami książki "Perełki programowania gier" są pracownicy firm takich jak Nintendo czy NVidia Corporation.
Autorzy postarali się, by przedstawiane przez nich perełki ukazywały praktyczne techniki programistyczne, możliwe do osiągnięcia przy użyciu aktualnie stosowanych technologii i pomagające przy pisaniu gier komputerowych. Przykładowe kody źródłowe opierają się na uznanych standardach: językach C i C++, interfejsy OpenGL i DirectX i nieodzownym, gdy chcemy uzyskać maksymalną wydajność asemblerze procesorów x86.
Porady i rozwiązania podzielone są na 6 części:
* Programowanie ogólne (projektowanie systemów testowych, wykorzystanie profilowania, rodzaje baz danych, biblioteki narzędzi, procedury obsługi zrzucania stosu, narzędzia dzienników zdarzeń, samomodyfikujący się kod)
* Matematyka (sztuczki z liczbami zmiennoprzecinkowymi w formacie IEEE, szybka interpolacja kwaternionowa, szybkie grupowanie przestrzeni, fraktale, fizyka, sztuczki z wektorami i płaszczyznami, rozwiązywanie przecięć krawędź-krawędź, algorytmy ruchu po krzywej)
* Sztuczna inteligencja (znajdowanie drogi, ocena strategiczna, mapy wpływu, systemy wyszukiwania i widoczności, automaty stanów rozmytych, ocena terenu, mikrowątki)
* Zarządzanie geometrią (zarządzanie całością geometrii, algorytmy poziomów szczegółowości, skompresowane drzewa prostopadłościanów otaczających wyrównywanych do osi, metody drzew czwórkowych, drzewa kul dla określania widoczności, śledzenie promieni, przeszukiwanie zakresowe, tworzenie teł na sześcianach, postacie rzucające cień na siebie, stosowanie plam na dowolnych powierzchniach)
* Grafika (metody renderingu, tworzenie proceduralnych chmur, maskowanie tekstur, metody dynamicznego oświetlania opartego na pikselach, mapowanie tekstur, programowalne shadery wierzchołków)
* Programowanie dźwięku (wzorce projektowe w programowaniu dźwięku, metody ponownego użycia głosów i prosty sekwenser muzyki bazujący na próbkach, programowe efekty DSP, interfejs programistyczny niskiego poziomu dla dźwięku)
Dołączony CD-ROM zawiera wszystkie kody źródłowe z książki, dema wielu przedstawionych technik, bibliotekę DirectX 8, instalator glSetup, bibliotekę narzędzi GLUT, obrazy z kolorowej wkładki w wysokiej rozdzielczości.
Gotowe rozwiązania i przykłady dla użytkowników Flasha
Zamiast koncentrować się na abstrakcyjnych niuansach języka ActionScript, można skorzystać z gotowych sposobów rozwiązywania typowych problemów. Receptury ułatwiają pisanie skryptów w języku ActionScript, ucząc przy tym praktycznych technik, które na pewno będą przydatne jeszcze wiele razy.
Ogrom możliwości języka ActionScript może przytłaczać. W niniejszej książce analizujemy zaawansowane technologie jako zespoły prostych czynności, z których każda ma praktyczne znaczenie i z których każdą warto zrozumieć. Książka "ActionScript. Receptury" jest interesująca zarówno dla młodego kodera, jak i dla doświadczonego programisty, ponieważ pozwala spojrzeć z nowej perspektywy i podejść w nowy sposób do zagadnień programowania w języku ActionScript, jednocześnie umożliwiając ugruntowanie zdobytych już umiejętności.
Książka "ActionScript. Receptury" zawiera ponad 300 receptur związanych z niezliczoną ilością tematów, wśród których znajdują się m.in.:
* rysowanie kształtów za pomocą instrukcji skryptów;
* programistyczne sterowanie odtwarzaniem klipów filmowych;
* obsługa wprowadzania tekstu i operacje na łańcuchach znaków;
* udostępnianie strumieni audio i wideo dzięki technologii Flash Communication Server;
* wykorzystanie technologii Flash Remoting do tworzenia połączeń z zapleczem bazodanowym;
* posługiwanie się zestawami rekordów i macierzami danych;
* wiele, wiele innych rozwiązań w 20 pełnych receptur rozdziałach.
Na początku książki omówione są krótkie, proste receptury. Później, stopniowo, pojawiają się dłuższe i bardziej skomplikowane skrypty wykonujące coraz bardziej wymyślne zadania. Taki układ wiedzy umożliwia łączenie poznanych skryptów w rozwiązania, na których można oprzeć swoje aplikacje utworzone we Flashu. Miła niespodzianka czeka i tego, kto nad jednostkowe receptury wyżej ceni duże aplikacje: w książce opisano siedem kompletnych, złożonych projektów we Flashu.
Programowanie w Prologu różni się zasadniczo od programowania w językach strukturalnych, takich jak Pascal czy C i językach obiektowych jak Java. Dla wielu osób zaczynających przygodę z Prologiem zaskoczeniem jest fakt, że pisanie programu w tym języku nie polega na kodowaniu algorytmu. Programista opisuje obiekty i związki między nimi, a także podaje warunki, jakie powinno spełniać szukane rozwiązanie. System sam przeprowadza obliczenia w oparciu o podane zależności logiczne, zaś programista jedynie częściowo może wpływać na sposób działania programu.
Książka "Prolog. Programowanie" to podręcznik tego niezwykłego języka programowania stosowanego przy rozwiązywaniu problemów z różnych dziedzin: od logiki matematycznej i symbolicznego rozwiązywania równań przez analizę języka naturalnego, aż do zagadnień związanych ze sztuczną inteligencją. Zawiera ona:
* Wprowadzenie do Prologu
* Podstawowe struktury danych
* Nawracanie, sterowanie nawracaniem za pomocą symbolu odcięcia
* Operacje wejścia/wyjścia
* Predykaty
* Składnię reguł gramatycznych i analizę języka naturalnego
* Wiele przykładowych programów
Wszystkim rozdziałom towarzyszą ćwiczenia. Uzupełnieniem tekstu książki są dodatki omawiające m.in. rozwiązania ćwiczeń i różnice między najważniejszymi wersjami Prologu.
"Prolog. Programowanie" to książka dla studentów matematyki i informatyki, a także dla wszystkich zainteresowanych programowaniem opartym na regułach logicznych. Jeśli chcesz podjąć wyzwanie i nauczyć się Prologu, jest książka dla Ciebie.
Teoria i praktyka prowadzenia projektów programistycznych
* Naucz się zasad programowania ekstremalnego i zastosuj je w praktyce
* Od konceptualizacji do przekazania działającego systemu -- poznaj najlepsze sposoby pracy na każdym etapie tworzenia oprogramowania
* Poznaj znaczenie wszystkich uczestników procesu tworzenia oprogramowania: programistów, menedżerów i klientów
* Dowiedz się, jak rozwiązać najczęstsze problemy powstające przy wdrażaniu metodologii programowania ekstemalnego
"eXtreme programming" przedstawia nową metodologię i praktykę programowania w przystępny, a jednocześnie kompleksowy sposób. Autorzy omawiają podstawowe pojęcia programowania ekstremalnego: planowanie edycji, programowanie w parach, wczesne testowanie, "zręczne modelowanie" i refaktoryzację. Zostały one zaprezentowane na przykładzie konkretnego projektu, którego realizację omówiono w książce.
Kto powinien przeczytać tę książkę? Będzie ona niewątpliwie pożyteczną lekturą dla każdego, kto choć częściowo związał swe życie z tworzeniem oprogramowania -- programisty, menedżera czy koordynatora projektu. I nawet gdyby miało skończyć się tylko na czytaniu -- bez praktycznego zastosowania w najbliższym projekcie poznanych reguł, wiedza o programowaniu ekstremalnym okaże się bez wątpienia pożyteczna.
* Naucz się zasad programowania ekstremalnego i zastosuj je w praktyce
* Od konceptualizacji do oddania działającego systemu -- poznaj najlepsze sposoby pracy na każdym etapie tworzenia programowania
* Poznaj znaczenie wszystkich uczestników procesu tworzenia oprogramowania: programistów, menedżerów i klientów
* Dowiedz się, jak rozwiązać najczęstsze problemy powstające przy wdrażaniu metodologii programowania ekstemalnego
Przysłowie "kto pyta, nie błądzi" nie zawiera całej prawdy. Nie wystarczy pytać, trzeba jeszcze znajdować odpowiedzi. Książka "Programowanie w języku C. FAQ" to zbiór kilkuset odpowiedzi na najczęściej zadawane pytania na temat tego języka programowania. Z pewnością część z przedstawionych tu pytań już pojawiła się w Twojej praktyce programistycznej (pamiętasz, ile czasu straciłeś poszukując odpowiedzi?). Inne problemy dopiero się pojawią i jeśli na Twojej półce będzie ta książka, szybko znajdziesz w niej zwięzłe, ale wyczerpujące rozwiązanie często wzbogacone przykładem kodu źródłowego.
Chociaż książka żadną miarą nie powinna być traktowana jako podręcznik, z którego można nauczyć się programowania w C, z pewnością przyda się każdej osobie używającej tego języka w codziennej praktyce. Autor porusza wiele przydatnych zagadnień obejmujących szeroki zestaw tematów.
Omówiono między innymi:
* Deklaracje
* Struktury i unie
* Puste wskaźniki
* Wyrażenia
* Makroprocesor
* Alokację pamięci
* Różnice między standardami C
* Standardową bibliotekę wejścia-wyjścia
* Kwestie związane z systemami operacyjnymi
Java. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i EclipseWydawnictwo Helion
Tworzenie zaawansowanych projektów korporacyjnych w Javie
* Poznaj sprawdzone metodologie i procesy
* Naucz się stosować praktyczne technologie i narzędzia
* Twórz w Javie kompletne rozwiązania w optymalny sposób
Chciałbyś tworzyć rozbudowane aplikacje w języku Java szybciej i w prostszy sposób? Liczne narzędzia i technologie budowania programów w Javie często ułatwiają wykonywanie niektórych zadań, ale jednocześnie niepotrzebnie komplikują i wydłużają proces powstawania gotowych produktów. Jak dobrać odpowiednie techniki i zastosować metodologię, która usprawni i przyspieszy pracę? Niektórzy już to wiedzą -- Ty też możesz skorzystać z ich doświadczeń!
"Java. Tworzenie aplikacji sieciowych za pomocą Spring, Hibernate i Eclipse" to praktyczny poradnik opisujący wydajną i sprawdzoną metodologię szybkiego pisania oprogramowania w języku Java. Dzięki tej książce poznasz techniki programowania ekstremalnego oraz metodologii Agile i nauczysz się stosować je podczas pracy nad programami. Dowiesz się, jak zaprojektować aplikację, przygotować środowisko i korzystać z wiersza poleceń oraz proponowanego zestawu narzędzi -- platformy Spring, mechanizmu odwzorowań Hibernate i IDE Eclipse -- co pozwoli Ci w prosty sposób użyć zaawansowanych rozwiązań.
* Techniki programowania ekstremalnego (XP)
* Wprowadzenie do metodologii Agile
* Korzystanie z platformy Spring
* Utrwalanie obiektów za pomocą Hibernate
* Praca w IDE Eclipse
* Debugowanie oprogramowania
* Monitorowanie i profilowanie aplikacji
* Refaktoryzacja kodu
Zwiększ swą wydajność dzięki zastosowaniu efektywnych procesów i narzędzi do tworzenia oprogramowania w języku Java.
Poznaj tajniki najpopularniejszego języka programowania
w erze Internetu
Chyba wszyscy użytkownicy internetu spotkali się z Javą, często nawet o tym nie wiedząc. W ciągu ostatnich 10 lat zyskała ona ogromną popularność, szczególnie wśród programistów aplikacji sieciowych. Jednakże kojarzenie jej z językiem przeznaczonym wyłącznie do tworzenia takich programów jest dużym błędem. Java to w pełni funkcjonalny i doskonale dopracowany język programowania, nadający się do tworzenia różnych aplikacji, a nie tylko apletów działających na stronach internetowych.
W Javie pisane są gry sieciowe, systemy bankowości elektronicznej, pakiety wspomagające sprzedaż i obsługę klienta, a nawet aplikacje działające w telefonach komórkowych i komputerach przenośnych. Podstawową zaletą języka Java jest przenośność kodu -- raz napisany program można uruchomić na każdym urządzeniu, na którym zainstalowane jest odpowiednie środowisko uruchomieniowe, zwane JRE.
Książka "Praktyczny kurs Java" przeznaczona jest dla osób rozpoczynających swoją przygodę z programowaniem w tym języku. Opisuje podstawy języka, zasady programowania obiektowego i tworzenia własnych apletów i aplikacji. Czytając kolejne rozdziały, dowiesz się:
* Jakie typy danych wykorzystywane są w Javie
* Jak deklarować zmienne i wyprowadzać ich wartości na ekran
* W jaki sposób sterować przebiegiem wykonywania programu
* Jakie zasady rządzą programowaniem obiektowym
* Czym są klasy, obiekty, argumenty i metody
* Co to są wyjątki i jak je obsługiwać w programie
* Jak wykorzystać zaawansowane techniki programowania obiektowego w swoich aplikacjach
* W jaki sposób uzyskiwać dostęp do systemu plików z poziomu swojej aplikacji
* Jak tworzyć aplety i samodzielne aplikacje
Zapoznaj się z podstawami programowania w Javie i naucz się zasad programowania obiektowego, a także dowiedz się, czym są wyjątki w Javie i stwórz własne aplety i aplikacje.
Czytanie kodu. Punkt widzenia twórców oprogramowania open sourceWydawnictwo Helion
Książka "Czytanie kodu. Punkt widzenia twórców oprogramowania" open source to pierwszy na rynku podręcznik poświęcony czytaniu kodu źródłowego jako osobnej dziedzinie wiedzy, której znajomość jest przydatna każdemu programiście. Ponad 600 przykładów, w których wykorzystywane są kody oprogramowania open source , przedstawia sposoby identyfikowania dobrego i złego kodu, czytania go, przeszukiwania pod kątem konkretnych funkcji oraz wykorzystywania umiejętności czytania kodu do poprawy jakości kodów źródłowych pisanych samodzielnie.
* Podstawowe konstrukcje sterujące działaniem programu
* Proste i złożone typy danych
* Struktury i unie
* Dynamiczne zarządzanie pamięcią
* Metody analizy projektów informatycznych
* Konwencje pisania i formatowania kodu źródłowego
* Tworzenie i czytanie dokumentacji
* Architektura systemów
Poznaj umiejętność czytania kodu źródłowego i popraw samodzielnie pisany kod.
Perełki programowania gier. Vademecum profesjonalisty. Tom 2Wydawnictwo Helion
Jeśli zajmujesz się lub zamierzasz się zająć programowaniem gier komputerowych, nie odkładaj tej książki na półkę. Znajdziesz w niej siedemdziesiąt rozwiązań rozmaitych problemów, przed którymi staje programista gier. Są to rozwiązania do natychmiastowego zastosowania lub pomysły, które mogą znacznie zredukować nakład pracy. Ich autorami są najwybitniejsi autorzy gier, współtwórcy wielu prawdziwych hitów. Dość powiedzieć, że redaktorami książki "Perełki programowania gier" są pracownicy firm takich jak Nintendo czy NVidia Corporation.
Autorzy postarali się, by przedstawiane przez nich perełki ukazywały praktyczne techniki programistyczne, możliwe do osiągnięcia przy użyciu aktualnie stosowanych technologii i pomagające przy pisaniu gier komputerowych. Przykładowe kody źródłowe opierają się na uznanych standardach: językach C i C++, interfejsy OpenGL i DirectX i nieodzownym, gdy chcemy uzyskać maksymalną wydajność asemblerze procesorów x86.
Porady i rozwiązania podzielone są na 6 części:
* Programowanie ogólne (projektowanie systemów testowych, wykorzystanie profilowania, rodzaje baz danych, biblioteki narzędzi, procedury obsługi zrzucania stosu, narzędzia dzienników zdarzeń, samomodyfikujący się kod)
* Matematyka (sztuczki z liczbami zmiennoprzecinkowymi w formacie IEEE, szybka interpolacja kwaternionowa, szybkie grupowanie przestrzeni, fraktale, fizyka, sztuczki z wektorami i płaszczyznami, rozwiązywanie przecięć krawędź-krawędź, algorytmy ruchu po krzywej)
* Sztuczna inteligencja (znajdowanie drogi, ocena strategiczna, mapy wpływu, systemy wyszukiwania i widoczności, automaty stanów rozmytych, ocena terenu, mikrowątki)
* Zarządzanie geometrią (zarządzanie całością geometrii, algorytmy poziomów szczegółowości, skompresowane drzewa prostopadłościanów otaczających wyrównywanych do osi, metody drzew czwórkowych, drzewa kul dla określania widoczności, śledzenie promieni, przeszukiwanie zakresowe, tworzenie teł na sześcianach, postacie rzucające cień na siebie, stosowanie plam na dowolnych powierzchniach)
* Grafika (metody renderingu, tworzenie proceduralnych chmur, maskowanie tekstur, metody dynamicznego oświetlania opartego na pikselach, mapowanie tekstur, programowalne shadery wierzchołków)
* Programowanie dźwięku (wzorce projektowe w programowaniu dźwięku, metody ponownego użycia głosów i prosty sekwenser muzyki bazujący na próbkach, programowe efekty DSP, interfejs programistyczny niskiego poziomu dla dźwięku)
Dołączony CD-ROM zawiera wszystkie kody źródłowe z książki, dema wielu przedstawionych technik, bibliotekę DirectX 8, instalator glSetup, bibliotekę narzędzi GLUT, obrazy z kolorowej wkładki w wysokiej rozdzielczości.
Gotowe rozwiązania i przykłady dla użytkowników Flasha
Zamiast koncentrować się na abstrakcyjnych niuansach języka ActionScript, można skorzystać z gotowych sposobów rozwiązywania typowych problemów. Receptury ułatwiają pisanie skryptów w języku ActionScript, ucząc przy tym praktycznych technik, które na pewno będą przydatne jeszcze wiele razy.
Ogrom możliwości języka ActionScript może przytłaczać. W niniejszej książce analizujemy zaawansowane technologie jako zespoły prostych czynności, z których każda ma praktyczne znaczenie i z których każdą warto zrozumieć. Książka "ActionScript. Receptury" jest interesująca zarówno dla młodego kodera, jak i dla doświadczonego programisty, ponieważ pozwala spojrzeć z nowej perspektywy i podejść w nowy sposób do zagadnień programowania w języku ActionScript, jednocześnie umożliwiając ugruntowanie zdobytych już umiejętności.
Książka "ActionScript. Receptury" zawiera ponad 300 receptur związanych z niezliczoną ilością tematów, wśród których znajdują się m.in.:
* rysowanie kształtów za pomocą instrukcji skryptów;
* programistyczne sterowanie odtwarzaniem klipów filmowych;
* obsługa wprowadzania tekstu i operacje na łańcuchach znaków;
* udostępnianie strumieni audio i wideo dzięki technologii Flash Communication Server;
* wykorzystanie technologii Flash Remoting do tworzenia połączeń z zapleczem bazodanowym;
* posługiwanie się zestawami rekordów i macierzami danych;
* wiele, wiele innych rozwiązań w 20 pełnych receptur rozdziałach.
Na początku książki omówione są krótkie, proste receptury. Później, stopniowo, pojawiają się dłuższe i bardziej skomplikowane skrypty wykonujące coraz bardziej wymyślne zadania. Taki układ wiedzy umożliwia łączenie poznanych skryptów w rozwiązania, na których można oprzeć swoje aplikacje utworzone we Flashu. Miła niespodzianka czeka i tego, kto nad jednostkowe receptury wyżej ceni duże aplikacje: w książce opisano siedem kompletnych, złożonych projektów we Flashu.
6-wall CAVE Immersive 3D Visualization Laboratory DemonstratorJan Klimczak
This document is a master's thesis submitted by Jan Klimczak. It discusses developing applications to run in Cave Automatic Virtual Environments (CAVEs). It provides an overview of existing CAVE systems, including those at Gdansk University of Technology and Silesian University of Technology in Poland. It then describes the methodology for developing CAVE applications, including libraries, frameworks, and editors. Finally, it outlines a demonstration application developed by the author to run in the CAVE at Gdansk University of Technology.
Superkomputery i Symulacje (HPC) - AMG.net, NCBJ, WFiIS UŁMichal Balinski
Prezentacja ze spotkania informacyjnego dla osób zainteresowanych specjalnością "Superkomputery i Symulacje" na Wydziale Fizyki i Informatyki Stosowanej UŁ. Specjalność przygotowana i prowadzona przez WFiIS UŁ, AMG.net oraz NCBJ.
This document discusses the implications of the Dangerous Substances and Explosive Atmosphere Regulations (DSEAR) for process and plant design. DSEAR requires employers to assess risks from dangerous substances early in the design process and implement measures to eliminate or reduce risks. It promotes applying inherent safety principles such as substitution or modifying conditions to remove hazards. The document outlines how DSEAR may affect different stages of process design and provides examples of risk reduction approaches for combustible dusts, gases/vapors, and flammable liquids.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
Before dwelling totally to the structure of prediction, it is but right that a short background of the theory and other syntactic structures should be provided first.
Explanatory Case Study (ECS) method: A Brief Summarysophieproject
SOPHIE members from Centre for Research on Inner City Health based in Toronto, Canada have prepared a presentation to summarize "Explanatory Case Study" metohodology. This methodology tries to understand factors related with decisions: why they were taken, how they were implemented, and with what results.
The document discusses the grammar structure and use of the second conditional. It begins by explaining that the second conditional refers to hypothetical future events that are unlikely to happen. It then provides the grammar structure of the second conditional using "if" with the past simple tense in the if-clause and "would", "could", or "might" with the verb in the main clause. Examples are given to illustrate the use of the second conditional in statements, questions, and negative forms. Finally, exercises are included for the reader to practice using the second conditional.
C15 U2 Project finished and unfinished actions. present perfect and present...colomboamericanopereira
The document discusses the present perfect and present perfect continuous tenses and how they are used to describe finished and unfinished actions. The present perfect is used for actions completed in the past but at an unknown time, while the present perfect continuous describes ongoing or unfinished actions. The simple past is used for actions that occurred and finished at a specific time in the past.
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
Rozpocznij przygodę z Visual C++!
* Jakie prawa rządzą programowaniem obiektowym?
* Jak tworzyć usługi systemowe?
* Jak dokumentować tworzony kod?
Microsoft Visual C++ jest zintegrowanym środowiskiem, pozwalającym na tworzenie aplikacji przy użyciu języków C, C++ lub C++/CLI. Zawiera ono wyspecjalizowane narzędzia, pomagające w wydajnym tworzeniu rozwiązań opartych o te języki. Pierwsza wersja Visual C++ została wydana w 1992 roku, a środowisko to jest bezustannie ulepszane. Najnowsze wydanie, z datą 2008, zostało opublikowane w listopadzie 2007 roku i wprowadziło wiele nowości — jak chociażby wsparcie dla technologii .NET 3.5. Niewątpliwie narzędzie firmowane przez giganta z Redmond jest jednym z najpopularniejszych, a używają go programiści z całego świata.
Dzięki tej książce również Ty możesz dołączyć do tego wybitnego grona. Po jej przeczytaniu będziesz miał wiedzę na temat środowiska programistycznego i platformy .NET. Poznasz podstawy programowania obiektowego, nauczysz się uzyskiwać dostęp do informacji zgromadzonych w bazach danych oraz korzystać z możliwości Internetu bezpośrednio w Twoich programach. Kolejne rozdziały przedstawiają interesujące tematy dotyczące obsługi wyjątków, programów wielowątkowych oraz sposobów tworzenia usług systemowych. Ostatni rozdział poświęcony został tak istotnej kwestii, jak dokumentowanie kodu — to czynność, o której wielu programistów zapomina. Jeżeli chcesz rozpocząć przygodę z Microsoft Visual C++, ta książka jest idealną lekturą dla Ciebie!
* Praca w zintegrowanym środowisku programistycznym
* Pojęcia związane z programowaniem obiektowym
* Uzyskiwanie dostępu do informacji zgromadzonych w bazach danych
* Wykorzystanie transakcji w pracy z danymi
* Sposoby integracji z siecią Internet
* Obsługa wyjątków
* Programowanie wielowątkowe
* Tworzenie grafiki oraz wykorzystanie multimediów
* Drukowanie w systemie Windows
* Tworzenie usług systemowych
* Dokumentowanie kodu programu
Wykorzystaj możliwości Microsoft Visual C++ 2008!
Poznaj możliwości komputerów przenośnych
Kończy się epoka notesów, kalendarzy, żółtych karteczek i notatek na kawiarnianych serwetkach. Rozwój technologii informacyjnej spowodował, że dzisiaj wszystkie te "pamięci podręczne" zastępuje jedno urządzenie wielkości portfela. Co więcej -- za pomocą tego urządzenia możemy również wysłać i odebrać pocztę elektroniczną, przeglądać strony WWW, napisać i wydrukować tekst, sporządzić szybkie zestawienie wydatków, a w wolnej chwili -- zagrać w pasjansa. Tym urządzeniem jest kieszonkowy komputer -- Pocket PC. Dzięki niemu w każdej chwili mamy dostęp do kalkulacji, umów, raportów i innych danych, które mogą okazać się przydatne wtedy, kiedy najmniej się tego spodziewamy.
Książka "Pocket PC" jest propozycją dla tych, którzy chcą poznać wszystkie możliwości drzemiące w urządzeniu noszonym w kieszeni. Opisuje podstawy obsługi Pocket PC, sposoby wykorzystania go jako notatnika i terminarza, możliwości jego systemu operacyjnego i aplikacji zapisanych w jego pamięci.
* Korzystanie z Pocket PC
* Interfejs systemu operacyjnego
* Wprowadzanie tekstu
* Łączenie Pocket PC z komputerem i synchronizacja danych
* Zarządzanie kontaktami
* Terminy i notatki
* Pocket Word i Pocket Excel
* Korzystanie z internetu i poczty elektronicznej
* Przeglądanie plików multimedialnych
* Nakładki spolszczające
* Przegląd oprogramowania dla Pocket PC
6-wall CAVE Immersive 3D Visualization Laboratory DemonstratorJan Klimczak
This document is a master's thesis submitted by Jan Klimczak. It discusses developing applications to run in Cave Automatic Virtual Environments (CAVEs). It provides an overview of existing CAVE systems, including those at Gdansk University of Technology and Silesian University of Technology in Poland. It then describes the methodology for developing CAVE applications, including libraries, frameworks, and editors. Finally, it outlines a demonstration application developed by the author to run in the CAVE at Gdansk University of Technology.
Superkomputery i Symulacje (HPC) - AMG.net, NCBJ, WFiIS UŁMichal Balinski
Prezentacja ze spotkania informacyjnego dla osób zainteresowanych specjalnością "Superkomputery i Symulacje" na Wydziale Fizyki i Informatyki Stosowanej UŁ. Specjalność przygotowana i prowadzona przez WFiIS UŁ, AMG.net oraz NCBJ.
This document discusses the implications of the Dangerous Substances and Explosive Atmosphere Regulations (DSEAR) for process and plant design. DSEAR requires employers to assess risks from dangerous substances early in the design process and implement measures to eliminate or reduce risks. It promotes applying inherent safety principles such as substitution or modifying conditions to remove hazards. The document outlines how DSEAR may affect different stages of process design and provides examples of risk reduction approaches for combustible dusts, gases/vapors, and flammable liquids.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
Before dwelling totally to the structure of prediction, it is but right that a short background of the theory and other syntactic structures should be provided first.
Explanatory Case Study (ECS) method: A Brief Summarysophieproject
SOPHIE members from Centre for Research on Inner City Health based in Toronto, Canada have prepared a presentation to summarize "Explanatory Case Study" metohodology. This methodology tries to understand factors related with decisions: why they were taken, how they were implemented, and with what results.
The document discusses the grammar structure and use of the second conditional. It begins by explaining that the second conditional refers to hypothetical future events that are unlikely to happen. It then provides the grammar structure of the second conditional using "if" with the past simple tense in the if-clause and "would", "could", or "might" with the verb in the main clause. Examples are given to illustrate the use of the second conditional in statements, questions, and negative forms. Finally, exercises are included for the reader to practice using the second conditional.
C15 U2 Project finished and unfinished actions. present perfect and present...colomboamericanopereira
The document discusses the present perfect and present perfect continuous tenses and how they are used to describe finished and unfinished actions. The present perfect is used for actions completed in the past but at an unknown time, while the present perfect continuous describes ongoing or unfinished actions. The simple past is used for actions that occurred and finished at a specific time in the past.
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
Rozpocznij przygodę z Visual C++!
* Jakie prawa rządzą programowaniem obiektowym?
* Jak tworzyć usługi systemowe?
* Jak dokumentować tworzony kod?
Microsoft Visual C++ jest zintegrowanym środowiskiem, pozwalającym na tworzenie aplikacji przy użyciu języków C, C++ lub C++/CLI. Zawiera ono wyspecjalizowane narzędzia, pomagające w wydajnym tworzeniu rozwiązań opartych o te języki. Pierwsza wersja Visual C++ została wydana w 1992 roku, a środowisko to jest bezustannie ulepszane. Najnowsze wydanie, z datą 2008, zostało opublikowane w listopadzie 2007 roku i wprowadziło wiele nowości — jak chociażby wsparcie dla technologii .NET 3.5. Niewątpliwie narzędzie firmowane przez giganta z Redmond jest jednym z najpopularniejszych, a używają go programiści z całego świata.
Dzięki tej książce również Ty możesz dołączyć do tego wybitnego grona. Po jej przeczytaniu będziesz miał wiedzę na temat środowiska programistycznego i platformy .NET. Poznasz podstawy programowania obiektowego, nauczysz się uzyskiwać dostęp do informacji zgromadzonych w bazach danych oraz korzystać z możliwości Internetu bezpośrednio w Twoich programach. Kolejne rozdziały przedstawiają interesujące tematy dotyczące obsługi wyjątków, programów wielowątkowych oraz sposobów tworzenia usług systemowych. Ostatni rozdział poświęcony został tak istotnej kwestii, jak dokumentowanie kodu — to czynność, o której wielu programistów zapomina. Jeżeli chcesz rozpocząć przygodę z Microsoft Visual C++, ta książka jest idealną lekturą dla Ciebie!
* Praca w zintegrowanym środowisku programistycznym
* Pojęcia związane z programowaniem obiektowym
* Uzyskiwanie dostępu do informacji zgromadzonych w bazach danych
* Wykorzystanie transakcji w pracy z danymi
* Sposoby integracji z siecią Internet
* Obsługa wyjątków
* Programowanie wielowątkowe
* Tworzenie grafiki oraz wykorzystanie multimediów
* Drukowanie w systemie Windows
* Tworzenie usług systemowych
* Dokumentowanie kodu programu
Wykorzystaj możliwości Microsoft Visual C++ 2008!
Poznaj możliwości komputerów przenośnych
Kończy się epoka notesów, kalendarzy, żółtych karteczek i notatek na kawiarnianych serwetkach. Rozwój technologii informacyjnej spowodował, że dzisiaj wszystkie te "pamięci podręczne" zastępuje jedno urządzenie wielkości portfela. Co więcej -- za pomocą tego urządzenia możemy również wysłać i odebrać pocztę elektroniczną, przeglądać strony WWW, napisać i wydrukować tekst, sporządzić szybkie zestawienie wydatków, a w wolnej chwili -- zagrać w pasjansa. Tym urządzeniem jest kieszonkowy komputer -- Pocket PC. Dzięki niemu w każdej chwili mamy dostęp do kalkulacji, umów, raportów i innych danych, które mogą okazać się przydatne wtedy, kiedy najmniej się tego spodziewamy.
Książka "Pocket PC" jest propozycją dla tych, którzy chcą poznać wszystkie możliwości drzemiące w urządzeniu noszonym w kieszeni. Opisuje podstawy obsługi Pocket PC, sposoby wykorzystania go jako notatnika i terminarza, możliwości jego systemu operacyjnego i aplikacji zapisanych w jego pamięci.
* Korzystanie z Pocket PC
* Interfejs systemu operacyjnego
* Wprowadzanie tekstu
* Łączenie Pocket PC z komputerem i synchronizacja danych
* Zarządzanie kontaktami
* Terminy i notatki
* Pocket Word i Pocket Excel
* Korzystanie z internetu i poczty elektronicznej
* Przeglądanie plików multimedialnych
* Nakładki spolszczające
* Przegląd oprogramowania dla Pocket PC
Napisz własne programy dla swojego telefonu komórkowego
* Zainstaluj i skonfiguruj środowisko pracy
* Wykorzystaj połączenia internetowe i język XML
* Napisz odtwarzacz multimedialny i grę
Ogromna popularność języka Java wynika między innymi z tego, że napisane w nim programy można uruchomić praktycznie na dowolnym komputerze. Wśród urządzeń "rozumiejących" Javę coraz częściej można znaleźć telefony komórkowe. Java przeznaczona dla urządzeń mobilnych, oznaczona symbolem J2ME, różni się od Javy dla "prawdziwych" komputerów. Tworząc aplikację dla telefonu, należy uwzględnić ograniczony rozmiar pamięci, mniejszą ilość miejsca na wyświetlaczu i inne czynniki. Jednak pomimo to J2ME umożliwia pisanie w pełni funkcjonalnych aplikacji wykorzystujących bazy danych, połączenia sieciowe, technologię XML i usługi sieciowe.
"J2ME. Praktyczne projekty" to podręcznik tworzenia aplikacji dla telefonów komórkowych z wykorzystaniem języka Java. Czytając go, dowiesz się, jakie środowisko programistyczne wybrać i jak dostosować je do wymagań projektów dla urządzeń mobilnych. Nauczysz się tworzyć aplikacje operujące na danych, łączące się z internetem i przetwarzające pliki XML. Napiszesz własny czytnik kanałów RSS, odtwarzacz multimedialny i grę. Poznasz także zasady korzystania z komunikacji Bluetooth w aplikacjach J2ME.
* Konfiguracja środowiska roboczego
* Podstawowe komponenty graficzne w J2ME
* Obsługa wyświetlacza i klawiatury
* Połączenie aplikacji z internetem
* Przetwarzanie plików XML
* Odtwarzanie plików multimedialnych
* Nagrywanie dźwięku
* Tworzenie gier w J2ME
* Obsługa połączeń Bluetooth z poziomu J2ME
Uwaga! Każda osoba, która kupi książkę Pajączek 5 NxG. Oficjalny podręcznik z opcją płatności elektronicznej otrzyma w potwierdzeniu realizacji zamówienia kupon z 50% zniżką na zakup programu Pajączek w sklepie internetowym producenta - Creamsoftware. Promocja nie dotyczy upgrade"u.
Poznaj możliwości najnowszej wersji kultowego narzędzia!
* Jakie są różnice między edytorem tekstowym i wizualnym?
* Jak wykorzystać w pełni możliwości Pajączka?
* Jak zarządzać serwisami WWW?
Pajączek ma już ponad dziesięć lat i z pewnością zasługuje na miano "kultowego". Program ten pozwala na wydajne tworzenie stron internetowych z wykorzystaniem języków HTML i XHTML. Zapewnia również wsparcie dla takich rozwiązań, jak PHP, XML, JavaScript, SQL oraz wiele innych. W dodatku kontroluje składnię, pisownię i formatuje kod! Twoje strony też mogą być wolne od błędów, a proces ich tworzenia nadzwyczaj przyjemny!
Książka ta została napisana przez autorów Pajączka. Ten fakt gwarantuje Ci kompletność informacji, przedstawionych w rzetelny sposób. Dzięki niej dowiesz się, jak w wydajny sposób wykorzystać możliwości tej aplikacji. Nauczysz się tworzyć dokumenty, edytować je oraz nawigować w kodzie strony. Ponadto poznasz zasady formatowania tekstów na stronie WWW oraz tworzenia list punktowanych i numerowanych. W kolejnych rozdziałach zobaczysz, jak używać wizualnego edytora stron WWW, oraz zdobędziesz wiedzę na temat tworzenia formularzy, tabel i ramek. Pajączek w najnowszej wersji pozwala w wygodny sposób osadzać na stronie elementy multimedialne, więc również i te zadania przestaną sprawiać Ci trudności. Rafał Płatek oraz Marek Reinowski nie pomijają żadnego aspektu pracy z Pajączkiem: wykorzystania możliwości makrokodów, sposobów zarządzania projektami oraz metod ich łatwej publikacji na serwerze. Książka ta jest zatem kompletnym, oficjalnym podręcznikiem, w całości poświęconym Pajączkowi!
* Porównanie wersji Professional i Standard
* Rozpoczęcie pracy z programem
* Tworzenie nowego dokumentu
* Definiowanie strony kodowej
* Sposoby efektywnej edycji kodu
* Nawigowanie wśród otwartych dokumentów
* Edycja oraz reedycja znaczników
* Umieszczanie tekstów na stronie WWW
* Projektowanie stron z wykorzystaniem edytora wizualnego WYSIWG
* Tworzenie tabel, formularzy oraz ramek
* Wyszukiwanie i zamiana tekstów w ramach projektu
* Osadzanie grafik oraz elementów multimedialnych na tworzonej stronie WWW
* Zastosowanie makrokodów
* Sposoby testowania i formatowania kodu
* Przegląd efektów pracy
* Sposoby zarządzania projektowanymi serwisami
* Publikowanie stworzonej strony w sieci
* Dostosowywanie programu do własnych upodobań
* Wykorzystanie kaskadowych arkuszy stylów CSS
* Wsparcie dla JavaScript oraz VBScript
* Tworzenie poleceń SQL
* Sposoby tworzenia plików pomocy
* Wykorzystanie apletów Java oraz elementów ActiveX
Twórz strony WWW w wydajny i przyjemny sposób!
Visual Studio 2005. Programowanie z Windows API w języku C++Wydawnictwo Helion
Napisz własne aplikacje dla systemu Windows
* Jak tworzyć okna, menu i elementy graficzne?
* W jaki sposób zarządzać zasobami aplikacji?
* Jak budować aplikacje wielowątkowe?
System operacyjny to nie tylko środowisko, w którym możemy uruchamiać zainstalowane programy - to także źródło zasobów dla programów tworzonych przez nas samych. Każda aplikacja dla systemu Windows, w której można znaleźć ikony, okna dialogowe, paski przewijania i inne powszechnie znane elementy, korzysta z bibliotek zwanych Windows API - zestawu funkcji ułatwiających zaprogramowanie określonych komponentów. Dzięki zastosowaniu Windows API możemy umieszczać w naszych aplikacjach typowe dla systemu operacyjnego składniki interfejsu użytkownika i moduły wykorzystujące urządzenia zewnętrzne.
Książka „Visual Studio 2005. Programowanie z Windows API w języku C++” to podręcznik, dzięki któremu poznasz metody tworzenia programów dla systemu operacyjnego Windows. Nauczysz się korzystać z systemowego API w celu zaimplementowania w aplikacji mechanizmów interfejsu użytkownika, wyświetlania elementów graficznych i obsługiwania przetwarzania wielowątkowego. Dowiesz się, jak wykorzystywać zasoby programowe, budować biblioteki statyczne i biblioteki DLL, obsługiwać mysz i klawiaturę oraz mierzyć czas. Przeczytasz o tym, jak działają aplikacje dla systemu Windows, i zdobędziesz wiedzę niezbędną do tego, by tworzyć własne!
* Tworzenie okien i umieszczanie w nich tekstów oraz elementów graficznych
* Korzystanie z GDI
* Wyświetlanie map bitowych
* Tworzenie bibliotek statycznych
* Obsługa klawiatury i myszy
* Zarządzanie zasobami aplikacji
* Budowanie okien dialogowych
* Korzystanie z kontrolek
* Obsługa wielozadaniowości i wielowątkowości
Poznaj techniki i metody tworzenia aplikacji dla systemu operacyjnego Windows.
Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku JavaWydawnictwo Helion
Zwiększ swoją wydajność dzięki platformie WTP!
* Jak wykorzystać środowisko Eclipse do tworzenia aplikacji internetowych?
* W jaki sposób zorganizować projekt aplikacji?
* Jak przeprowadzić w aplikacjach testy jednostkowe?
Eclipse to zintegrowane środowisko programistyczne. Projekt został zapoczątkowany przez firmę IBM, natomiast aktualnie jest rozwijany przez Fundację Eclipse. Dzięki licznym dodatkom, pluginom i podprojektom zyskał on ogromną popularność i jest w tej chwili jednym z narzędzi najczęściej wybieranych do tworzenia aplikacji w języku Java — i nie tylko. Natomiast projekt WTP (skrót od ang. Web Tools Platform) dzięki swoim rozszerzeniom ułatwia tworzenie aplikacji WWW.
„Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java” jest długo oczekiwaną na polskim rynku książką, poświęconą tej właśnie platformie. Autorzy przedstawiają tu inspirującą historię tego rozwiązania, strukturę projektu oraz sposób konfiguracji Web Tools Platform. Kolejne rozdziały przybliżą Ci zagadnienia związane z warstwą prezentacji, logiki biznesowej i trwałości. Dowiesz się, w jaki sposób wykorzystać narzędzia dostarczane przez WTP do przyspieszenia prac w każdej z tych warstw. W zakresie podejmowanych zagadnień znajdują się również tematy związane z testami integracyjnymi i wydajnościowymi.
* Konfiguracja Web Tools Platform
* Architektura aplikacji WWW
* Podział projektu na warstwy
* Sposób wykorzystania narzędzia Maven
* Wykorzystanie usług WWW
* Testowanie aplikacji WWW
* Rozszerzanie WTP
Poznaj jedną z najlepszych platform do tworzenia aplikacji WWW i nie tylko!
Opanuj język programowania, który zmienił oblicze sieci
* Jakie elementy tworzą język Java?
* Jak wykorzystać pełnię możliwości programowania obiektowego?
* Jak tworzyć własne aplety i aplikacje?
Interesuje Cię język programowania, który zyskuje coraz większą popularność wśród twórców rozwiązań korporacyjnych? A może zamierzasz tworzyć aplikacje dla urządzeń mobilnych? Najwyższa pora poznać tajniki Javy. Ten język już dawno przestał być narzędziem do tworzenia prostych programików osadzanych na stronach WWW. Współczesna Java to potężny obiektowy język programowania wykorzystywany w aplikacjach bankowych i finansowych, portalach internetowych i wielu innych systemach. Jedna z jego wersji służy także do pisania oprogramowania dla telefonów komórkowych, terminali BlackBerry i komputerów przenośnych. Warto więc poznać Javę.
"Praktyczny kurs Java. Wydanie II" to kolejna edycja podręcznika, dzięki któremu poznasz tajniki tego niezwykłego języka programowania. Znajdziesz tu omówienie elementów najnowszej wersji Javy, słów kluczowych tego języka, konstrukcji sterujących i zasad programowania. Dowiesz się, na czym polega projektowanie i programowanie obiektowe. Nauczysz się korzystać z mechanizmów obsługi wyjątków, implementować w programach operacje wejścia i wyjścia oraz budować własne aplikacje i aplety.
* Instalacja Javy w Windows i Linuksie
* Instrukcje Javy
* Operacje na tablicach
* Podstawy programowania obiektowego
* Obsługa wyjątków
* Zaawansowane zagadnienia programowania obiektowego
* Operacje wejścia i wyjścia
* Obsługa myszy i klawiatury
* Tworzenie interfejsów użytkownika
* Korzystanie z komponentów
Zostań profesjonalnym programistą Javy.
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowychWydawnictwo Helion
Poznaj tajniki tworzenia aplikacji dla Windows
* Jak określić położenie, rozmiar i styl okna?
* Jak tworzyć wątki aplikacji za pomocą funkcji CreateThread?
* Jak definiować biblioteki?
Dev-C++ to zintegrowane środowisko programistyczne, którego niewątpliwym atutem są tzw. DevPaki, czyli rozszerzenia programu, pozwalające korzystać z różnych bibliotek, szablonów i narzędzi. Środowisko Dev-C++ wspomaga także pracę nad nowym projektem Windows — gotowym kodem tworzącym okno z obsługą podstawowych komunikatów. Wszystko to sprawia, że mamy do czynienia z wygodnym i funkcjonalnym środowiskiem, zarówno dla początkujących, jak i zaawansowanych programistów.
Z książki „Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych” może skorzystać każdy, kto chce nauczyć się programowania: zarówno studenci kierunków informatycznych, jak i osoby, które nie mają takiego przygotowania. Podręcznik kolejno odsłania poszczególne elementy wiedzy programistycznej — od najprostszych po najbardziej zaawansowane. Dowiesz się więc, jak wprowadzać niewielkie zmiany w kodzie, jak projektować aplikacje wielowątkowe i definiować biblioteki, jak budować duże, składające się z kilku plików projekty, aby na koniec samodzielnie stworzyć grę komputerową.
* Instalacja środowiska Dev-C++
* Tworzenie narzędzia pióro
* Obsługa map bitowych
* Obsługa komunikatów myszy i klawiatury
* Obiekty sterujące w oknie
* Menu i plik zasobów
* Projektowanie aplikacji wielowątkowych
* Biblioteki statyczne i dynamiczne
* Multimedia
* Programowanie gier
Naucz się programowania i twórz własne gry!
Zostań profesjonalnym programistą C#
C# jest uważany przez wielu programistów za najlepszy język stosowany do tworzenia aplikacji dla platformy .NET. Język ten, opracowany w firmie Microsoft, łączy w sobie najbardziej wartościowe cechy C++ i Javy, ścisłą integrację z komponentami .NET, wysoki poziom bezpieczeństwa i ogromne możliwości. Świetnie nadaje się do tworzenia aplikacji sieciowych i bazodanowych przeznaczonych zarówno dla systemu Windows, jak i dla urządzeń przenośnych, takich jak PocketPC. Popularność C# stale rośnie, a nieodpłatne udostępnienie przez firmę Microsoft środowiska programistycznego Visual C# Express Edition sprawiło, że coraz więcej twórców oprogramowania wykorzystuje je w swojej pracy.
Książka "Wstęp do programowania w języku C#" to podręcznik przeznaczony dla tych, którzy chcą poznać ten język od podstaw. Czytając ją, poznasz możliwości C# i platformy .NET. Nauczysz się tworzyć własne aplikacje, korzystając ze środowiska Visual C# Express Edition. W książce znajdziesz omówienie składni i elementów języka C#, wyjaśnienie zasad programowania obiektowego i sposobów realizacji różnych zadań programistycznych. Napiszesz aplikacje dla Windows wykorzystujące biblioteki klas .NET i obsługujące pliki w formacie XML.
* Konstrukcja platformy .NET
* Składnia C#
* Elementy języka
* Programowanie obiektowe
* Obsługa zdarzeń
* Korzystanie z tablic i kolekcji
* Obsługa wyjątków
* Biblioteka Windows Forms
* Stosowanie komponentów .NET
* Operacje na plikach i strumieniach
* Obsługa formatu XML
Platforma .NET staje się coraz popularniejsza. Tysiące programistów na całym świecie doceniają jej doskonałe narzędzia programistyczne i tysiące stron wyczerpującej dokumentacji. Każdego dnia adepci sztuki programowania odkrywają nowe możliwości oferowane im przez .NET. Wiele z tych możliwości pozostaje jednak wciąż nie odkrytych. Sztuczki i furtki zaszyte przez twórców platformy .NET pozwalające na szybszą i sprawniejszą realizację projektów czekają na to, aby ktoś je zastosował w pracy. Jak dotrzeć do tych ukrytych cech? Skąd wziąć informacje o tym, co jeszcze można osiągnąć wykorzystują znane już narzędzia, na temat których napisano setki książek?
Dzięki książce ".NET. Najpilniej strzeżone tajemnice" poznasz te możliwości platformy .NET, których nie opisuje oficjalna dokumentacja. Znajdziesz w niej omówienie niezwykle cennych, ale mniej znanych funkcji Visual Studio i .NET Framework. Każda z tych funkcji może pomóc Ci podnieść wydajność procesu tworzenia oprogramowania oraz poprawić jakość swoich aplikacji. Dowiesz się, jak wykorzystać maksimum możliwości środowiska programistycznego, wykorzystasz nieznane funkcje GDI+ i ADO.NET i nauczysz się zasad programowania defensywnego, dzięki któremu znacznie ograniczysz liczbę błędów w swoich programach.
* Zarządzanie wyrywkami kodu w Visual Studio
* Dostosowywanie skrótów klawiaturowych
* Praca z kontrolkami Windows Forms
* Udoskonalone techniki rzutowania
* Stosowanie komentarzy XML
* Korzystanie z komponentu Microsoft Data Access Application Block
* Wyświetlanie zestawów danych w formacie XML
* Zapobieganie nieautoryzowanemu dostępowi do aplikacji
* Przeprowadzanie testów jednostkowych
Wykorzystaj sekrety i skarby ukryte w platformie .NET.
* Jak wykorzystać strumienie?
* Jak stworzyć efektowny interfejs użytkownika?
* Jak zapewnić bezpieczeństwo w tworzonych aplikacjach?
Co spowodowało, że język programowania Java zyskał tak wielką popularność? Przyczyn jest kilka: możliwość przenoszenia kodu między programami, wydajność i to, co programiści lubią najbardziej - mechanizm automatycznego oczyszczania pamięci. Nie bez znaczenia jest również to, że Java jest językiem zorientowanym obiektowo, udostępnia obsługę programowania rozproszonego oraz świetną dokumentację. Ponadto liczne publikacje oraz pomocna społeczność sprawiają, że Java zajmuje poczesne miejsce wśród innych języków programowania.
Kolejne wydanie książki "Java. Techniki zaawansowane. Wydanie VIII" zostało zaktualizowane o wszystkie te elementy, które pojawiły się w wersji szóstej platformy Java Standard Edition. Dzięki tej książce dowiesz się, w jaki sposób wykorzystać strumienie, jak parsować dokumenty XML czy też w jaki sposób tworzyć aplikacje sieciowe. Poznasz interfejs JDBC, sposób wykorzystania transakcji oraz wykonywania zapytań SQL. Autorzy w szczegółowy sposób pokażą Ci, jak tworzyć aplikacje z wykorzystaniem biblioteki Swing. Dodatkowo przedstawią, w jaki sposób zapewnić bezpieczeństwo w tworzonych przez Ciebie aplikacjach. Wszystkie te - oraz wiele innych - zagadnienia zostaną przedstawione w przystępny i sprawdzony sposób!
* Wykorzystanie strumieni
* Dokumenty XML i ich wykorzystanie w języku Java
* Programowanie aplikacji sieciowych
* Wykorzystanie interfejsu JDBC
* Tworzenie aplikacji wielojęzycznych
* Możliwości pakietu Swing
* Wykorzystanie biblioteki AWT
* Bezpieczeństwo w aplikacjach
* Zastosowanie podpisu cyfrowego
* Sposoby wykorzystania obiektów rozproszonych (RMI)
Wykorzystaj zaawansowane możliwości języka Java w swoich projektach!
Wkrocz w świat projektowania 3D
* Jak definiować parametry projektu?
* W jaki sposób korzystać z narzędzi projektowych?
* Jak generować dokumentację techniczną?
Inventor, opracowany i sprzedawany przez firmę Autodesk, to program typu CAD, pozwalający na zamodelowanie projektowanego urządzenia lub elementu w postaci bryły trójwymiarowej. W oparciu o tak zamodelowaną bryłę Inventor umożliwia wygenerowanie pełnej dokumentacji projektowej — rysunków wykonawczych i złożeniowych, wykazu części i innych. Aplikacja pozwala także na przeprowadzenie symulacji i analizy działania projektowanego urządzenia.
"Inventor. Pierwsze kroki " to podręcznik dla wszystkich osób, które chcą poznać możliwości tej aplikacji i wykorzystać je w swojej pracy. Książka opisuje proces instalacji i konfiguracji programu oraz definiowania parametrów projektu. Pokazuje także kolejne kroki jego realizacji. Przeczytasz w niej o tworzeniu szkiców, definiowaniu wiązań, generowaniu modeli bryłowych i tworzeniu zespołów. Dowiesz się także, w jaki sposób wygenerować dokumentację techniczną w oparciu o gotowy model oraz jak zaprezentować elementy projektu w postaci animacji trójwymiarowej.
* Instalacja Inventora
* Konfiguracja interfejsu użytkownika
* Praca z oknami dialogowymi
* Tworzenie szkiców i wiązań
* Edycja obiektów graficznych
* Tworzenie brył trójwymiarowych
* Łączenie elementów w zespoły
* Tworzenie dokumentacji technicznej
* Prezentacja zespołów
Zrealizuj swoje wizje za pomocą Inventora!
OpenOffice to dostępny nieodpłatnie pakiet biurowy, który jest coraz groźniejszym konkurentem dla komercyjnych produktów. W jego skład wchodzi edytor tekstu, arkusz kalkulacyjny, program graficzny, aplikacja do tworzenia prezentacji multimedialnych, edytor równań oraz baza danych -- ten zestaw aplikacji tworzy kompletne narzędzie niezbędne w każdym biurze. OpenOffice przypomina sposobem obsługi pakiety komercyjne i może wymieniać z nimi pliki. Wydajna praca z tak rozbudowanym zestawem aplikacji wymaga opanowania wszystkich jego funkcji. Aby jednak usprawnić codzienne korzystanie z OpenOffice, należy wykorzystać wiele sztuczek, których opisu próżno szukać w oryginalnej dokumentacji pakietu.
Książka "122 sposoby na OpenOffice.ux.pl 2.0" zawiera obrazowe przykłady ilustrujące od podstaw kolejne, coraz bardziej zaawansowane funkcje pakietu. Dzięki nim dokonasz profesjonalnej edycji i formatowania dokumentu, usprawnisz obliczenia i przygotowanie wykresów, a także stworzysz efektowną prezentację multimedialną. Dowiesz się również, w jaki sposób przyspieszyć pracę z pakietem i dostosować interfejs użytkownika do swoich potrzeb. Szczególny nacisk położono na wymianę danych z innymi aplikacjami, eksportowanie i importowanie plików w różnych formatach oraz automatyzację prac i korzystanie z zaawansowanych narzędzi edycyjnych i formatujących.
* Instalacja i konfiguracja pakietu oraz jego najnowszych modułów dostępnych w internecie
* Zaawansowane mechanizmy edycji
* Automatyzacja formatowania przy wykorzystaniu stylów
* Praca z tabelami oraz kolumnami typu gazetowego
* Osadzanie obiektów graficznych w tekście
* Praca z dużymi dokumentami
* Edycja i formatowanie arkusza kalkulacyjnego oraz praktyczne przykłady realizacji obliczeń
* Formatowanie wykresów
* Przygotowanie arkusza jako bazy danych
* Tworzenie prezentacji na podstawie szablonów oraz projektowanie własnych wzorców
* Animowanie obiektów slajdów i stosowanie elementów interaktywnych
Odkryj w ekspresowym tempie tajniki OpenOffice i wykorzystuj je w codziennej pracy.
Język Pascal, kojarzący się głównie z nauką programowania, stał się podstawą jednego z najpopularniejszych obecnie środowisk programistycznych -- Delphi firmy Borland. To graficzne środowisko, pozwalające na szybkie tworzenie aplikacji dzięki możliwości składania ich z "klocków" zwanych komponentami, błyskawicznie zyskało uznanie programistów na całym świecie. Kolejne wersje Delphi oferowały coraz większe możliwości. Jego najnowsza wersja pozwala na tworzenie programów dla platformy .NET i korzystanie nie tylko z języka Pascal, ale również z coraz popularniejszego C#.
Książka "Delphi. Szybki start" to doskonały przewodnik po Delphi dla początkujących użytkowników. Dzięki niemu poznasz język Object Pascal i zasady programowania obiektowego. Nauczysz się wykorzystywać komponenty do tworzenia aplikacji i od zera napiszesz własne programy. Dowiesz się, czym się różni Delphi 7 od Delphi 2005, i wykorzystasz możliwości obu tych środowisk.
* Interfejs użytkownika środowiska Delphi
* Elementy języka Object Pascal
* Programowanie obiektowe
* Obsługa wyjątków
* Tworzenie okien dialogowych
* Projektowanie interfejsów użytkownika
* Korzystanie z komponentów
Poznaj możliwości środowiska Delphi.
Sieci oparte na protokole TCP/IP podbiły świat. Po ogromnym sukcesie Internetu na dobre zadomowiły się w firmach (intranet), czy w amatorskich sieciach komputerowych wypierając w znacznym stopniu inne rozwiązania. Stąd ogromne zapotrzebowanie na administratorów sieci działających w oparciu o TCP/IP.
"TCP/IP dla każdego" przekaże Ci całą niezbędną wiedzę do administrowania siecią TCP/IP. Ujmuje zarówno zagadnienia podstawowe opisując dokładnie sam protokół, jak i kwestie bardziej skomplikowane, w tym konfigurowanie systemu DNS czy zarządzanie SNMP. Uwzględnione zostały najnowsze, normalizowane dopiero w ostatnich latach technologie, takie jak:
Internet Protocol Security (IPSec)
IPv6
Voice Over IP
Bezprzewodowe sieci lokalne
Uwierzytelnianie RADIUS
Infrastruktura klucza publicznego (PKI)
Książka omawia zarówno teoretyczne podstawy funkcjonowania sieci opartych na TCP/IP, jak i praktyczne sposoby konfigurowania protokołów w różnorodnych systemach operacyjnych stosowanych we współczesnych sieciach. Zgodnie z tytułem, jest to publikacja kierowana do szerokiego grona Czytelników: początkujących i zaawansowanych, dla administratora-praktyka i dla studenta. Temu ostatniemu z pewnością pomogą sprawdzające pytania, które podsumowują każdy rozdział książki.
Usprawnij firmową infrastrukturę informatyczną
* Jak skonfigurować firmowe komputery?
* W jaki sposób korzystać z aplikacji biurowych?
* Jak wykorzystać możliwości internetu?
Komputer w firmie dawno już przestał być symbolem innowacyjności -- dziś jest on po prostu konieczny. Prowadzenie przedsiębiorstwa bez pomocy komputera i odpowiedniego oprogramowania jest niemal niemożliwe. Dostępne na rynku programy usprawniają między innymi wystawianie i ewidencjonowanie faktur, zarządzanie personelem, tworzenie dokumentacji i śledzenie historii kontaktów z klientami. Internet pozwala na sprawną komunikację, otwiera dostęp do rachunku bankowego firmy i ogromnych zasobów wiedzy.
Jednak w wielu przedsiębiorstwach komputery traktowane są jako zło konieczne, a przechowywane na ich dyskach twardych dane nie są w żaden sposób chronione przed uszkodzeniem lub dostępem osób niepowołanych. Infrastrukturą IT często nieumiejętnie zarządzają osoby pełniące inne funkcje i przydzielane do tego "przy okazji".
Książka "Komputer PC w biurze i nie tylko" to kompendium wiedzy o odpowiednim wykorzystywaniu komputerów w firmach. Znajdziesz w niej informacje o aplikacjach biurowych i ich możliwościach, a także wiele innych przydatnych wiadomości. Dowiesz się, jak istotne znaczenie dla firmy ma odpowiednia polityka bezpieczeństwa danych, jak opracować taką politykę i wdrożyć ją w przedsiębiorstwie.
Nauczysz się konfigurować system operacyjny i sieć, instalować oprogramowanie antywirusowe i zabezpieczające przed atakami z sieci. Poznasz sposoby udostępniania użytkownikom sieci drukarek i plików, korzystania z poczty elektronicznej i stron WWW oraz tworzenia dokumentów tekstowych, zestawień i prezentacji za pomocą pakietu MS Office.
* Tworzenie założeń polityki bezpieczeństwa danych
* Konserwacja komputerów
* Projektowanie wizytówek i papierów firmowych
* Konfiguracja sieci biurowej
* Udostępnianie plików i drukarek w sieci
* Korzystanie z poczty elektronicznej i stron WWW
* Tworzenie dokumentów tekstowych w programie Word
* Najważniejsze możliwości Excela
* Prezentacje multimedialne w programie Power Point
Od prawidłowego działania komputerów może zależeć sukces Twojej firmy. Zadbaj o to, aby ich awarie nie stanęły Ci na przeszkodzie.
Poznaj tajniki Pocket PC
* Skonfiguruj system Windows Mobile
* Wykorzystaj narzędzia dołączone do Pocket PC
* Zainstaluj nowe aplikacje
Podręczny komputer -- Pocket PC -- jeszcze niedawno był niemal synonimem luksusu. Dziś jego cena spadła, a na rynku pojawiają się coraz bardziej funkcjonalne modele, połączone z telefonami komórkowymi, odbiornikami GPS i cyfrowymi aparatami fotograficznymi. To niewielkie urządzenie umożliwia również przeglądanie poczty elektronicznej i witryn WWW, edycję dokumentów Worda i Excela i... układanie pasjansów. Nadal jednak większość użytkowników wykorzystuje je głównie jako elektroniczny notatnik, który skutecznie wypiera żółte karteczki, kalendarze i węzełki na chusteczkach.
"Pocket PC. Podręcznik użytkownika" to książka przeznaczona dla tych, którzy chcą poznać najważniejsze funkcje urządzenia. Czytając ją, nauczysz się konfigurować Pocket PC, uruchamiać aplikacje, łączyć się z internetem i synchronizować dane z komputerem.
* Połączenie Pocket PC z komputerem
* Personalizacja systemu
* Przesyłanie plików przez łącze IrDA
* Konfiguracja połączeń internetowych
* Praca z Pocket Word i Pocket Excel
* Instalowanie i usuwanie aplikacji
Przekonaj się, że dzięki Pocket PC praca w terenie nabiera całkiem nowego znaczenia.
Język programowania Tcl (Tool Command Language) należy do licznej rodziny interpretowanych języków skryptowych. Interpreter Tcl może zostać uruchomiony pod kontrolą wielu systemów operacyjnych, między innymi Linuksa i Windows. Aplikacja Tcl jest niemal w pełni niezależna od wyboru platformy systemowej. Tcl pozwala między innymi na uruchamiania wielu procesów (programów), korzystanie z przekierowań wejścia-wyjścia, tworzenie potoków poleceń i tworzenie gniazd sieciowych do komunikacji TCP/IP. Rozszerzeniem Tcl o trudnym do przecenienia znaczeniu jest pakiet narzędziowy Tk. Dzięki poleceniom Tk tworzenie i manipulowanie okienkami składającymi się na graficzny interfejs użytkownika (GUI) jest niezwykle proste.
Jeśli potrzebny jest Ci wygodny język skryptowy, w którym można szybko tworzyć niezależne od systemu operacyjnego aplikacje o rozbudowanym interfejsie użytkownika, Tcl/Tk może okazać się wymarzonym narzędziem do tego celu.
Książka "Tcl/Tk. Programowanie" to wyczerpujący i kompletny podręcznik tego języka programowania, wzbogacony wieloma przydatnymi przykładami.
W książce omówiono między innymi:
* Podstawy Tcl, środowisko pracy programisty
* Polecenia, zmienne, wykonywanie obliczeń, instrukcje sterujące, procedury i inne elementy składni języka
* Struktury danych: łańcuchy i wyrażenia regularne, listy i tablice
* Korzystanie z plików, potoków i gniazd sieciowych
* Pakiety i biblioteki, dostęp do baz danych
* Tworzenie interfejsu użytkownika z wykorzystaniem Tk
* Obsługę zdarzeń
* Kontrolki dostępne w Tk, tworzenie menu aplikacji
Similar to System inteligentnej nawigacji sterowanej głosem po serwisie internetowym (20)
System inteligentnej nawigacji sterowanej głosem po serwisie internetowym
1. Gdańsk, wrzesień 2011
POLITECHNIKA GDAŃSKA
Wydział Elektroniki
Telekomunikacji i Informatyki
Katedra Systemów Decyzyjnych
Imię i nazwisko dyplomanta: Jan Klimczak
Nr albumu: 112006
Forma i poziom studiów: niestacjonarne inżynierskie
Kierunek studiów: Informatyka
Praca dyplomowa inżynierska
Temat pracy: System inteligentnej nawigacji sterowanej głosem po serwisie
internetowym
Intelligent web navigation voice controlled system
Kierujący pracą: prof. dr hab. inż. Zdzisław Kowalczuk
Recenzent:
Zakres pracy: Opracowanie głosowego systemu komunikacji oraz nawigacji po serwisie
internetowym. Projekt zakłada wykonanie portalu testowego, systemu rozpoznawania
i generowania mowy, mózgu systemu oraz postaci Awatara komunikującego się
z użytkownikami oraz kierującego ich po serwisie. System ma być inteligentny w tym znaczeniu,
iż Awatar nie będzie nas tylko słuchał, ale także będzie z nami w dialogu wyrażając się poprzez
swoje emocje. Wykonanie projektu zakłada komunikację w języku angielskim.
Nr raportu:
2.
3. .......................................................
Imię i nazwisko dyplomanta
1.1.1. OŚWIADCZENIE
Oświadczam, że:
1) niniejszą pracę dyplomową wykonałem samodzielnie,
2) wszystkie informacje umieszczone w pracy uzyskane ze źródeł pisanych oraz informacje
ustne pochodzące od innych osób zostały udokumentowane w wykazie literatury
odpowiednimi odnośnikami.
.................................................
podpis dyplomanta
4.
5. Spis treści
1.1.1. OŚWIADCZENIE.....................................................................................................3
2. CEL PRACY ORAZ ROZPOZNANIE TECHNOLOGII..........................................................9
2.1. Wprowadzenie..................................................................................................................9
2.2. Założenia ogólne...............................................................................................................9
2.3. Przegląd istniejących technologii ...................................................................................10
2.3.1. Systemy mowy........................................................................................................10
2.3.2. Systemy Java Speech ..............................................................................................10
2.3.3. Systemy Microsoft Speech......................................................................................11
2.3.4. Systemy rozpoznawania mowy...............................................................................11
2.3.5. Systemy syntezy mowy...........................................................................................11
2.3.6. Przegląd istniejących systemów mowy...................................................................12
2.4. Serwery obsługujące protokół czasu rzeczywistego ......................................................14
2.5. Specyfikacja techniczna .................................................................................................15
2.6. Podsumowanie................................................................................................................17
3. SPRECYZOWANIE WYMAGAŃ FUNKCJONALNYCH....................................................18
3.1. Wprowadzenie................................................................................................................18
3.2. Przeznaczenie systemu ...................................................................................................19
3.3. Funkcja ...........................................................................................................................20
3.4. Podsumowanie................................................................................................................21
4. ZASADA DZIAŁANIA ORAZ OPIS SYSTEMU ..................................................................22
4.1. Wprowadzenie................................................................................................................22
4.2. Architektura systemu......................................................................................................22
4.3. Algorytm działania systemu...........................................................................................25
4.3.1. Przygotowanie systemu mowy................................................................................25
4.3.2. Podłączenie klienta..................................................................................................26
4.3.3. Wygenerowanie mowy i jej odsłuchanie przez użytkownika .................................28
4.3.4. Rozpoznanie wydanej komendy głosowej ..............................................................31
4.3.5. Mózg........................................................................................................................32
4.3.6. Stan (emocje)...........................................................................................................32
4.4. Opis wyników.................................................................................................................33
4.5. Struktura oprogramowania .............................................................................................33
4.6. Podsumowanie................................................................................................................34
5. REALIZACJA PRACY ............................................................................................................35
5.1. Wprowadzenie................................................................................................................35
5.2. Testowanie platformy.....................................................................................................36
5.3. Omówienie sposobów rozwiązania problemów.............................................................36
6. 5.4. Podsumowanie................................................................................................................36
6. MOŻLIWOŚCI ROZWOJU SYSTEMU .................................................................................37
6.1. Wprowadzenie................................................................................................................37
6.2. Rozwój klienta................................................................................................................37
6.3. Rozwój systemu generowania mowy.............................................................................37
6.4. Rozwój systemu rozpoznawania mowy .........................................................................38
6.5. Rozwój postaci Awatara.................................................................................................38
6.6. Rozwój Mózgu ...............................................................................................................38
6.7. Podsumowanie................................................................................................................38
7. PODSUMOWANIE ORAZ WNIOSKI Z PRACY..................................................................39
7.1. Podsumowanie oraz wnioski z pracy .............................................................................39
8. Dodatek 1. Skrótowy opis aplikacji .......................................................................................... 40
Tytuł dyplomu........................................................................................................................... 40
Cel i przeznaczenie aplikacji.....................................................................................................40
Funkcjonalność ......................................................................................................................... 40
Opis realizowanych funkcji...................................................................................................40
Lista przykładowych zastosowań .......................................................................................... 41
Szczegółowe opisy działania aplikacji..................................................................................41
Architektura sprzętu..................................................................................................................42
Architektura oprogramowania ..................................................................................................42
Opis metody wytwarzania aplikacji.......................................................................................... 44
Założenia i sformułowane zadania .......................................................................................45
Specyfikacje........................................................................................................................... 45
Przygotowanie projektu ........................................................................................................45
Prototypowanie i implementacja .......................................................................................... 46
Testowanie ............................................................................................................................ 46
Ocena aplikacji oraz porównanie do innych rozwiązań.......................................................46
Wnioski i perspektywy dalszych prac....................................................................................46
9. Dodatek 2. Instrukcja dla użytkownika.....................................................................................47
Przygotowanie do pracy z systemem....................................................................................47
Komendy sterujące pracą systemu........................................................................................ 50
Lokalne ustawienia systemu .................................................................................................51
10. Dodatek 3. Instrukcja dla administratora ................................................................................52
System znaczników...............................................................................................................52
Mapa strony – sitemap ..........................................................................................................54
Panel administracyjny...........................................................................................................54
Edycja generowanych odpowiedzi z systemu – Avatar Speech ...........................................54
Generator treści systemu.......................................................................................................56
7. Podgląd zawartości wygenerowanej bazy danych na bazie znaczników..............................57
Instrukcja wdrożenia systemu ...............................................................................................57
11. Dodatek 4. Instrukcja dla programisty....................................................................................59
Budowa bazy danych ................................................................................................................59
Specyfikacja komunikacji z Mózgiem ......................................................................................60
Klient (ActionScript) – diagram klas ....................................................................................61
Serwer Mowy (JavaEE)– diagram klas.................................................................................62
System znaczników...................................................................................................................63
Dodanie postaci Awatara ..........................................................................................................64
Konfiguracja systemu rozpoznawania i generowania mowy....................................................66
12. Dodatek 5. Listing kodów źródłowych głównych modułów ..................................................67
Serwer mowy - SpeechServer ...................................................................................................67
Klient - SpeechAvatar ...............................................................................................................82
Model danych – SpeechModel..................................................................................................96
Mózg – BrainService...............................................................................................................100
Administrator – Administrator................................................................................................104
Portal demonstarcyjny – PortalPG..........................................................................................111
13. Bibliografia............................................................................................................................118
8.
9. 2
2.CEL PRACY ORAZ ROZPOZNANIE TECHNOLOGII
2.1. Wprowadzenie
Niniejszy projekt ma za zadanie przegląd oraz scalenie istniejących rozwiązań,
które umożliwiają sterowanie portalem internetowym za pomocą głosu. Użytkownik otrzymuje
możliwość wydawania komend głosowych, a także zapytań odnośnie zawartości portalu. System
w odpowiedzi na komendy generuje komunikaty głosowe, które udzielą odpowiedzi na zadane
pytania. System także może przenosić użytkownika w inne miejsce portalu, o które prosimy
wydając komendy. Do interakcji użytkownika z portalem została utworzona postać
Inteligentnego Awatara (ang. Intelligent Avatar) [1], która umożliwia interakcję głosową
z systemem. Awatar jest wrażliwy na to co i jak mówimy, posiada swoje emocje,
które są uwidocznione podczas komunikacji.
Największym wyzwaniem stojącym przy realizacji projektu jest jego rozproszona praca,
która umożliwia niezależne sterowanie portalem dla wielu użytkowników jednocześnie poprzez
przeglądarkę internetową pracując w trybie on-line1
bez potrzeby zalogowania się do systemu
oraz zastosowany silnik sztucznej inteligencji2
i emocji3
postaci Awatara, która pamięta
użytkownika i swój stan podczas przeglądania portalu.
2.2. Założenia ogólne
Ze względu na skomplikowanie języka polskiego, czego wynikiem jest praktyczny brak
implementacji tego języka dla technologii mowy (ang. Speech) (rozpoznawania i syntezy mowy)
[2] przedstawiony projekt został wykonany wyłącznie w języku angielskim, co nie wyklucza
dalszej jego rozbudowy o kolejne języki w przyszłości.
Zakłada się kontynuację pracy oraz dalszy rozwój platformy po ukończeniu projektu,
tak więc została zapewniona jego dalsza rozbudowa w sposób mało inwazyjny oraz praktycznie
niezależny dla każdego z modułów.
1
W trybie połączonym z Internetem.
2
Moduł nazwany „Mózgiem” niniejszej platformy.
3
Emocje identyfikują stan Awatara, który jest indywidualny dla każdego użytkownika portalu internetowego.
10. 1. Cel pracy oraz rozpoznanie technologii 10
2.3. Przegląd istniejących technologii
Sporządzony przegląd zawiera zestawienie istniejących technologii, które zostały uwzględnione
w fazie analizy wykonania projektu w obszarze rozpoznawania i generowania mowy.
2.3.1. Systemy mowy
Technologie rozpoznawania i syntezy mowy są od wielu lat rozwijane. Jednak semantyka
i struktura języka ludzkiego są na tyle skomplikowane, iż obecnie pomimo wielu lat rozwoju
nie ma żadnego istniejącego rozwiązania, które było by idealne lub bardzo zadowalające w tym
zakresie4
. Wiele projektów zostało albo skomercjonalizowanych5
i obecnie są dostępne
do zakupienia po wygórowanych cenach mimo, iż nie oferują fantastycznych rezultatów6
,
albo zostało zaprzestanych w rozwoju z różnych powodów7
.
Pod pojęciem systemu mowy (ang. Speech) wyróżniamy rozwiązania, które w mniejszym
lub większym stopniu umożliwiają rozpoznanie mowy (ang. Speech Recognition) [3]
lub/i jej syntezę, czyli wygenerowanie mowy na podstawie tekstu (ang. Speech Synthesis) [4]
za pośrednictwem własnych bibliotek oraz ich interfejsów API.
W tym obszarze możemy wyróżnić dwa czołowe rozwiązania: system mowy firmy
Microsoft (ang. Microsoft Speech) [5] oraz system mowy Java (ang. Java Speech) [6].
Praktycznie wszystkie obecne rozwiązania na nich bazują. Dzięki nim otrzymujemy dostęp
do framework'u, który umożliwia nam ich swobodne zastosowanie. Oczywiście na rynku istnieją
inne rozwiązania, ale zazwyczaj są one przeznaczone do ściśle określonych celów, a sama
ich licencja oraz brak dostępu do ich kodu uniemożliwia szersze ich wykorzystanie.
2.3.2. Systemy Java Speech
Java Speech API (ang. Java Speech Application Programming Interface, JSAPI) [7]
umożliwia wykorzystanie systemu mowy (ang. Speech) w między-platformowych aplikacjach
opierających się na technologii Java [8]. Dzięki zastosowaniu JSAPI otrzymujemy obsługę
komend i kontroli aplikacji poprzez rozpoznawanie mowy, system obsługujący gramatykę
(ang. Dictation System) [9] oraz syntezer mowy (ang. Speech Synthesis) dla rozwiązań
osobistych lub klasy korporacyjnej. Java Speech API obsługuje rozpoznawanie oraz syntezę
mowy.
Podstawową korzyścią korzystania z technologii Java jest to, iż otrzymujemy rozwiązanie
z otwartym dostępem do kodu (ang. Open Source) [10] oraz pełną zgodność między-
platformową (możliwość uruchomienia aplikacji na wielu platformach, w tym.: Microsoft,
Macintosh oraz Linux, ang. Cross-Platform) praktycznie bez wykonywania dodatkowej pracy
w tym zakresie.
Java Speech API zostało utworzone przez SUN Microsystems, obecnie Oracle
Corporation [11] przy współpracy z przodującymi na tamte czasy firmami8
, które zajmowały się
systemami rozpoznawania mowy: Apple Computers, Inc. [12] , AT&T [13], Dragon System,
Inc. [14], IBM Corporation [15], Novell, Inc. [16], Philips [17], Texas Instruments [18].
4
W znaczeniu poprawności rozpoznawania i generowania mowy.
5
Rozwijanych przez firmy i odsprzedawanych po wygórowanych cenach.
6
Pomimo wielu lat rozwoju nie ma obecnie takiego systemu, który zastąpił by człowieka.
7
Większość rozwijanych projektów realizowana była przez uczelnie, jednak wiele z nich zostało zakończonych i nie
jest już rozwijana.
8
Dotyczy to lat 80-90 bieżącego stulecia.
11. 1. Cel pracy oraz rozpoznanie technologii 11
Pierwsza wersja Java Speech API została utworzona i zaakceptowana w 1998 roku. Od tego
też czasu nic się w niej nie zmieniło, nie była także modernizowana. Obecnie tylko różne
jej implementacje są rozwijane.
W 2001 roku rozpoczęto prace nad specyfikacją Java Speech API 2 (ang. JSAPI 2)
dostępną jako zgłoszenie JSR 113 (ang. Java Specification Request: JavaTM Speech API 2.0)
[19]. Pace nad nią trwały przez 8 lat. Jedną z głównych korzyści będzie zgodność
z zaproponowanym frameworkiem mowy dla przeglądarek internetowych przez W3C9
(ang. W3C Speech Interface Framework) [20] poprzez zastosowanie znaczników HTML
bezpośrednio na stronie internetowej oraz kompatybilność z interfejsem programowania systemu
mowy (ang. Speech Application Programming Interface) [21] wywodzącym się z Microsoft’u.
Jednak na JSAPI 2 musimy jeszcze troszkę poczekać ponieważ do dnia dzisiejszego
nie ma praktycznie żadnej działającej implementacji gotowej do wdrożenia i zastosowania.
2.3.3. Systemy Microsoft Speech
Microsoft posiada dobrze rozwinięty system mowy. Na jego stronie „Microsoft Tellme speech
innovation” [22] zostały dobrze opisane technologie przez niego wspierane. Technologie
te pozwalają na rozpoznawanie oraz generowanie mowy (ang. Speech Synthesis
and Recognition) w wielu językach. Dodatkowo za pomocą komend głosowych można sterować
systemem operacyjnym Windows oraz wybranymi aplikacjami. Jednak ograniczenia licencyjne
na wykorzystanie tego systemu mowy wykluczyła wykorzystanie tego rozwiązania
w wykonywanym projekcie.
2.3.4. Systemy rozpoznawania mowy
Od wielu dziesięcioleci ludzie próbują sterować urządzeniami za pomocą głosu. Ze względu
na skomplikowanie ludzkiej mowy pierwsze systemy pozwalały wyłącznie na rozpoznawanie
cyfr. W 1952 roku Bell Laboratories [23] zaprojektował system „Audrey”, który rozpoznawał
cyfry. Dziesięć lat później IBM zaprezentował swoją maszynę „Shoebox” [24],
która rozpoznawała 16 słów w języku angielskim. Następnie w latach 70 bieżącego wieku
powstały pierwsze systemy pozwalające rozpoznać tysiące słów, w latach 80 ta liczba
rozpoznawanych słów została już przekroczona. W latach 90 firma Dragon wprowadziła
do sprzedaży pierwszy produkt rozpoznawania mowy Dragon Dictate w cenie 9000$. Siedem lat
później produkt znacznie udoskonalony o nazwie Dragon NaturallySpeaking umożliwiający
płynne rozpoznawanie mowy o szybkości 100 słów na minutę został udostępniony w cenie
ok. 700$. Od 2000 roku systemy te szczycą się 80 % poprawnością rozpoznawania mowy. Także
od tego czasu możliwości wydawania komend głosowych zostały zaimplementowane
do systemów operacyjnych Microsoft Vista oraz MacOS oraz do wielu telefonów komórkowych
[25].
2.3.5. Systemy syntezy mowy
Synteza mowy polega na zamianie tekstu na mowę (ang. Text To Speech, TTS) [26]. Systemy
te ocenia się na podstawie poprawności i zrozumiałości wygenerowanej mowy, która powinna
być zrozumiała przez człowieka. Z roku na rok systemy te są bardziej dopracowane, jednak
na dzień dzisiejszy daleko jest im do doskonałości.
9
Dokument ten na dzień dzisiejszy znajduje się w wersji roboczej.
12. 1. Cel pracy oraz rozpoznanie technologii 12
2.3.6. Przegląd istniejących systemów mowy
Na rynku istnieje wiele systemów mowy (ang. Speech). Niektóre z nich lepiej sobie radzą,
a niektóre gorzej z rozpoznawaniem i syntezą mowy (ang. Speech Recognition and Synthesis).
Wiele z nich, szczególnie tych dopracowanych występuje w wersji komercyjnej, za którą trzeba
płacić (patrz tab. 1.1.). Większość z tych systemów przedstawia dość wysoki poziom
generowanej i rozpoznawanej mowy. Jednak ze względu na wysokie koszty nie zostały one
uwzględnione przy realizacji niniejszego projektu.
Tab. 2.1. Wybrane komercyjne systemy mowy.
l.p. nazwa cena rodzaj
1. Dragon Medical od 1200$ synteza i
rozpoznawanie mowy
2. Dragon NaturallySpeaking od 30$ za wersję pod
system operacyjny
synteza i
rozpoznawanie mowy
3. Cloud Garden, Talking Java SDK 500$ za serwer (z
ograniczeniami)
synteza mowy
4. Acapela box (Elan Speech Cube) 300€ za godzinę synteza mowy
5. Lumen Vox od 1500$ rozpoznawanie mowy
6. Ivona od 29€ synteza mowy
Dragon Medical [26] oferuje jedne z najbardziej zaawansowanych możliwości rozpoznawania
i syntezy głosu. Jest on przeznaczony dla lekarzy, którzy mogą za jego pośrednictwem szybko
tworzyć raporty medyczne lub przeszukiwać bazy danych. Jest to możliwe dzięki bardzo
dobremu systemowi rozpoznawania tekstu, pełnego zakresu słownictwa medycznego,
technicznego a także sprawności działania, pozwalającej na pracę niemal w czasie rzeczywistym
z systemem.
Drugim według mnie najlepszym systemem mowy jest Dragon NaturallySpeaking [27].
Jest on już przeznaczony dla przeciętnego użytkownika. Pozwala on m. in. na pisanie
oraz edycję dokumentów tekstowych, e-maili, uruchamianie aplikacji i plików, kontrolowanie
myszki oraz pomaga przy wielu innych czynnościach związanych z codzienną pracą
użytkownika z komputerem.
Cloud Garden, Talking Java SDK [28] jest już implementacją JSAPI, która korzysta
z SAPI Microsoftu, tak więc możliwe wykorzystanie jest wyłącznie pod platformą Windows.
Jak nazwa wskazuje jest to SDK (ang. Software Development Kit), które umożliwia praktycznie
dowolną implementację systemu.
Acapela box (Elan Speech Cube) [29] jest generatorem mowy, który pobiera opłaty
w zależności od czasu generacji mowy. Actapela udostępnia nam swój serwer, do którego się
łączymy, generujemy na nim mowę i odbieramy ją z powrotem. Za poprawność pracy całości
odpowiada firma, jednak tylko też ona może dalej rozwijać swój produkt.
Lumen Vox [30] jest firmą, która specjalizuje się w tworzeniu systemów generowania
mowy wysokiej jakości. Ich produkt Lumen Vox zdobył wiele nagród i wyróżnień w kategorii
rozpoznawania mowy. Jednak sama jego cena wskazuje na jego profesjonalne zastosowanie.
Na koniec pozostawiłem nasz rodowity produkt o bardzo wysokiej jakości Ivona [31],
który generuje mowę o bardzo wysokiej jakości. Ivona może poszczycić się generacją bardzo
wysokiej klasy głosu w języku polskim. Posiada ona wiele sposobów licencjonowania, tak więc
dostosowana jest zarówno pod przeciętnego klienta jak i korporacji.
13. 1. Cel pracy oraz rozpoznanie technologii 13
Większość rozwiązań typu Open Source10
przedstawia niestety tylko dobry lub zadawalający
poziom wygenerowanej mowy (patrz tab. 1.2). Wiele z nich korzysta z SAPI Microsoftu,
co dyskwalifikuje je do wykorzystania w projekcie. Tutaj praktycznie tylko dwa rozwiązania
wybijają się spośród dostępnych implementacji: Sphinx oraz FreeTTS. Charakteryzują się one
znacznie lepszą jakością generowanej i rozpoznawanej mowy oraz lepszą dokumentacją
i większą funkcjonalnością. Niewątpliwie w tym sektorze są liderami. Jednak w odróżnieniu
od komercyjnych systemów tego typu są to wyłącznie biblioteki, które wymagają utworzenia
własnej implementacji, gdzie często rozwiązania komercyjne oferują nam kompletny produkt.
Tab. 2.2. Wybrane systemy mowy typu Open Source.
l.p. Nazwa rodzaj
1. Sphinx-4 rozpoznawanie mowy
2. e-Speaking rozpoznawanie mowy (wymaga SAPI)
3. FreeTTS synteza mowy
4. Flite synteza mowy
5. Festival synteza mowy
6. FestVox synteza mowy
Sphinx-4 [32] jest najbardziej zaawansowanym systemem rozpoznawania mowy dostępnym jako
Open Source. Został on w całości napisany w języku Java poprzez współpracę Sphinx group
na Uniwersytecie Carnegie Mellon, Sun Microsystems Laboratories (obecnie Oracle), Mitsubishi
Electric Research Labs (MERL) oraz Hewlett Packard (HP) przy współpracy z Uniwersytetem
California w Santa Cruz (UCSC) i Massachusetts Institute of Technology (MIT).
System ten rozwijany jest od wielu lat oraz posiada możliwości rozpoznawania
pojedynczych komand jak i zarówno całych sekwencji zdań. Umożliwia on podpięcie wielu
modeli języka naturalnego11
w wielu różnych formatach. Posiada bogatą dokumentację
oraz wiele możliwości podpinania sygnału audio.
System e-Speaking [33] jest przykładem zastosowania SAPI Microsoftu, którego
wymaga do pracy. Posiada on ok. 100 wbudowanych komand do interakcji z systemem
operacyjnym. Obsługuje zarówno Windows 2000 jak i Windows XP. Integruje się z pakietem
Microsoft Office.
FreeTTS [34] z pośród wszystkich tu obecnych otwartych platform pod względem
generowania mowy bije konkurencję na głowę. Obsługuje wiele głosów, wraz z możliwością
ich dodawania. Częściowo wspiera standard JSAPI 1.0. Posiada dobrą dokumentację oraz wiele
interfejsów, które pozwalają na integrację tego systemu w innych modułach. Został on w całości
napisany w języku Java, jednak opiera się on na Flite [35] małym, szybkim, pracującym niemal
w czasie rzeczywistym generatorze mowy w całości napisanym w języku C na Uniwersytecie
Carnegie Mellon. Flite wywodzi się z systemu rozpoznawania mowy Festival [36] i projektu
FestVox [37], które nie są już tak funkcjonalne i zaawansowane jak FreeTTS, jednak odznaczają
się wyższą sprawnością.
Możemy wyróżnić tutaj trzeci typ systemów mowy. Mianowicie systemy on-line, do których
możemy podłączyć się za pośrednictwem interfejsów programistycznych (ang. Application
Programming Interface, API). Opierają się one najczęściej na systemach, a w zasadzie
bibliotekach opisanych w tab. 1.2. Są to proste rozwiązania, nie pamiętają stanu, nie posiadają
10
Dostępnych bez opłat z dostępem do kodu źródłowego.
11
Model określa listę słów i sentencji do rozpoznania.
14. 1. Cel pracy oraz rozpoznanie technologii 14
własnej logiki, tylko po prostu generują mowę na bazie podanego tekstu lub rozpoznają
wydawane komendy (patrz tab. 1.3). Najbardziej one pasują do tworzonego tutaj systemu, ale nie
mogą w nim jednak być użyte ze względu na swoje ograniczenia.
Tab. 2.3. Wybrane systemy mowy on-line.
l.p. nazwa rodzaj adres www
1. SpeechAPI rozpoznawanie
mowy
http://speechapi.com/
2. Ivona synteza mowy http://www.ivona.com/en/
3. AT&T Natural Voices® Text-
to-Speech Demo
synteza mowy http://www2.research.att.com/~ttsweb
/tts/demo.php
4. Festvox synteza mowy http://festvox.org/voicedemos.html
5. Festival Text-to-Speech Online
Demo
synteza mowy http://www.cstr.ed.ac.uk/projects/festi
val/onlinedemo.html
6. Demo Cepstral Voices synteza mowy http://cepstral.com/demos/
7. I Online Text to Speech
Synthesizer
synteza mowy http://codewelt.com/proj/speak
8. vozMe synteza mowy http://vozme.com/index.php?lang=en
SpeechAPI jest systemem on-line umożliwiającym użytkownikowi Internetu na wypowiadanie
komend oraz czytanie tekstu, który następnie jest rozpoznawany przez system. Internauta
ma do dyspozycji wyłącznie jedną stronę (właściwie kilka podstron) na której wypowiada
komendy. System ten jest interfejsem programistycznym (ang. API) do którego można podłączyć
się za pomocą różnych technologii, w tym: Java Script, Java12
, PHP, Python, Rubby, Web
Services oraz CLI (ang. Command Line Interface). Tak więc jest to system zamknięty, wysyłajcy
żądanie zawierające nagrany głos do rozpoznania, natomiast w odpowiedzi otrzymujemy
rozpoznaną komendę w formie tekstu. Poprzez obsługę wielu technologii wydaje się być
ciekawym rozwiązaniem na rynku. Niestety w 2011 roku prace nad tym systemem bardzo
zmalały także na chwilę obecną ciężko jest przewidzieć jego przyszłość. Także wykonane testy
podczas rozpoznania, które nierzadko kończyły się niepowodzeniem oraz brak udostępnienia
kodu źródłowego do wykonania potrzebnych poprawek wykluczyły ten system
do wykorzystania w tworzonym projekcie.
Ivona udostępniła raczej demonstracyjny panel zamiany tekstu w głos. Można w nim
podać dość krótki fragment, który zostanie zamieniony w głos. Jednak wyróżnia się ona sporą
listą dostępnych języków oraz bardzo wysoką jakością generowanego dźwięku.
Pozostałe systemy on-line zaprezentowane w tab. 1.3. posiadają bardzo ograniczone,
nazwałbym je podstawowe funkcje generowania mowy, jednak pozwalają one
na jej wygenerowanie w przeglądarce internetowej.
2.4. Serwery obsługujące protokół czasu rzeczywistego
Ponieważ wykonany system ma pracować w Internecie użytkownik nie powinien czekać zbyt
długo na reakcję ze strony systemu. W tym celu do wykonania systemu został wykorzystany
serwer obsługujący protokół czasu rzeczywistego (ang. Real-Time Messaging Protocol, RTMP)
[38] utworzony przez Adobe [39]. W naszym przypadku protokół ten przesyła dane audio w taki
sposób, że użytkownik nie musi czekać na wcześniejszy zapis lub zbuforowanie tych danych,
12
Na chwilę pisania tego rozdziału Java nie była jeszcze dostępna.
15. 1. Cel pracy oraz rozpoznanie technologii 15
tylko bezpośrednio może z tych danych fragment po fragmencie wykorzystać. Zastosowanie
tego protokołu znacznie przyśpieszyło interakcję użytkownika z systemem. Serwery te potocznie
są zwane albo serwerami strumieniowymi albo serwerami czasu rzeczywistego.
Jako, że protokół ten został utworzony przez firmę Adobe także serwery tej firmy
obecnie są najbardziej zaawansowane, dopracowane i stabilne, ale także i kosztują sporo.
W Adobe możemy wyróżnić serwer Flash Media Server [40] oraz LiveCycle DS. [41].
Oba prezentują najwyższą półkę oraz zapewniają wysoką stabilność i dokumentację.
Na drugim horyzoncie znajduje się serwer Wowza Media Server [42], który jest
praktycznie odpowiednikiem tego z Adobe.
Natomiast z wielu rozwiązań typu Open Source praktycznie tylko jedno się liczy,
mianowicie serwer Red5 [43], który wykonany został w technologii Java. Jest to taki mniejszy
brat Adobe Flash Media Server. Na początku 2011 roku został zaprezentowany kandydat
na wersję 1.0. Jednak od tego czasu serwer ten boryka się z wieloma różnymi problemami, które
uniemożliwiły wydanie jego wersji 1.0. Po dopracowaniu myślę, że będzie to solidny serwer,
jednak na dzień dzisiejszy posiada on bardzo skromną dokumentację i wiele elementów trzeba
samemu się domyślać jak je wykonać. Jednak najważniejszą cechą tego serwera jest fakt,
iż występuje on jako Open Source, jest dostępny bez opłat licencyjnych (natomiast jego
konkurenci są wysoko wyceniani) i co najważniejsze obsługuje protokół RTMP.
Serwery tego typu tworzą gniazda na odpowiednich portach (dla RTMP zwykle jest
to port 1935) poprzez które następuje transmisja danych w czasie rzeczywistym. Takie
połączenie w przypadku stron internetowych następuje właśnie poprzez protokół RTMP.
2.5. Specyfikacja techniczna
Ze względu na dalszy rozwój projektu przez uczelnię Politechniki Gdańskiej, Katedrę Systemów
Decyzyjnych cały system został oparty na standardach Open Source. Wyjątkiem są tutaj
platformy technologiczne, np. baza danych, która do zastosowań niniejszego projektu jest
dostępna i zgodna z warunkami licencyjnymi za darmo ze strony firmy Oracle lub server,
który można łatwo podmienić na inny Open Source gdyż, aplikacja została wykonana w pełni
pod standard Java Enterprise Edition.
Obsługiwane systemy operacyjne13
:
Linux Ubuntu 8.04 (server) x3214
Windows15
Macintosh16
.
Wykorzystane serwery:
Server aplikacji: Oracle Web Logic 11g
Server czasu rzeczywistego + java: Red5 RC 1.0.
Wykorzystane standardy Java [44, 45, 46, 47, 48]:
Java 5 EE
EJB 3.0 (ang. Enterprise JavaBean)
13
W kontekście uruchomienia platformy. Odnośnie końcowego użytkownika to może on działać na dowolnym
systemie operacyjnym obsługującym wtyczkę Adobe Flash 10.
14
Po odpowiednim dostrojeniu aplikacja powinna działać i w innych wersjach systemu. Mi osobiście nie udało się
uruchomić systemu pod Linux Fedora Core 14 x64 (problem był z biblioteką xuggler).
15
Potwierdzone w systemie Windows Vista x32.
16
Brak przeprowadzenia testów, ale po odpowiedniej konfiguracji powinno zadziałać.
16. 1. Cel pracy oraz rozpoznanie technologii 16
JPA (ang. Java Persistence API)
EAR (ang. Enterprise Archive)
JSF2 (ang. Java Server Faces 2)
Threads
Entity
Facelets.
Baza danych:
Oracle XE 11g.
Technologie RIA (ang. Rich Internet Application):
Adobe Flex 4.5
AS 3 (ang. Action Script 3)
NetStream
SO (ang. Shared Object)
MXML
Adobe Flash 10.
Technologie Internetowe:
xHTML (ang. Extensible HyperText Markup Language)
CSS (ang. Cascading Style Sheets)
JS (ang. JavaScript)
Sitemap (plik tekstowy).
Technologie rozproszone SOA (ang. Service Oriented Architecture):
SOAP 1.1 (ang. Simple Object Access Protocol)
XML (ang. Extensible Markup Language)
WSDL (ang. Web Services Description Language).
Technologie rozpoznawania mowy:
JSGF (ang. Java Speech Grammar Format).
Wykorzystane bibloteki [55]:
rozpoznanie mowy: Sphinx4
synteza mowy: FreeTTS
konwersja formatów audio: Xuggler
spring Source Framework
parser HTML: JSoup
system logowania: Apache Logger.
Metodologia wytwarzania oprogramowania [49, 50, 51, 52, 53, 54]:
UML 2.0 (ang. Unified Modeling Language)
wzorce projektowe
oprogramowanie obiektowe i rozproszone.
17. 1. Cel pracy oraz rozpoznanie technologii 17
2.6. Podsumowanie
Wykorzystując system mowy w aplikacjach otrzymujemy bardziej naturalny interfejs
użytkownika, który umożliwia łatwiejsze oraz bardziej przyjazne sterowanie aplikacją pomiędzy
użytkownikiem a systemem (w naszym przypadku portalem internetowym).
Możemy wyróżnić dwa główne obszary systemu mowy: rozpoznawanie mowy
(ang. Speech Recognition) oraz synteza mowy (ang. Speech Synthesis). Rozpoznawanie mowy
polega na tym iż komputer słucha co do niego mówimy a następnie konwertuje to na tekst.
Synteza mowy jest odwrotnym procesem, który polega na czytaniu tekstu poprzez
wygenerowany głos ludzki w aplikacji. Często proces ten określany jest jako technologia text-to-
speech (TTS).
Celem pracy jest opracowanie głosowego systemu komunikacji oraz nawigacji
po serwisie internetowym. Projekt zakłada wykonanie portalu testowego, systemu
rozpoznawania i generowania mowy, mózgu systemu oraz postaci Awatara komunikującego się
z użytkownikami oraz kierującego ich po serwisie. System ma być inteligentny w tym znaczeniu,
iż Awatar nie będzie nas tylko słuchał, ale także będzie z nami w dialogu. Ze względu
na skomplikowanie języka i dostępność bibliotek generowania i syntezy mowy wykonanie
projektu zakłada komunikację w języku angielskim.
18. 2
3.SPRECYZOWANIE WYMAGAŃ FUNKCJONALNYCH
3.1. Wprowadzenie
Wykonany system pozwala na komunikację oraz nawigację po utworzonym portalu
internetowym za pomocą głosu. W dialogu uczestniczy postać Awatara, która wyposażona
jest w stan, który docelowo w przyszłości będzie rozszerzony do postaci Dictobot’a [56]
za pośrednictwem odpowiedniej implementacji „Mózgu” systemu. Widok demonstracyjnego
systemu został zaprezentowany na rys 2.1.
19. 2. Sprecyzowanie wymagań funkcjonalnych 19
Rys. 2.1. Widok portalu demonstracyjnego.
3.2. Przeznaczenie systemu
Zaprezentowany system przeznaczony jest dla każdego użytkownika z dostępem do Internetu
ze znajomością języka angielskiego, gdyż obustronna komunikacja odbywa się właśnie w tym
języku.
Praca ta jest pracą rozpoznawczą, przygotowuje ona platformę do dalszego rozwoju
poprzez umożliwienie podziału dalszej pracy na kilka zespołów. Pod tym kątem cały system jest
tworzony i dlatego w pewnych warstwach charakteryzuje się pewnym nadmiarem,
który wydzielił moduły funkcjonalne systemu.
System pokazuje możliwości wykorzystania technologii rozpoznawania i generowania
mowy w połączeniu ze stanem Awatara, który pamięta użytkownika przez całą sesję w której
uczestniczymy w interakcji. Sam Awatar w tym wykonaniu jest częściowo autonomiczny,
jednak został on tak zaprojektowany aby w przyszłości stał się on całkowicie autonomiczny
20. 2. Sprecyzowanie wymagań funkcjonalnych 20
i sam podejmował już niektóre decyzje. Dodatkowo cała zabawa została udostępniona
dla użytkowników bez potrzeby zalogowania się do portalu.
3.3. Funkcja
Wyróżniamy kilka funkcjonalnych stref systemu, które dotyczą zwykłego użytkownika
oraz administratora. Z myślą o wdrożeniu wykonanego systemu do istniejącego portalu
internetowego samodzielnie on generuje i uaktualnia zawartość tego portalu. Ponieważ nie
chcemy także, aby wszystko co na nim się znajduje trafiało do naszego systemu, np. treść
znaczników opisujących tabele lub obrazki na stronie wyposażony on został w moduł filtrowania
zawartości portalu.
Chcemy także, aby cały system szybko działał, tak więc z tego powodu została dodana
baza danych która buforuje zawartość strony. W przeciwnym wypadku użytkownik
był by zmuszony oczekiwać na każdorazowe przeanalizowanie strony portalu i na tej bazie
otrzymywał by odpowiedź, co było by czasochłonne.
Nie chcemy, aby użytkownik musiał logować się do portalu. Powinien po prostu wejść
na stronę i zacząć z niej korzystać bez poświęcania dodatkowego czasu na logowanie się
lub konfigurowanie systemu.
Wymagania względem Awatara:
wyposażony jest w stan (emocje), który jest zapamiętywany i przywracany kiedy
ponownie użytkownik wraca do aplikacji
stan awatara jest normalizowany1
po stronie klienta, niezależnie, nie obciążając
dodatkowo łącza internetowego
wydanie każdej komendy głosowej związane jest z pobraniem stanu Awatara,
gdzie „Mózg” odpowiednio reaguje na ten stan
„Mózg” odpowiada za modyfikację stanu Awatara
stan Awatara został graficznie odzwierciedlony w postaci wykresu słupkowego,
gdzie każdy słupek odzwierciedla inną cechę2
postać Awatara jest animowana w zależności od aktualnego stanu.
Wymagania względem rozpoznawania mowy:
rozpoznawane komendy głosowe:
o „Good Morning” – Awatar wita się
o „Hello” – Awatar wita się
o „How are Yoy ?” - Awatar odpowiada nam jak się czuje i pyta się nas o to samo
o „What is Your Name ?”, „Name” – Awatar odpowiada nam jak się nazywa
o „Read page”, „Read” – Awatar czyta zawartość strony głównej
o „Home”, „People”, „Teachers”, „Specialization”,, „Teaching”, “Research”,
“Laboratories”, “Smart control idea”, – Komendy te przekierowują
do odpowiednich podstron portal demonstracyjnego
o „Next page”, „Next”, i „Previous Page”, „Previous” – Powodują przejście
do następnej i poprzedniej strony w portalu internetowym.
Wymagania względem generowania mowy:
możliwość edycji generowanych komunikatów za pomocą panelu administracyjnego
głos powinien być odpowiednio modulowany w zależności od aktualnego stanu Awatara
1
Wyposażony w mechanizm „zapominania”.
2
W niniejszej implementacji Awatar posiada 4 cechy, a każda z nich przyjmuje wartości od 0 do 200.
21. 2. Sprecyzowanie wymagań funkcjonalnych 21
Wymagania względem mózgu systemu:
autonomiczność, poprzez wykorzystanie technologii SOA umożliwiająca łatwą
jego podmianę nawet w czasie pracy systemu
generowanie odpowiedzi na bazie aktywnego kontekstu (stanu Awatara, adresu strony
żądania i komendy) zawierającej komunikat głosowy, zmianę stanu oraz ew. polecenie
przekierowania w inną część portalu demonstracyjnego.
Wymagania względem portalu demonstracyjnego:
zawiera angielską część informacji z Katedry Systemów Decyzyjnych
zawartość odzwierciedla fragment strony Katedry Systemów Decyzyjnych
zawiera minimum 5 podstron z różną zawartością.
Wymagania względem części administracyjnej:
wygenerowanie zawartości portalu na bazie odpowiednich znaczników
podgląd zawartości bazy danych
edycja komunikatów głosowych wydawanych przez Awatara.
3.4. Podsumowanie
Jest to wzorcowy projekt, który umożliwia sterowanie portalem internetowym za pomocą głosu.
Jego główną funkcją jest możliwość interakcji użytkownika za pomocą głosu poprzez
wydawanie komend głosowych oraz słuchanie i dialog z Awatarem.
Docelowo, jeżeli system ten odniesie sukces będzie on zaimplementowany na portalu
Uczelni, dlatego został on wyposażony we własny system znaczników i parser3
,
który na podstawie znaczników przygotowuje odpowiednio bazę danych, która wykorzystywana
jest już przez „Mózg” systemu. W ten sposób została zagwarantowana możliwość
jego implementacji na portalu uczelni w przyszłości.
3
Parser analizuje zawartość stron portalu na postawie specjalnych znaczników. Szczytuje tylko wybraną zawartość
portalu w sposób odpowiednio przygotowany.
22. 3
4.ZASADA DZIAŁANIA ORAZ OPIS SYSTEMU
4.1. Wprowadzenie
Na cały system składa się wiele różnych technologii, które współpracują ze sobą. Ich połączenie
wymusiło utworzenie wielu warstw z wieloma współzależnościami. W celu obsłużenia wielu
użytkowników jednocześnie cały system w kluczowych elementach został podzielony na osobne
wątki, tak aby jeden użytkownik nie musiał czekać na zakończenie operacji związanej z obsługą
innych użytkowników. Całe rozwiązanie zostanie przedstawione w kolejnych podrozdziałach.
4.2. Architektura systemu
Ogólna architektura systemu została przedstawiona na rys. 3.1. Na rysunku możemy zauważyć,
iż cały system jest mocno rozproszony i dzieli się na poszczególne moduły,
które są odpowiedzialne za swoją część. W ten sposób cały projekt został podzielony na
mniejsze części, które mogą być niezależnie zarządzane.
23. 3. Zasada działania oraz opis systemu 23
Rys. 3.1. Ogólna architektura systemu.
Wydzielamy tu część kliencką oznaczoną kolorem błękitnym która jest środowiskiem pracy,
które w danym momencie posiada użytkownik systemu. Część kliencka odpowiada
za komunikację z serwerem, przydzieleniem uprawnień do mikrofonu i głośników,
wygenerowaniem unikalnego identyfikatora dla klienta, który następnie jest wykorzystywany
przez serwer do jego identyfikacji. Także w tej części użytkownik ma kontakt z systemem,
obserwuje wizualnie Awatara, wydaje komendy oraz słucha systemu. Tutaj także znajduje się
aktualna wizualizacja stanu Awatara w postaci wykresu słupkowego oraz konsola logów
z całego systemu, w której użytkownik monitoruje stan platformy w danym momencie.
Po stronie klienta przechowywany jest aktualny stan Awatara unikalny dla każdego
użytkownika, jednak jest on przypisany na stałe do danego komputera, a czasem przeglądarki.
Tak więc po powrocie do systemu w późniejszym czasie na danym komputerze następuje
odczytanie stanu Awatara, który na stałe zachowany jest na dysku użytkownika w postaci
obiektu współdzielonego (ang. Shared Object). Także tutaj użytkownik ma dostęp do ustawień,
które są przechowywane w obiekcie współdzielonym (ang. Shared Object). Ustawienia
te pozwalają na włączenie lub wyłączenie odświeżania stanu Awatara oraz włączenie/wyłączenie
wyświetlania konsoli logowania w portalu internetowym. Ustawienia te powalają zwiększyć
wydajność pracy aplikacji klienta. W ustawieniach można także zdefiniować adres serwera
mowy, który odpowiada za całą dalszą pracę systemu1
.
Część serwerowa została oznaczona kolorem zielonym. Fizycznie część ta podzielona
jest na dwa serwery: serwer mowy jest serwerem czasu rzeczywistego, jest to serwer Red5 RC
1.0, który opiera się na platformie Apache Tomcat 6 działający na porcie 8080 dla protokołu
HTML oraz na porcie 1935 dla protokołu RTMP, drugim serwerem jest Oracle WebLogic 11g
1
W końcowej fazie pracy nad systemem opcja ta została domyślnie wyłączona.
24. 3. Zasada działania oraz opis systemu 24
na którym działa „Mózg” systemu, część administracyjna oraz portal demonstracyjny. Sewer
standardowo działa na porcie 7001 dla protokołu HTML.
Serwer mowy jest kluczowym elementem całego systemu, zwyczajowo nazywany
„serwerem” niniejszego systemu. To bezpośrednio z nim komunikuje się klient (w zasadzie
użytkownik systemu). Serwer ten wydziela dalszą interakcję z użytkownikiem. Na serwerze
tym zostały utworzone moduły generowania i syntezy mowy, klienta mózgu, obsługi i konwersji
danych audio przesyłanych w czasie rzeczywistym. Także w tym miejscu znajduje się lista słów
i komend rozpoznawalnych przez system w formacie JSGF (ang. Java Speech Grammar
Format). W tym miejscu mamy konfiguracje systemów rozpoznawania i syntezy mowy
w formatach zdefiniowanych przez specyfikacje bibliotek FreeTTS oraz Sphinx4.
Wykonany serwer mowy posiada architekturę wielo-wątkową2
(ang. Multithreading),
tak więc każde żądanie nowego klienta obsługiwane jest w nowym wątku. Konwersje formatów
danych audio są także wykonywane wielo wątkowo. Rozpoznanie komendy głosowej
z wygenerowaniem odpowiedzi również zachodzi w osobnym wątku.
Wiele operacji w serwerze zachodzi w oparciu o zdarzenia (ang. Events). Dotyczy
to obsługi komunikacji serwera z klientem podczas wymienianych komunikatów, konwersji
plików audio oraz obsługi wymiany danych audio w czasie rzeczywistym.
Serwer mowy wykorzystuje bibliotekę Xuggler do konwersji formatów audio. Biblioteka
ta jest zainstalowana na serwerze w systemie operacyjnym, natomiast sam system korzysta z niej
poprzez referencję. Standardowo serwer Red5 nagrywa dane audio w formacie .flv (ang. Flash
Video) które są następnie konwertowane do formatu .wav (ang. Wave form audio format)
poprzez napisany konwerter wykorzystujący bibliotekę Xuggler, który jest już zrozumiały
dla systemu rozpoznawania mowy. Natomiast generator mowy generuje mowę w formacie .wav,
który jest zbyt duży do przesłania do użytkownika, a także nie jest standardowo obsługiwany
przez serwer Red5 tak więc jest on konwertowany do formatu .mp3 (ang. MPEG-1/MPEG-2
Audio Layer 3), który jest już kilka do kilkunastu razy mniejszy oraz możliwy do odtworzenia
w czasie rzeczywistym przez klienta.
Mózg jest drugim serwerem, który odpowiada za logikę aplikacji. Komunikuje się
on bezpośrednio i wyłącznie z systemem mowy, od którego dostaje komendę użytkownika
w postaci tekstowej, identyfikator klienta oraz stan Awatara oraz zwraca akcję do wykonania
przez klienta wraz z komendą zmiany stanu Awatara lub wykonania przekierowania do innej
strony w portalu internetowym. Komunikacja systemu mowy następuje poprzez klienta Mózgu,
który komunikuje serwer mowy z „Mózgiem” poprzez protokół SOAP przy wykorzystaniu
dokumentu WSDL w technologii rozproszonej SOA. To rozwiązanie umożliwia łatwe
dodawanie nowych implementacji Mózgu oraz przełączanie ich w czasie działania aplikacji.
Mózg na podstawie otrzymanych danych i przetworzeniu posiadanych decyduje o wykonanej
interakcji w portalu internetowym za pośrednictwem serwera mowy, który dodatkowo może
wygenerować komunikaty głosowe dla użytkownika oraz przesłać komunikaty zmiany stanu
Awatara lub zadecydować o wykonaniu przekierowania użytkownika do innej strony na portalu
internetowym.
Oba serwery działają w technologii Java. Wyłącznie Mózg komunikuje się z bazą danych
poprzez fasadę, obiekt typu EJB Stateless Bean wykorzystując Framework JPA i zdefiniowane
źródło danych (ang. Data Source) po stronie serwera oraz mapowanie ORM (ang. Object-
relational maping) dzięki wykorzystaniu encji (ang. Entities). Zastosowaną bazą danych jest
2
Architektura wielo-wątkowa pozwala na równoległą realizację żądań wielu użytkowników równocześnie.
Najczęściej żądania są rozdzielane równomiernie na dostępne procesory i rdzenie dzięki czemu wykonywane
operacje powinny odbywać się szybciej (choć nie zawsze, jeżeli liczba wątków jest zbyt duża) i powinny pozwolić
na wykonanie danej operacji przez nowego użytkownika bez potrzeby oczekiwania na zakończenie wykonywanych
operacji przez innych użytkowników (jednak w praktyce nie zawsze tak jest, jest to zależne od wykonanej
implementacji).
25. 3. Zasada działania oraz opis systemu 25
baza danych Oracle XE 11g, która przechowuje wcześniej przygotowaną zawartość portalu
internetowego oraz treść komunikatów generowanych dla użytkownika.
Nad zapełnieniem bazy danych oraz przygotowaniem w niej danych odpowiada część
Administratora, która szczytuje zawartość portalu na podstawie jego mapy strony (ang. Sitemap)
oraz wcześniej przygotowanym znacznikom mowy (ang. Tags). Moduł ten jest całkowicie
niezależny od pozostałej części systemu, zapewnia on możliwość do podglądu wygenerowanych
danych, wygenerowaniu nowych danych oraz możliwość edycji generowanych komunikatów
dla użytkownika.
Klient łączy się z częścią serwerową za pośrednictwem protokołów RTMP i AMF (ang. Action
Message Format). Za pomocą protokołu RTMP przesyłany jest wyłącznie sygnał audio w czasie
rzeczywistym bez potrzeby przesyłania całego materiału w całości3
. Natomiast protokół AMF
służy wyłącznie do wymiany komunikatów pomiędzy serwerem a klientem. Komunikaty
te zawierają informacje typu: stan Awatara, komendy tekstowe przesyłane do serwera w postaci
czytelnego tekstu, informacje zwrotne dla klienta kiedy czeka na niego wiadomość
do odsłuchania, komunikaty logów4
ze strony serwera itp. Klient-serwer komunikują się ze sobą
wyłącznie za pośrednictwem tych dwóch protokołów.
Serwer mowy komunikuje się z Mózgiem za pośrednictwem protokołu SOAP
w technologii rozproszonej SOA. Wyłącznie Mózg komunikuje się z bazą danych. W ten sposób
zostały jasno wyznaczone warstwy systemu.
4.3. Algorytm działania systemu
System posiada budowę modułową, tak więc możemy wyróżnić wiele algorytmów działania
systemu. W poniższym opisie została pominięta obsługa sytuacji awaryjnych, która została
zaimplementowana przez system. Jednak niniejszy rozdział skupia się na poprawnym
i przewidzianym funkcjonowaniu systemu. Opis ten nie obejmuje także opisu sytuacji logowania
wykonywanych operacji, ponieważ są one wykonywane we wszystkich istotnych częściach
systemu5
.
4.3.1. Przygotowanie systemu mowy
Do poprawnego działania systemu wymagane jest przygotowanie i inicjalizacja serwera mowy.
Podczas startu serwera inicjalizowany jest system mowy i sam serwer czasu rzeczywistego.
Inicjalizacja serwera mowy polega na załadowaniu i wybraniu głosu (w naszym przypadku jest
to głos męski o nazwie „kevin16”, gdzie 16 oznacza 16kHz próbkowanie, czyli głos
o najwyższej jakości dostępny jako Open Soure), rezerwacji zasobów sprzętowych
wykorzystywanych podczas generowania mowy oraz samo przypisanie generatora do systemu
mowy. Kolejnym kluczowym elementem, który inicjalizowany jest podczas startu serwera jest
to inicjalizacja systemu rozpoznawania mowy. W pierwszej kolejności następuje
skonfigurowanie systemu poprzez załadowanie pliku konfiguracyjnego „config,xml”.
Plik ten przede wszystkim wczytuje listę słów w formacie JSGF (znajdująca się w pliku
„hello.gram”) i komend do rozpoznania przy uwzględnieniu danej rozdzielczości sygnału audio
(w naszym przypadku system został skonfigurowany do wykorzystania najwyższej dostpnej
3
Protokół RTMP w odróżnieniu od innych protokołów naprawdę przesyła dane w czasie rzeczywistym. Inne
protokoły najczęściej „udają”, że przesyłają materiał czasie rzeczywistym, lecz np. przesyłają go w partiach,
a nie bit po bicie jak dzieje się to w przypadku wykorzystania protokołu RTMP.
4
Komunikaty te informują klienta co dzieje się po stronie serwera. W przypadku jakichkolwiek problemów
po stronie serwera klient jest informowany o tym fakcie.
5
Obsługę błędów jak i system logów można prześledzić w załączonym kodzie źródłowym.
26. 3. Zasada działania oraz opis systemu 26
jakości sygnału audio), model akustyczny oraz inne ustawienia wykorzystywane podczas
rozpoznawania mowy. Następnie alokowane są zasoby systemowe niezbędne
do przeprowadzenia procesu rozpoznania mowy. W ten sposób system mowy zostaje
uruchomiony. Bez poprawnego wykonania inicjalizacji powyższych elementów system
nie zadziała w ogóle. Powyższe działania zostają wykonane jednorazowo.
4.3.2. Podłączenie klienta
Interakcja po stronie użytkownika następuje już w momencie otworzenia strony portalu
internetowego. W pierwszym momencie po stronie portalu zostaje wygenerowany unikalny
identyfikator użytkownika, który wykorzystywany jest w połączeniach klienta z serwerem.
Następnie zostaje załadowany klient w technologii Flex poprzez wtyczkę przeglądarki
internetowej Adobe Flash. Klient w momencie startu dokonuje załadowania postaci graficznej
Awatara wykonanej w technologii Adobe Flash oraz odczytuje identyfikator klienta
wygenerowany przez portal internetowy. Potem następuje inicjalizacja klienta, która uwzględnia
utworzenie specjalnej wersji systemu logowania aplikacji klienta, która wysyła logi aplikacji
dla użytkownika za pośrednictwem interfejsu zewnętrznego (ang. ExternalInterface)
za pośrednictwem języka Java Script oraz dzieli logi na podstawowe kategorie. Kolejno
utworzony jest lub wczytany współdzielony obiekt (ang. Shared Object) ustawień danego klienta
oraz otwierany lub nie w zależności od ustawień panel logów po stronie portalu internetowego
(dzięki tej operacji użytkownik ma możliwość na bieżąco śledzenia kolejnych zdarzeń, które
zachodzą w całym systemie oraz w przypadku wystąpienia błędu jest o tym informowany
na bieżąco). W następnej kolejności zostaje zarezerwowany mikrofon do wykorzystania
w systemie (tutaj następuje weryfikacja, czy użytkownik zezwolił aplikacji na wykorzystanie
mikrofonu przez aplikację). W tym momencie następuje wczytanie pozostałych ustawień klienta
zapisanych w obiekcie współdzielonym6
. Po wczytaniu ustawień zostaje albo utworzony
standardowy stan Awatara lub zostaje on odtworzony z obiektu współdzielonego. Następnym
krokiem jest przygotowanie klienta do wymiany komunikatów z serwerem, w tym tych
wysyłanych i odbieranych. Po wykonaniu tych wszystkich czynności Awatar zostaje ożywiony,
tzn. zostaje on poddany normalizacji czyli powrotu do stanu normalnego7
.
Po przygotowaniu klienta8
następuje połączenie klienta z serwerem. Obsługa połączenia
po stronie klienta następuję w trybie zdarzeniowym (ang. Events). Po wysłaniu żądania
połączenia z serwerem, serwer podejmuje próbę połączenia z klientem w osobnym wątku. Klient
wysyła swój identyfikator do serwera, który jest zapisany w atrybucie klienta po stronie serwera
do jego dalszej identyfikacji. W pierwszym momencie po stronie serwera następuje weryfikacja,
czy łączący się klient czasem nie jest już połączony z serwerem w innym żądaniu9
(np. w innej
zakładce przeglądarki lub w wyniku po prostu przejścia na inną stronę portalu internetowego).
Jeżeli klient jest już połączony to następuje jego scalenie „sesji” z obecnie zapisaną w liście
6
W ten sposób została zapewniona możliwość np. przesłania dodatkowych parametrów do systemu, np. naszego
imienia. Jednak ta wersja systemu nie korzysta z takiego rozwiązania.
7
Normalizacja czyli funkcja zapominania stanu Awatara ze względu na optymalizację wydajności całego systemu
została wykonana wyłącznie po stronie klienta. Zamiast obciążać klienta częstym przesyłaniem informacji o stanie
Awatara np. raz na sekundę, to czynność ta została całkowicie wykonana po stronie klienta. Jeżeli weźmiemy pod
uwagę pracę z wieloma klientami jest to znaczne odciążenie zarówno klienta jak i serwera odnośnie dodatkowej
obsługi każdego takiego żądania kosztem większego skomplikowania systemu.
8
Przedstawione przygotowanie klienta występuje po każdorazowym odwiedzeniu strony w portalu internetowym.
9
Tutaj sytuacja trochę się komplikuje ponieważ połączenie klient-serwer w prezentowanym systemie nie jest
połączeniem sesyjnym. O zapewnieniu trwałości połączenia system musi sam zdecydować, nie dzieje się
to automatycznie ze względu na to iż aplikacje Flex są bezstanowe w momencie przejścia do innej strony
internatowej lub jej przeładowania.
27. 3. Zasada działania oraz opis systemu 27
klientów aktualnie połączonych10
, w przeciwnym razie zostaje klient dodany do listy nowych
klientów aktualnie połączonych z systemem. W przypadku sukcesu połączenia i w zależności
od typu połączenia (nowe lub wznowione) w osobnym wątku zostaje wygenerowana wiadomość
powitalna dla klienta11
. Na koniec zostaje wysłana wiadomość powitalna dla klienta, która jest
wiadomością kontrolną czy funkcjonuje komunikacja dwustronna w obszarze klient-serwer.
Dopiero w tym momencie klient odbiera potwierdzenie połączenia z serwerem i ustawia
swój status połączenia na połączony12
. Jeszcze pozostało zestawienie połączenia gniazda (ang.
Socket), właściwie strumienia danych po protokole RTMP.
W ten sposób klient został połączony i przygotowany do dalszego użycia.
Przebieg algorytmu podłączenia klienta:
1. otworzenie strony internetowej
2. wygenerowanie unikalnego identyfikatora użytkownika
3. załadowanie klienta poprzez wtyczkę flash
4. wczytanie postaci graficznej awatara poprzez klienta
5. odczytanie wygenerowanego identyfikatora poprzez klienta
6. utworzenie systemu logowania po stronie klienta
7. wczytanie lub utworzenie obiektu SO z ustawieniami klienta
8. inicjalizacja mikrofonu jeżeli zezwolono
9. wczytanie ustawień z obiektu SO
10. wczytanie lub utworzenie stanu Awatara
11. przygotowanie komunikacji klient-serwer
12. ożywienie Awatara w proces normalizacji
13. połączenie klienta z serwerem wraz z wysłaniem identyfikatora klienta w nowym wątku
14. zapisanie identyfikatora klienta po stronie serwera
15. weryfikacja czy klient nie jest już połączony z serwerem
16. dodanie lub przekierowanie klienta do listy połączonych z serwerem
17. wygenerowanie wiadomości powitalnej dla klienta w nowym wątku
18. wysłanie wiadomości powitalnej do klienta z informacją, iż został on już połączony
19. serwer wysyła wiadomość do klienta, iż czeka na niego wiadomość do odsłuchania
20. zestawienie połączenia RTMP pomiędzy klientem i serwerem.
10
Połączenie klienta determinowane jest po długości czasu życia sesji po stronie portalu internetowego według
wygenerowanego identyfikatora klienta.
11
Algorytm generowania mowy został opisany w osobnym podrozdziale.
12
W rzeczywistości status connectionStatus otrzymuje wartość true.
28. 3. Zasada działania oraz opis systemu 28
Rys. 3.2. Wykorzystanie wątków podczas inicjalizacji klienta.
Rysunek 3.2 przedstawia sposób wykorzystania wątków podczas inicjalizacji klienta. P0 oznacza
klienta, T0 reprezentuje podłączenie klienta do serwera, każdy klient zostaje obsłużony
w osobnym wątku, następnie T1 oraz T2 przedstawiają wygenerowanie wiadomości powitalnej,
która generowana jest także w osobnych wątkach, aż w końcu wszystkie te komunikaty wracają
z powrotem do klientów.
4.3.3. Wygenerowanie mowy i jej odsłuchanie przez użytkownika
System umożliwia proste wygenerowanie mowy na podstawie przekazanego tekstu lub bardziej
zaawansowane przy wykorzystaniu obiektu złożonego zawierającego stan Awatara.
W zależności od implementacji Mózgu przy wykorzystaniu obiektu złożonego możemy
otrzymać inny wynik wygenerowanej mowy w zależności od aktualnego stanu Awatara a także
system może przekierować nas w inne miejsce w portalu internetowym. Przy wykorzystaniu
prostego tekstu zawsze otrzymamy wygenerowaną mowę do odsłuchania. Ze względu na to
iż obiekt złożony rozszerza wykorzystanie prostego tekstu podczas wygenerowania mowy,
w tym rozdziale tylko ten algorytm zostanie opisany. Schemat wygenerowania komendy
głosowej został przedstawiony na rys. 3.3.
29. 3. Zasada działania oraz opis systemu 29
Rys 3.3. Wygenerowanie odpowiedzi na podstawie komendy głosowej.
Na początku zostaje utworzony obiekt zapytania, który zawiera komendę tekstową
oraz stan Awatara13
. Komenda tekstowa jest tekstem, który ma posłużyć do wygenerowania
mowy. Poprzez klienta obiekt zapytania jest przekazany do Mózgu za pośrednictwem protokołu
SOAP. W samym mózgu zapytanie jest przetwarzane14
. W naszym systemie następuje
porównanie nadesłanej komendy głosowej czy jest ona rozpoznawana przez Mózg. W zależności
od rozpoznanej lub nie komendy następuje przygotowanie odpowiedzi zwrotnej, która zawiera
tekst odpowiedzi pobrany z bazy danych oraz wartości zmiany stanu Awatara w zależności
od kontekstu15
w wartościach względnych16
a także opcjonalnie informację o wymaganym
przekierowania użytkownika na inną stronę portalu internetowego.
Odpowiedź ta jest zwracana z Mózgu do serwera mowy, który na jej podstawie
przygotowuje obiekt odpowiedzi dla klienta, następnie odpowiedź ta przesyłana jest do klienta
i modyfikuje na tej podstawie stan Awatara lub przekierowuje użytkownika na inną stronę
w zależności czy to przekierowanie miało nastąpić, czy też nie.
Równolegle na podstawie wcześniej zapisanego identyfikatora klienta, który zgłosił
żądanie na wygenerowanie mowy rozpoczyna się proces generowania mowy. W tym miejscu
od razu na wstępie zostaje wygenerowany unikalny numer pliku globalny dla całego serwera
mowy, który będzie wykorzystany do zapisania wygenerowanej mowy poprzez wykorzystanie
13
Zwyczajowo stan Awatara jest bezpośrednio pobierany od klienta przed samym wysłaniem zapytania do Mózgu.
W celu pobrania odpowiedniego stanu Awatara klient jest wcześniej odpowiednio identyfikowany, zaś samo
pobranie stanu zostaje wykonane za pośrednictwem protokołu AMF.
14
W zależności od implementacji Mózgu wynik może być zupełnie odmienny.
15
Kontekst jest definiowany i pobierany przez Mózg systemu.
16
Są to wartości, które są dodawane do stanu Awatara (mogą być także wartościami ujemnymi).
30. 3. Zasada działania oraz opis systemu 30
własnej implementacji modułu zapisu wygenerowanej mowy do pliku. Z syntezatora mowy
zostaje pobrany odtwarzacz, który zostaje przekierowany do pliku. Zostaje wygenerowana
mowa, która zostaje zapisana do pliku .wav, który jeszcze nie nadaje się do przesłania do klienta.
W tym miejscu nowo wygenerowany plik zostaje przekonwertowany na podstawie
implementacji konwertera biblioteki Xlugger z formatu .wav do formatu .mp3. Konwersja
ta zawsze przebiega w nowym wątku. Konwerter sprawdza czy na podstawie
przekonwertowanego pliku ma nastąpić rozpoznanie komendy i wykonanie akcji17
. W przypadku
zwykłej konwersji do tej czynności nie dochodzi wcale. Jest ona zarezerwowana dla obsłużenia
komend głosowych wydanych bezpośrednio po stronie klienta.
Po wygenerowaniu pliku mowy i przekonwertowaniu go do formatu umożliwiającego
jego odtworzenie w czasie rzeczywistym zostaje wysłana komenda odtwórz wiadomość w raz
z nazwą pliku do odtworzenia dla klienta zgłaszającego prośbę o wygenerowanie mowy.
W tym momencie klient otrzymawszy taką wiadomość, sprawdza czy połączenie
z serwerem i gniazdem jest już gotowe. Jeżeli jest już gotowe to następuje odtworzenie
wygenerowanej mowy w czasie rzeczywistym. W przeciwnym wypadku zgłoszenie zostaje
zapisane po stronie klienta, który ponawia 5-cio krotnie próbę otworzenia oczekującej
wiadomości co 0,5s. Po tym czasie próba odtworzenia wiadomości zostaje zaniechana,
a klientowi zostaje przekazany komunikat o błędzie w konsoli logowania.
Przebieg algorytmu generowania mowy:
1. utworzenie obiektu zapytania zawierającego tekst mowy do wygenerowania oraz stan
awatara (stan pobierany jest od klienta tuż przed samym wysłaniem żądania do Mózgu)
2. przesłanie zapytania do Mózgu za pośrednictwem protokołu SOAP
3. rozpoznanie nadesłanej komendy
4. pobranie tekstu odpowiedzi z bazy danych
5. obliczenie wymaganej zmiany stanu Awatara
6. przygotowanie strony przekierowania o ile zajdzie taka potrzeba
7. wygenerowanie odpowiedzi zwrotnej
8. przekazanie odpowiedzi z Mózgu do serwera mowy
9. utworzenie komunikatu zwrotnego dla klienta
10. przesłanie komunikatu zwrotnego do klienta
11. zmiana stanu Awatara po stronie klienta
12. przekierowanie użytkownika na inną stronę o ile zajdzie taka potrzeba
13. wygenerowanie unikalnego w skali serwera mowy identyfikatora pliku
14. utworzenie pliku .wav zawierającego odpowiedź audio dla klienta
15. w nowym wątku następuje konwersja pliku .wav na plik .mp3
16. opcjonalnie następuje tu wykrycie komendy oraz wykonanie akcji na tej podstawie
17. wysłanie komendy odtwórz oczekującą wiadomość do klienta
18. klient weryfikuje czy podłączenie RTMP z serwerem jest już gotowe
19. następuje 5-cio krotna próba odtworzenia oczekującej wiadomości w czasie
rzeczywistym.
17
Jest to uniwersalne rozwiązanie pozwalające usprwanić proces dalszej analizy i obróbki uzyskanego materiału
audio. Rozpoznanie komendy i wykonanie akcji występuje wyłącznie w momencie, gdy komenda ta została
zgłoszona bezpośrednio ze strony klienta poprzez protokół czasu rzeczywistego RTMP. W innym wypadku nie jest
ona w ogóle wykorzystywana.
31. 3. Zasada działania oraz opis systemu 31
Rys. 3.4. Wykorzystanie wątków podczas generowania mowy.
Rysunek 3.4 przedstawia sposób wykorzystania wątków podczas generowania mowy.
P0 oznacza zgłoszenie pliku oczekującego na konwersję, T0 reprezentuje konwersję pliku .wav
na .mp3. Każdy plik zostaje obsłużony w osobnym wątku, następnie następuję przesłanie
odpowiedzi iż pliki zostały przekonwertowane dla swoich „zleceniodawców”.
4.3.4. Rozpoznanie wydanej komendy głosowej
Rozpoznanie komendy głosowej rozpoczyna się w momencie wciśnięcia i przytrzymania
przycisku „Speak” w kliencie przy postaci Awatara. W tym momencie następuje nagranie
materiału jeszcze audio/video na serwerze18
w czasie rzeczywistym pod wysłaną nazwą klienta.
Podczas tej operacji serwer przechwytuje materiał audio/video i zapisuje go na dysku komputera.
W momencie odpuszczenia przycisku przez użytkownika jest wysyłany komunikat o ukończeniu
nagrywania do serwera. Teraz w nowym wątku po stronie serwera następuje konwersja pliku .flv
do pliku .wav za pośrednictwem implementacji bibloteki Xuggler19
a następnie rozpoznanie
komendy i wykonanie akcji opisanej w poprzednim podrozdziale.
Przebieg algorytmu rozpoznania mowy:
1. rozpoczęcie procesu rozpoznania mowy następuje z chwilą wciśnięcia przycisku „Speak”
po stronie klienta
2. następuje nagrywanie materiału audio/video po stronie serwera w czasie rzeczywistym
3. odpuszczenie przycisku „Speak” po stronie klienta powoduje wysłanie komunikatu
do serwera o zakończeniu procesu nagrywania
18
Serwer Red5 umożliwia wyłącznie nagrywanie materiału audio/video w czasie rzeczywistym.
19
Operacja ta została opisana w rozdziale „Wygenerowanie mowy i jej odsłuchanie przez użytkownika”.
32. 3. Zasada działania oraz opis systemu 32
4. w nowym wątku rozpoczyna się konwersja formatu .flv do pliku .wav
5. teraz następuje rozpoznanie komendy z otrzymanego pliku .wav
6. na tej podstawie wysyłana jest wiadomość do Mózgu a następnie występują czynności
opisane w poprzednim podrozdziale.
Wykorzystanie wątków w tym procesie jest analogiczne jak przy procesie generowania mowy.
4.3.5. Mózg
System ten został wyposażony w bardzo prostą implementację Mózgu, która porównuje
otrzymane komendy do tych zapisanych we własnej pamięci i na tej podstawie wykonuje
przypisane operacje. Mózg otrzymuj kontekst danego użytkownika składający się z chwilowego
stanu (emocji) Awatara, aktualnej strony WWW, z której przyszło dane żądanie oraz
z komunikatu tekstowego. Na bazie kontekstu i rozpoznanej komendy z komunikatu tekstowego
generowana jest na sztywno odpowiedź, która zawiera pobraną z bazy danych komendę
głosową, polecenie i adres przekierowania użytkownika do innej strony internetowej oraz
zmianę stanu (emocji) Awatara. Zmiana stanu Awatara w tej implementacji Mózgu polega
na jego zmianie w losowej wartości zmiany w określonym zakresie20
.
4.3.6. Stan (emocje)
Awatar wyposażony jest w samoistną świadomość wyposażoną w mechanizm „zapominania”,
który działa wyłącznie po stronie klienta i doprowadza stan (emocje) do stanu
znormalizowanego. Stan Awatara przechowywany jest na komputerze klienta i zapamiętywany
jest nie tylko poprzez daną sesję użytkownika (które de facto nie wymaga chociażby
zalogowania się do systemu), ale pamiętany jest od czasu ostatnich odwiedzin portalu
internetowego. Pamięć ta opiera się na mechanizmie Shared Object platformy Adobe Flash,
który w uproszczeniu21
jest odpowiednikiem pliku ciasteczka (ang. cookie).
Na bazie aktualnego stanu Mózg jest w stanie wygenerować inną odpowiedź,
która spowoduje odmienne zachowanie się Awatara oraz zmieni modulację jego głosu22
.
Graficzna postać Awatara jest animowana23
na bazie stanu w sposób ciągły (patrz rys. 3.5),
natomiast komenda głosowa w całości uwzględnia stan z momentu jej wygenerowania.
Rys. 3.5. Animacja postaci Awatara w zależności od stanu (emocji).
20
Dzięki aktualnej implementacji możemy określić zachowania Awatara jako nieobliczalne. Jednak jest to tylko
i wyłącznie kwestią implementacji Mózgu.
21
Tak naprawdę Shared Object jest obiektem o wiele bardziej zaawansowanym niż ciasteczko.
22
Modulacja zawiera zmianę szybkości mówienia, częstotliwości oraz wysokości głosu.
23
Animacja uwzględnia powiększenie oraz pomniejszenie źrenic, zmianę kolorystyki twarzy oraz zmianę tępa
animacji mowy w momencie, gdy Awatar nam odpowiada.
33. 3. Zasada działania oraz opis systemu 33
4.4. Opis wyników
Pierwsze testy integralne całego systemu wykazały jego stabilną pracę. Jednak wykorzystane
biblioteki rozpoznawania i syntezy mowy, pomimo iż zostały wykorzystane ich najbardziej
dopracowane biblioteki w wersji Open Source pozostawiają jeszcze wiele do życzenia. Jakość
wygenerowanej mowy nie jest wysokiej jakości, a sam system rozpoznawania mowy
charakteryzuje się wysokim progiem błędów, przez co wydawane komendy są źle
interpretowane. Biblioteki te są stale rozwijane, jednak tempo ich rozwoju nie jest zbyt wielkie,
lecz gdy pojawią się ich lepsze odpowiedniki będzie można je podmienić w systemie.
4.5. Struktura oprogramowania
Tak jak zostało to już wcześniej wielokrotnie napisane cały system został wykonany jako zbiór
wielu modułów wymienionych w tab. 3.1. Każdy moduł jest niezależnym projektem. Wszystkie
kluczowe moduły posiadają oddzielne aplikacje testujące.
Tab. 3.1. Moduły systemu.
l.p. moduł technologia opis
1. Administrator Java, JSF, EJB, JSoup,
HTML, JAAS
część administracyjna
2. AdministratorTest Java, Junit testy jednostkowe
3. Avatar Flash, AS postać Awatara
4. BrainService Java, EJB, WSDL,
WSDL, Web-Service,
SOA
Mózg
5. BrainServiceClient Java, Web-Service,
SOA
klient Mózgu
6. BrainServiceClientTest Java, Junit testy jednostkowe
7. PortalPG Java, JSF, HTML, JS,
CSS
portal demonstracyjny
8. SpeechAvatar Flex, AS, MXML,
RTMP, AMF
klient
9. SpeechModel Java, JPA, EJB, Entity,
ORM
odwzorowanie bazy danych,
model danych oraz fasada
10. SpeechModelTest Java, Junit testy jednostkowe
11. SpeechServer Java, Spring, Injection,
RTMP, AMF
serwer mowy
12. SpeechServerTest Java, Junit testy jednostkowe
13. Baza danych Oracle, SQL baza danych
Następujące moduły składają się na systsem:
Administrator
BrainService
PortalPG
SpeechModel
34. 3. Zasada działania oraz opis systemu 34
4.6. Podsumowanie
Jak zostało to przedstawione w tym rozdziale architektura systemu jest mocno rozproszona.
Praktycznie każdy moduł może istnieć niezależnie, jednak wszystkie moduły razem wzięte
tworzą pełną platformę. Taka budowa zapewnia dobrą rozbudowę systemu.
35. 4
5.REALIZACJA PRACY
5.1. Wprowadzenie
W momencie realizacji niniejszego projektu posiadałem już wieloletnie doświadczenie
w programowaniu głównie systemów internetowych w różnych technologiach, w tym systemów
rozproszonych oraz korporacyjnych. Dzięki temu swobodnie mogłem skupić się na sposobie
implementacji technologii Speech (rozpoznawania i syntezy mowy) dla celów komunikacji
użytkownika z systemem za jej pośrednictwem w portalu internetowym. Technologia ta jest
dla mnie pewnym nowym wyzwaniem, które zamierzam zrealizować. Na chwilę obecną nie ma
żadnych gotowych samouczków czy pomocy naukowych które opisały by sposób wykonania
takiego systemu. Do dyspozycji mamy odrębne elementy opisane osobno, które należy zmusić
do współpracy ze sobą w pewnych określonych warunkach (w naszym przypadku chodzi
o zastosowanie klient-serwer, z wykorzystaniem dodatkowych zasobów po stronie klienta co jest
dodatkowym utrudnieniem).
Realizacja całego projektu przebiegała przy ciągłej współpracy i pod nadzorem Pana
prof. dr hab. inż. Zdzisław Kowalczuk, który wyznaczył kierunek wykonanej pracy oraz czuwał
nad tym aby nie był to projekt zamknięty, ale mógł być kontynuowany przez kolejne lata
na uczelni.
Wykonanie pracy zostało podzielone na kilka kluczowych etapów opisanych poniżej.
Wyszczególnione etapy zostały wyodrębnione na bazie poszczególnych funkcji bądź założeń,
które nie koniecznie zostały wykonane w opisanej kolejności, a często były tworzone
równorzędnie.
Etapy realizacji projektu:
1. zapoznanie się z technologią Speech oraz AI
2. wykonanie systemu analizy serwisu
3. system generowania oraz rozpoznawania mowy
4. silnik AI wraz z inicjacją "świadomości" bota oraz z implementacją 4 stanów emocji
5. stworzenie prostej graficznej postaci Awatara komunikującej się z silnikiem AI
36. 4. Realizacja pracy 36
6. utworzenie demonstracyjnego serwisu z implementacją postaci Awatara
7. przygotowanie odpowiedniej dokumentacji.
5.2. Testowanie platformy
Podstawową techniką testowania systemu jest wykorzystanie jednostek testowych, które
weryfikują cząstkowe działanie systemu. System powstawał krok po kroku, z małego rozwinął
się w duży wykonując testy użytkownika podczas jego działania. Skala złożoności i zależności
systemu jest tak duża, że do pomocy został wykonany specjalny system logowania, który
informuje użytkownika o pracy całego systemu umożliwiając wykrycie różnego rodzaju
dolegliwości i problemów w systemie, którego przetestowanie jest o tyle skomplikowane,
iż opiera się na mowie, stanie Awatara, który nie bazuje na sesji a dodatkowo rozproszony jest
na wiele pod stron, niezależnych żądań przekierowań, ale jednak tworzących pewną całość,
która była testowana poprzez użytkownika systemu.
5.3. Omówienie sposobów rozwiązania problemów
Głównym problemem, który pojawił się na początku było spasowanie i dobór istniejących
technologii do wykonanego projektu. Nadrzędnym celem jest uzyskanie wysokiej jakości
produktu przy wykorzystaniu technologii Open Source, tak aby projekt mógł być dalej rozwijany
przez uczelnie. Tak więc po wybraniu kluczowych technologii rozpoznawania i syntezy mowy
nastąpiło pasowanie do nich technologii pomocniczych. Tutaj pojawiły się już pierwsze
ograniczenia, które wskazały jakie formaty danych są obsługiwane przez powyższe technologie.
W tym momencie nastąpiło poszukiwanie technologii wspierających
Możliwość pracy rozproszonej dodatkowo komplikuje sam fakt dostępu do zasobów
komputera użytkownika (mikrofonu i głośników), który domyślnie jest zablokowany. W tym
celu została wykorzystała wykorzystana technologia Adobe Flex, która daje dostęp
do wymaganych zasobów.
5.4. Podsumowanie
W informatyce mówi się, że po wykonaniu 80% projektu do jego ukończenia pozostało
pozostałe 90%, co miało miejsce także i w tym projekcie. Projekt był nowatorski, wiele się
z niego nauczyłem, bardzo mnie rozwinął, pokonałem w nim wiele przeszkód i rozwiązałem
wiele problemów.
37. 5
6.MOŻLIWOŚCI ROZWOJU SYSTEMU
6.1. Wprowadzenie
We wczesnym etapie planowania projektu jednym z jego głównych elementów było wymaganie,
które mówiło iż projekt powinien być dalej rozwijany po jego ukończeniu. Zostało jasno
powiedziane, iż należy go tak przygotować, aby potem można było go w prosty sposób rozwijać
i podzielić jego dalszą pracę nad nim nad poszczególnymi modułami. I tak też się stało.
6.2. Rozwój klienta
System można wzbogacić o dodatkowe możliwości konfiguracyjne dla użytkownika.
Użytkownik mógłby podać swoje imię lub inne dane, które były by uwzględniane podczas
dalszej interakcji z systemem. Można by dać możliwość wyboru postaci Awatara, głosu przez
niego używanego oraz np. możliwości zmiany Mózgu, która charakteryzowała by się całkowicie
odmienną pracą systemu.
6.3. Rozwój systemu generowania mowy
System generowania mowy można wyposażyć w dodatkowe głosy, które mogą być przełączane
po stronie klienta. Istnieje także możliwość, aby utworzyć własne głosy, jest to jednak zadanie
bardzo pracochłonne i obarczone dużym ryzykiem niepowodzenia.
Ogólnie jest możliwość dodania głosów w innych wersjach językowych, jednak w tym
miejscu problemem może okazać się brak możliwości dostosowania systemu rozpoznawania
mowy w tych językach1
.
Istnieje możliwość doposażenia systemu w nowe dodatkowe możliwości sterujące
generacją głosu w rodzaju możliwości sterowania prędkością, wysokością i częstotliwością
1
Problem ten dotyczy sytuacji dnia dzisiejszego.
38. 5. Możliwości rozwoju systemu 38
głosu. Także w tym miejscu można przygotować obsługę poprawnej wymowy znaków
specjalnych, skrótów i innych zapisów specjalnych.
6.4. Rozwój systemu rozpoznawania mowy
System rozpoznawania mowy można wyposażyć w kolejne komendy jeszcze bardziej
zaawansowane oraz o większą ich ilość. Teoretycznie istnieje możliwość nauczenia systemu
do rozpoznawania nowych nazw jeszcze nie zdefiniowanych w istniejących słownikach, co jest
bardzo czasochłonne i obarczone jest dużym ryzykiem niepowadzenia.
Można tutaj pomyśleć o implementacji mechanizmów rozpoznawania ciągłej mowy.
6.5. Rozwój postaci Awatara
Postać Awatara można dopracować graficznie, dopieścić jego animację i reakcję na zmianę
stanu. Można by stworzyć pakiet postaci Awatarów, z których użytkownik mógłby wybrać ten
z którym chciał by się utożsamić.
6.6. Rozwój Mózgu
Rozwój Mózgu daje najwięcej możliwości ponieważ może całkowicie zmienić zachowanie
systemu w danej sytuacji. Można by dodać do Mózgu informacje o danych poczynaniach danego
klienta, np. w celu usunięcia głupich odpowiedzi w nieskończoność typu „Jak się nazywasz?”,
gdzie po kilku takich pytaniach Awatar mógłby zwrócić uwagę klientowi, iż pytał się już
o to wielokrotnie.
Co najważniejsze można by pomyśleć o implementacji autonomicznego umysłu Awatara,
który w określonych warunkach mógłby samodzielnie podejmować decyzję, jak ma to miejsce
np. w Dictobot’cie oraz wiernie zaimplementować jego stan.
6.7. Podsumowanie
Na rynku obecnie nie ma zbyt wiele (o ile istnieją) takich lub podobnych systemów. Warto
podjąć kontynuację niniejszego projektu oraz zbadać i przetestować nowe możliwości, które on
ze sobą niesie.
39. 6
7.PODSUMOWANIE ORAZ WNIOSKI Z PRACY
7.1. Podsumowanie oraz wnioski z pracy
Praca nad systemem była wymagająca, rozwojowa, ale i wciągająca. System który powstał jest
niekonwencjonalny, przełamał wiele barier technologicznych oraz pokazał praktyczne
zastosowanie wielu różnych technologii.
W chwili obecnej nie udało mi się znaleźć żadnego odpowiednika niniejszego systemu1
lub systemu, który w dużej części odpowiadał by obecnej realizacji. Do jego realizacji
poświęciłem naprawdę wiele czasu, wiele nocy nie przespałem, kilka tygodni wolnego z pracy
także zostało spożytkowane w tym celu. Sporą część realizacji zawdzięczam Panu prof. dr hab.
inż. Zdzisław Kowalczuk, który nadał kierunek i pokierował pracą w tę stronę, w której praca
obecnie się znajduje a także poświęcił wiele czasu nad jej realizacją, za co jestem bardzo
wdzięczny.
Wykonanie systemu było dla mnie niezwykle rozwijające, nauczyłem się wiele z samych
technologii informatycznych, ale także poznałem elementy, które nadają „życia” temu
komputerowemu projektowi. Był to czas, którego nie żałuję iż wykorzystałem go w taki a nie
w inny sposób.
Projekt obecnie znajduje się na wstępnej rozwojowej drodze, tak więc nadaje się
on do podjęcia jego rozbudowy i dopracowania, tak aby był w stanie godnym przedstawienia
go szerszemu gronu odbiorców.
1
Mogę z wielką pewnością stwierdzić, iż taki odpowiednik nie istnieje wcale.
40. 40
8.Dodatek 1. Skrótowy opis aplikacji
Tytuł dyplomu
System inteligentnej nawigacji sterowanej głosem po serwisie internetowym.
Cel i przeznaczenie aplikacji
Opracowanie głosowego systemu komunikacji oraz nawigacji po serwisie internetowym. Projekt
zakłada wykonanie portalu testowego, systemu rozpoznawania i generowania mowy, mózgu
systemu oraz postaci Awatara komunikującego się z użytkownikami oraz kierującego ich
po serwisie. System ma być inteligentny w tym znaczeniu, iż Awatar nie będzie nas tylko
słuchał, ale także będzie z nami w dialogu wyrażając się poprzez swoje emocje. Wykonanie
projektu zakłada komunikację w języku angielskim.
Funkcjonalność
Opis realizowanych funkcji
Praca w Internecie bez potrzeby zalogowania się
Równoczesna obsługa wielu użytkowników w osobnych wątkach
Stan Awatara wyposażony w 4 niezależne wartości
Pamięć stanu Awatara
Rozpoznawanie wybranych komend głosowych
Generowanie mowy z uwzględnieniem aktualnego stanu Awatara
Odtwarzanie oraz nagrywanie mowy w czasie rzeczywistym
Konwersja formatów: FLV -> WAV -> MP3 w osobnych wątkach
Funkcjonalny portal demonstracyjny
Panel administratora
Niezależny Mózg systemu generujący mowę, odpowiedź i przekierowanie w zależności
od kontekstu jako Web-Service
Wizualizacja postaci Awatara, który graficznie przedstawia swój stan
Animacja ruchu ust Awatara podczas jego mowy
Prosta implementacja modulacji głosu Awatara w zależności od jego stanu
Możliwość edycji generowanych komunikatów głosowych
Podgląd stanu bazy danych poprzez Panel Administracyjny
Pamięć użytkownika poprzez całą komunikację po portalu (wielo-stronnicowa)
Rozpoznanie czy użytkownik przyszedł po raz pierwszy na Portal
czy powrócił tu ponownie, np. zmieniając wyświetlaną stronę
Przekierowanie na nową stronę portalu na podstawie wydanej komendy głosowej
Głosowa wiadomość powitalna dla każdej pod-strony
Zaawansowany system zdarzeń informacji o pracy całego systemu po stronie
użytkownika, który daje wgląd w pracę całego systemu we wszystkich modułach
Kompresja wygenerowanej mowy w celu przyśpieszenia odtworzenia wiadomości
Zaimplementowana najwyższa jakość generowanego i rozpoznanego głosu, jaki daje
zastosowana biblioteka (zastosowane ustawienia na 16kHz)
Mechanizm kilkukrotnego ponowienia odtworzenia oczekującej wiadomości głosowej
o ile system nie został jeszcze w pełni zainicjalizowany
Osobne przechowywanie plików audio dla wejścia i wyjścia sygnału
41. 41
Funkcja zapominania stanu Awatara po stronie klienta
Opcja nagrywania mowy za pomocą jednego wciśnięcia i przytrzymania przycisku
Zastosowany system znaczników mowy pozwalający na implementację tego systemu
na dowolny Portal Internetowy.
Lista przykładowych zastosowań
Odsłuchiwanie zawartości strony Portalu Internetowego
Umilenie pracy użytkownika
Nawigacja po portalu za pomocą wykorzystania własnego głosu
Zabawa z Awatarem w celu rozpoznania jego emocji poprzez odsłuchiwanie jego mowy
Dialog z Awatarem, po odpowiednim dopracowaniu Mózgu można zrobić z niego tzw.
Zwierzątko, które będzie żyło własnym życiem
Po odpowiednim dopracowaniu inteligentne wyszukiwanie i filtrowanie zawartości
portalu.
Szczegółowe opisy działania aplikacji
Aplikacja jest typu klient-server. Klient jest to część, która znajduje się po stronie użytkownika,
zapewnia ona komunikację z serwerem, jest ona interfejsem użytkownika, który wydaje
komendy głosowe, odsłuchuje komunikaty oraz przedstawia graficzną postać Awatara
zmieniającą się w zależności od swojego stanu. Serwer zajmuje się rozpoznawaniem oraz
generowaniem mowy, obsługą połączeń klientów oraz komunikacją z Mózgiem systemu.
Wykonany system jest platformą, portal demonstracyjny jest jedynie pokazem jego
zastosowania. Z tego względu działanie aplikacji możemy wydzielić na dwie części. Pierwszą
z nich jest wygenerowanie na podstawie wcześniej przygotowanych znaczników mowy
zawartości portalu, która posłuży Mózgowi do odsłuchania (wygenerowania mowy), wyszukania
informacji oraz przekierowania w odpowiednie miejsce portalu. Za tę część odpowiedzialny jest
system znaczników oraz część administracyjna, która generuje treść portalu bazując
na dostarczonym sitemap strony. Generator przechodząc kolejno przez strony zapisane
w sitemap, parsuje je, wyciąga przygotowane informacje oraz w odpowiedni sposób indeksuje
i buforuje dane w bazie danych.
Działanie samego systemu opiera się na samoistnej świadomości Awatara, który
wyposażony jest w mechanizm „zapominania”, który działa wyłącznie po stronie klienta.
Stan Awatara przechowywany jest na komputerze klienta i zapamiętywany jest nie tylko poprzez
daną sesję użytkownika (które de facto nie wymaga chociażby zalogowania się do systemu),
ale pamiętany jest od czasu ostatnich odwiedzin portalu internetowego. Pamięć ta opiera się
na mechanizmie Shared Object platformy Adobe Flash, który w uproszczeniu1
jest
odpowiednikiem pliku ciasteczka (ang. cookie). Użytkownik wchodząc na portal w pierwszej
kolejności zostaje przywitany odpowiednim komunikatem oraz zostaje zapamiętany w systemie,
tak że podczas kolejnej wizyty w trakcie danej sesji zostanie on już w inny sposób obsłużony,
tzn. otrzyma inny komunikat powitalny. Obsługa rozpoznania klienta znajduje się po stronie
Serwera Mowy, który posiada zapisaną listę aktualnie podłączonych klientów.
Podczas każdego załadowania strony następuje inicjalizacja połączenia, każde połączenie
jest weryfikowane czy może zostać obsłużone w kanale RTMP zapewniającym nagrywanie
i odsłuchiwanie komunikatów głosowych w czasie rzeczywistym. Także w tym momencie
następuje rezerwacja mikrofonu oraz zapytanie o zgodę na jego wykorzystanie. Gdy proces
ten przebiegnie pomyślnie Serwer Mowy przesyła dla klienta potwierdzenie, iż połączenie
1
Tak naprawdę Shared Object jest obiektem o wiele bardziej zaawansowanym niż ciasteczko.
42. 42
zostało nawiązane, wówczas klient w odpowiedzi przesyła prośbę o wygenerowanie komunikatu
powitalnego oraz przesyła swój stan (emocje, które w danym momencie mogą być inne niż
domyślne). Na podstawie prośby i stanu Serwer Mowy za pośrednictwem Mózgu generuje
wiadomość powitalną, która na bazie zaktualizowanego stanu Awatara zostaje odpowiednio
zmodulowana2
. Informacja o wygenerowanej i oczekującej wiadomości do odsłuchania zostaje
przesłana dla klienta, który automatycznie odtwarza ją3
. Równocześnie klient otrzymuje
od Mózgu za pośrednictwem serwera mowy bodziec zmieniający stan Awatara (jego emocje),
który zostaje już stopniowo zaktualizowany po stronie klienta4
.
Podobnie ma się sprawa z wysłaniem komendy głosowej, która nagrywana jest podczas
przyciśnięcia i przytrzymania przycisku „Speak”. W tym czasie mowa zostaje bezpośrednio
nagrywana na serwerze mowy. Po zakończeniu nagrywania komendy głosowej, zostaje pobrany
stan Awatara od klienta, z nagranej mowy zostaje rozpoznana komenda głosowa, która
przesyłana zostaje do Mózgu systemu. Mózg posiadając informacje o aktualnym stanie Awatara
generuje odpowiedź, która przekazywana jest do klienta. Odpowiedź zawiera wygenerowany
komunikat głosowy, zmianę stanu Awatara (emocji) oraz ewentualnie adres nowej strony,
na którą klient powinien zostać automatycznie przekierowany.
Architektura sprzętu
Elementy rozpoznawania i generowania mowy wymagają silnego serwera, aby były w stanie
obsłużyć wielu użytkowników równocześnie oraz aby zapewnić krótkie czasy reakcji
na wypowiadane i generowane komendy głosowe. Do pracy z systemem wymaga się komputera
wyposażonego w głośniki i mikrofon, które nie są wymagane po stronie serwera.
Do wykonania systemu korzystałem z dwóch środowisk:
deweloperskie – wyposażone w komputer o procesorze Pentium 4x2.66 GHz oraz 4 GB
RAM, 300 GB HDD
produkcyjne – wyposażone w komputer o procesorze Pentium 4x2.66 GHz oraz 16 GB
RAM, o przepustowości Internetu 100Mbps oraz 2TB HDD
System wymaga silnego serwera oraz dużej przestrzeni dyskowej, ponieważ dla jednego
użytkownika podczas kilku godzin pracy generowanych jest kilkaset megabajtów danych audio
w przeciągu kilku dni5
.
Architektura oprogramowania
Architektura systemu została przedstawiona na rys. 7.1. Cały system został wytworzony
w technologii Java/Flex. Technologia Adobe Flex została wykorzystana do utworzenia klienta,
natomiast część serwerowa została wykonana w technologii Java. Budowa platformy
jest modułowa, umożliwiająca niezależny rozwój i wymianę każdego z modułów.
2
Modulacja polega na zmianie parametrów audio generowanej mowy.
3
Odtworzenie nagranego komunikatu głosowego następuje w czasie rzeczywistym przy wykorzystaniu protokołu
RTMP.
4
Zmiany stanu (emocji) Awatara dokonywane są po stronie klienta na bazie otrzymanych informacji o ile dany stan
(emocja) powinien zostać zmieniony.
5
Do klienta zostaje przesłany materiał w wersji skompresowanej o kilku, a czasem kilkunasto krotnie mniejszej
objętości. Tylko po stronie serwera zostają wygenerowane dane o dostępnej najwyższej jakości danych, które
następnie zostają skompresowane i przekazane dla klienta.
43. 43
Rys. 7.1. Ogólna architektura systemu.
Część kliencka odpowiada za komunikację z serwerem, przydzieleniem uprawnień do mikrofonu
i głośników, wygenerowaniem unikalnego identyfikatora dla klienta, który następnie jest
wykorzystywany przez serwer do jego identyfikacji. Także w tej części użytkownik ma kontakt
z systemem, obserwuje wizualnie postać Awatara, wydaje komendy oraz słucha systemu, tutaj
także znajduje się aktualna wizualizacja stanu Awatara w postaci wykresu słupkowego oraz
konsola logów z całego systemu, w której użytkownik monitoruje stan systemu w danym
momencie. Po stronie klienta przechowywany jest aktualny stan Awatara unikalny dla każdego
użytkownika. jednak jest on przypisany na stałe do danego komputera, a czasem przeglądarki.
Część serwerowa została oznaczona kolorem zielonym. Fizycznie część ta podzielona
jest na dwa serwery: serwer mowy jest serwerem czasu rzeczywistego, jest to serwer Red5 RC
1.0, który opiera się na platformie Apache Tomcat 6 działający na porcie 8080 dla protokołu
HTML oraz na porcie 1935 dla protokołu RTMP, drugim serwerem jest Oracle WebLogic 11g
na którym działa „Mózg” systemu, część administracyjna oraz portal demonstracyjny. Sewer
standardowo działa na porcie 7001 dla protokołu HTML.
Serwer mowy jest kluczowym elementem całego systemu, zwyczajowo nazywany
„serwerem” niniejszego systemu. To bezpośrednio z nim komunikuje się klienta (a w zasadzie
użytkownik systemu). Serwer ten wydziela dalszą interakcję z użytkownikiem. Na serwerze tym
zostały utworzone moduły generowania i syntezy mowy, klienta mózgu, obsługi i konwersji
danych audio przesyłanych w czasie rzeczywistym. Także w tym miejscu znajduje się lista słów
i komend rozpoznawalnych przez system w formacie JSGF (ang. Java Speech Grammar
Format). W tym miejscu mamy konfiguracje systemów rozpoznawania i syntezy mowy
w formatach zdefiniowanych przez specyfikacje bibliotek FreeTTS oraz Sphinx4.
44. 44
Wykonany serwer mowy posiada architekturę wielo-wątkową6
(ang. Multithreading),
tak więc każde żądanie nowego klienta obsługiwane jest w nowym wątku. Konwersje formatów
danych audio są także wykonywane wielo wątkowo. Rozpoznanie komendy głosowej
z wygenerowaniem odpowiedzi również zachodzi w osobnym wątku. Wymienione elementy
posiadają wykonaną własną implementację nie zależną od standardu Javy, która samodzielnie
próbuje dzielić zadania na wiele wątków.
Mózg jest drugim serwerem, który odpowiada za logikę aplikacji. Komunikuje się
on bezpośrednio i wyłącznie z systemem mowy, od którego dostaje komendę użytkownika już
w postaci tekstowej, identyfikator klienta oraz stan Awatara oraz zwraca akcję do wykonania
przez klienta wraz z komendą zmiany stanu Awatara lub wykonania przekierowania do innej
strony w portalu internetowym. Komunikacja systemu mowy następuje poprzez klienta Mózgu,
który komunikuje serwer mowy z „Mózgiem” poprzez protokół SOAP przy wykorzystaniu
dokumentu WSDL w technologii rozproszonej SOA. To rozwiązanie umożliwia łatwe
dodawanie nowych implementacji Mózgu oraz przełączanie ich w czasie działania aplikacji.
Mózg na podstawie otrzymanych danych i przetworzeniu posiadanych decyduje o wykonanej
interakcji w portalu internetowym za pośrednictwem serwera mowy, który dodatkowo może
wygenerować komunikaty głosowe dla użytkownika oraz przesłać komunikaty zmiany stanu
Awatara lub zadecydować o wykonaniu przekierowania użytkownika do innej strony na portalu
internetowym.
Klient łączy się z częścią serwerową za pośrednictwem protokołów RTMP i AMF (ang. Action
Message Format). Za pomocą protokołu RTMP przesyłany jest wyłącznie sygnał audio w czasie
rzeczywistym bez potrzeby przesyłania całego materiału w całości7
. Natomiast protokół AMF
służy wyłącznie do wymiany komunikatów pomiędzy serwerem a klientem. Komunikaty
te zawierają informacje typu: stan Awatara, komendy tekstowe przesyłane do serwera w postaci
czytelnego tekstu, informacje zwrotne dla klienta kiedy czeka na niego wiadomość
do odsłuchania, komunikaty logów8
ze strony serwera itp. Klient-serwer komunikuje się ze sobą
wyłącznie za pośrednictwem tych dwóch protokołów.
Serwer mowy komunikuje się z Mózgiem za pośrednictwem protokołu SOAP
w technologii rozproszonej SOA. Wyłącznie Mózg komunikuje się z bazą danych. W ten sposób
zostały jasno wyznaczone warstwy systemu.
Opis metody wytwarzania aplikacji
Cykl wytworzenia niniejszej aplikacji przedstawia się następująco:
1. zapoznanie się z technologią Speech oraz AI
2. wykonanie systemu analizy serwisu
3. system generowania oraz rozpoznawania mowy
4. silnik AI wraz z inicjacją "świadomości" bota oraz z implementacją 4 stanów emocji
5. stworzenie prostej graficznej postaci Awatara komunikującej się z silnikiem AI
6
Architektura wielo-wątkowa pozwala na równoległą realizację żądań wielu użytkowników równocześnie.
Najczęściej żądania są rozdzielane równomiernie na dostępne procesory i rdzenie dzięki czemu wykonywane
operacje powinny odbywać się szybciej (choć nie zawsze, jeżeli liczba wątków jest zbyt duża) i powinny pozwolić
na wykonanie danej operacji przez nowego użytkownika bez potrzeby oczekiwania na zakończenie wykonywanych
operacji przez innych użytkowników (jednak w praktyce nie zawsze tak jest, jest to zależne od danej
implementacji).
7
Protokół RTMP w odróżnieniu od innych protokołów naprawdę przesyła dane w czasie rzeczywistym. Inne
protokoły najczęściej „udają”, że przesyłają materiał czasie rzeczywistym, lecz np. przesyłają go w partiach, a nie
bit po bicie jak dzieje się to w przypadku wykorzystania protokołu RTMP.
8
Komunikaty te informują klienta co dzieje się po stronie serwera. W przypadku jakichkolwiek problemów
po stronie serwera klient jest informowany o tym fakcie.