Jak wbudować system rozpoznawania mowy SkryBot do własnej aplikacji .NET C# – instrukcja:

Po wielu latach testów i rozwoju SkryBota opisujemy poniżej szczegółowo dla społeczności programistycznej sposoby wykorzystania rozpoznawania mowy we własnych projektach za darmo. Przez połączenie się ze SkryBotem z użyciem .NET – jednak należy pamiętać, że realnie w każdym systemie można realizować użycie rozpoznawania mowy SkryBot. To kwestia użycia innych narzędzi, systemów i języków.

Wprowadzenie

Poniższy opis jest przeznaczony głównie dla programistów .NET, którzy znają język C#.
SkryBot jest oparty o dekoder mowy Julius https://github.com/julius-speech/julius, który został przez nas zmodyfikowany do potrzeb systemu Windows. Silnik dekodera został ‚opakowany’ w osobną bibliotekę DLL o nazwie Skrybot.Decoder.Core.dll. Opisanie wykorzystania tej właśnie biblioteki jest celem poniższego artykułu.

Artykuł ten pokazuje, jak ‚podpiąć’ SkryBota do własnej aplikacji .NET dla systemu Windows. Minimalne wymagania to VS2017 oraz środowisko .NET Framework 4.6. VS2017 można ściągnąć w wersji bezpłatnej ze strony https://www.visualstudio.com/downloads/

Licencjonowanie SkryBota

Korzystanie z biblioteki Skrybot.Decoder.Core.dll jest dozwolone w oparciu o licencję Juliusa https://github.com/julius-speech/julius/blob/master/LICENSE.txt.
Korzystanie z modeli języka PLPL-v7.1 i innych, udostępnionych w ramach kodu źródłowego jest oparte o licencję MIT z zastrzeżeniem, że do zastosowań komercyjnych należy skontaktować się z nami (e-mail lub telefon) i wykupić licencję indywidualnie negocjowaną do określonych zastosowań. W przypadku zastosowań naukowo – badawczych oraz niekomercyjnych (gdy rozpoznawanie mowy nie jest częścią płatnego systemu) modele językowe można używać dowolnie.

Przykład użycia SkryBota C# .NET

  1. Ściągnij kod źródłowy do aplikacji SkryBot DoMowy Demo z adresu https://sourceforge.net/p/skrybotdomowy/code/HEAD/tree/ (można użyć SVN albo pobrać gotowy skompresowany ZIP).
  2. Uruchom plik SkryBot.App.sln.
  3. W trakcie uruchamiania może pojawić się komunikat, że projekt o nazwie Skrybot.App.Installer nie mógł zostać załadowany. W tym celu należy dodać obsługę tego projektu przez menu Tools->Extensions and Updates->Online i wyszukać wpis ‚Microsoft Visual Studio 2017 Installer’ i zainstalować go. Projekt ten nie jest niezbędny do uruchamiania testowej aplikacji, bądź samego SkryBota. Jest to tylko projekt do przygotowania instalatora.
  4. Po prawidłowym załadowaniu Skrybot.App.sln można ściągnąć brakujące pakiety Nuget, klikając prawym klawiszem myszy na Solution Skrybot.App w Solution Explorer. Należy wybrać polecenie ‚Restore Nuget packages’.
  5. Wybierz folder o nazwie Tests i kliknij prawym klawiszem myszy na projekt Skrybot.Decoder.Core.Wrapper.Tests i wybrać polecenie ‚Set as StartUp project’.
  6. VS2017 kliknij prawym klawiszem myszy na Solution i wybierz polecenie ‚Project Dependencies’ i dodaj zależność od Skrybot.Decoder.Server dla projektu Skrybot.Decoder.Core.Wrapper.Tests. To pozwoli na zbudowanie projektu Skrybot.Decoder.Server przed uruchomieniem Skrybot.Decoder.Core.Wrapper.Tests.
  7. Po poprawnym skompilowaniu w trybie Debug, uruchom projekt Skrybot.Decoder.Core.Wrapper.Tests. W konsoli Windows pojawi się dokładny przebieg testu, gdzie dekodowane są pliki WAV z folderu ‚waves’, dostarczone razem z projektem.

