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.
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/
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.
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.
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ć.
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