Chciałbym napisać coś w rodzaju notatnika z możliwością rozpoznawania mowy. Wolałbym w formie aplikacji webowej (zaakceptuję przymus używania Google Chrome), ewentualnie może to być zwykła aplikacja w .NET. Jestem na etapie szukania bibliotek lub API, mam kilka typów, ale z każdym jest jakiś problem:
-
https://www.google.com/intl/pl/chrome/demos/speech.html - Rozwiązanie prawie idealne, tylko trochę przerobić interfejs i obsługę zdarzeń, dorobić parę funkcjonalności i już jest to, co chciałem. Tu problem jest taki, że o ile w przypadku języka polskiego działa dobrze, a w przypadku języka angielskiego rozpoznaje kilka sekund, ale później przestaje rozpoznawać, czyli trwa dalsze nagrywanie, ale nie napływają nowe słowa. Testowałem na telefonie z Androidem i na nim w tej aplikacji albo nie da się uruchomić rozpoznawania, albo napływają dziwne komunikaty.
-
https://cloud.google.com/speech-to-text/ - Tu również jest prawie to, co chciałem, ale źródło jest tak natworzone, że bardzo ciężko znaleźć to, jak działa i to co jest potrzebne, do tego jest ograniczenie do 30 sekund i w pierwszej chwili chciałbym to wyeliminować i usunąć opisy, że zostaje sam interfejs do zamiany głosu na tekst. Jednak jak szukałem elementarnych informacji i przykładów, to nie znalazłem, a znalazłem, że gdzieś trzeba się rejestrować, podać numer karty kredytowej, a potem płacić. Zaletą jest to, że działa na FF, ale to nie jest czynnikiem decydującym.
-
https://azure.microsoft.com/pl-pl/services/cognitive-services/speech-to-text/ - Rozwiązanie od Microsoftu, ale brak opisu, jak to zrobić i brak języka polskiego (angielski rozpoznaje prawidłowo), ograniczenie nagrania do 60 sekund.
W przypadku pkt 1, po zapisaniu na dysk i uruchomieniu z dysku aplikacja też działa, to w przypadku pkt 2 i 3 ona nie działa (w przypadku 2 działa, ale nie napływają rozpoznawane słowa, a w przypadku 3 nie da się uruchomić rozpoznawania). Tylko w przypadku zapisania na dysk i możliwości uruchomienia z dysku można mówić o analizie drogą eliminacji niepotrzebnych treści.
Którą drogą najlepiej podążać i jak uzyskać dostęp do API bez ponoszenia kosztów i podawania swoich danych (skoro na stronie demonstracyjnej działa, to znaczy, że można)? Wydaje się, że najprościej użyć Web Speech API, tylko co jest przyczyną problemów z działaniem w przypadku języka angielskiego?
Ostateczna aplikacja powinna spełniać warunek: W przypadku braku mowy nie przerywa rozpoznawania. Innymi słowy, załóżmy, że dysponuję nagraniem trwającym godzinę, ale na nim samo gadanie trwa łącznie 10-15 minut (wypowiedzi trwające od kilku sekund do kilku minut), a reszta to cisza, to mogę uruchomić rozpoznawanie, puścić nagranie, odejść od komputera, a po godzinie do niego wrócić i zastanę rozpoznane teksty wszystkich wypowiedzi.