Uwaga:

Jednym z elementów składowych dekodera jest uruchamiana równolegle aplikacja samego dekodera nasłuchująca żądań z użyciem gniazdek. Jeżeli Twój komputer zawiera antywirus, ochronę, zaporę, firewall to należy zezwolić programowi o nazwie Skrybot.Decoder.Server.exe na uruchomienie i akceptację danych na gniazdkach.

Jak używać dekodera rozpoznawania mowy Skrybot?

Dekoder działa w procesie Skrybot.Decoder.Server.exe i komunikuje się z klientem za pomocą gniazdek asynchronicznie. Dekodowanie polega na inicjacji dekodera, wysłaniu pliku do dekodera i nasłuchiwaniu na zdarzenia (Events) z asynchronicznymi wynikami dekodowania.

Programista, który przeanalizuje prosty kod dostarczony w klasie projekcie Skrybot.Decoder.Core.Wrapper.Tests, zobaczy następujące elementy:

Załadowanie klasy ConfigurationProxy (do konfiguracji środowiska).
SpeechDecoderManager (do dekodowania i obsługi dekodera) z biblioteki Skrybot.Decoder.Core.Wrapper, implementująca poniższe metody interfejsu ISpeechDecoderManager.
SpeechModelEnum SpeechModel { get; set; }
DecoderStatusEnum GetDecoderStatus();
double DecodingSpeed { get; set; }
void InitializeAsync(Action action);
void StopDecodingAsync();
void PauseDecodingAsync();
void ResumeDecodingAsync();
void QueueRecordingForDecoding(string fullFileName);
void StopMonitoring();
int GetQueueLength();

Menadżer dekodera wymaga inicjalizacji a następnie wykonania metody QueueRecordingForDecoding(), gdzie podana jest pełna ścieżka pliku do dekodowania. Wyniki dekodowania są odbierane asynchronicznie z użyciem klasy Messenger (z pakietu Nuget Galasoft.MvvmLight).

Sposób użycia tych metod jest widoczny w kodzie źródłowym SpeechDecoderManagerTests, ich analiza dostarczy informacji jak korzystać z dekodera i jak go obsługiwać.

Ważne informacje o SkryBocie

Aby stworzyć własną bibliotekę dekodującą należy dokładnie zreplikować zależności ‚References’ z projektu Skrybot.Decode.Core.Wrapper.Tests. Biblioteki należace do tej listy to:
Skrybot.Common, Skrybot.Configuration, Skrybot.Decoder.Core.Models, Skrybot.Decoder.Core.Wrapper, Skrybot.Enums, Skrybot.Interfaces, Skrybot.Messages, Skrybot.Sockets oraz Nuget packages CommonServiceLocator by Microsoft 1.3.0, MvvmLightLibs by Laurent Bugnion v 5.3.0.

Do działania dekodera wymagane są modele z biblioteki Skrybot.Decoder.Models (nie wszystkie modele są potrzebne – te które są wymagane dotyczą plików z prefiksem PLPL-v7.1).
Konfiguracja dekodera jest dostępna w pliku skrybot_accurate_dnn.jconf (jednak zmiana jego zawartości jest wyłącznie dla osób zaawansowanych, znających dekoder Julius – nie próbuj bo przestanie działać).

Życzymy powodzenia

Wysyłaj pytania, uwagi lub proponuj modyfikacje powyższej instrukcji na adres: przepisywanie@gmail.com lub telefon +48 790 013 206

archiwum wiadomości
Interesuje Cię rozpoznawanie mowy? Zaprenumeruj informator SkryBot wpisując swój adres mailowy:
Poufność
Adresy mailowe wpisane z użyciem tego formularza będą wykorzystywane wyłącznie do okresowego udzielania informacji na temat rozwoju oprogramowania skryBot - rozpoznawanie i dekodowanie mowy po polsku.