Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Głosowy czytnik RSS (Antyweb i dobreprogramy)

Jak będzie wyglądała komunikacja człowieka z maszyną za kilkanaście lat? Czy wszystko wokół nas będzie sterowane dotykiem, czy może znajdziemy bardziej odpowiednią formę dialogu z urządzeniami? Zalążek takiej naturalnej formy komunikacji odnajdziesz w tym wpisie w postaci głosowego czytnika RSS współpracującego obecnie z portalami Antyweb oraz dobreprogramy. Mechanizm jest jednak ten sam dla większości kanałów RSS w sieci.

Ale po kolei...

Otrzymałem pytanie od osoby, która chce wykorzystać SpikitAPI, ale nie posiada dużej wiedzy z zakresu programowania. Obiecałem, że zaprezentuję jak krok po kroku utworzyć aplikację okienkową komunikującą się ze Spikit i reagującą na kilka prostych komend. Środowiskiem programistycznym, w którym utworzę mały projekt będzie bezpłatny Visual C# 2010 Express, który dostępny jest na stronie Microsoftu.

Kod odpowiedzialny za komunikację z programem Spikit znajdziecie w tym wpisie (patrz: SpikitAPI.PipeClient) na Blogu dobrychprogramów.

Choć sam proces wymiany informacji przez tzw. 'potok' między jakimś zewnętrznym programem, a Spikit jest stosunkowo prosty, to jednak umiejętność dobrego programowania przychodzi z czasem i nie należy się zbyt szybko poddawać. Tym bardziej jeśli odniesione korzyści mogą być o wiele większe niż się to Tobie początkowo wydaje. Programowanie uczy bowiem logicznego myślenia i radzenia sobie z problemami (choć te w realnym życiu biją wszytko na głowę...). W sieci odnaleźć można multum materiałów (choćby ten), które mogą pomóc Tobie opanować język programowania C#. Ale warto czasem wybrać się do zwykłej biblioteki, bo w bibliotekach raz, że książki darmo dają, a dwa - jest ich tak wiele, że można się o nie przewrócić :-) Jest więc z czego wybierać. Osobom znającym język angielski zalecam zasoby MSDN, a szczególnie serię przygotowaną specjalnie dla początkujących adeptów sztuki programowania.

Przejdźmy do konkretów

Utwórzmy nowy projekt aplikacji Windows Forms.

Taki program będzie posiadał standardowe okno. Nadajmy temu projektowi wiele mówiącą nazwę - Kolory. Nazwa 'Kolory' będzie także domyślną przestrzenią nazw w naszym projekcie.
Kod komunikujący się ze Spikit znajduje się w zupełnie innej przestrzeni nazw - to bardzo istotna informacja. Ponieważ SpikitAPI nie jest jeszcze rozprowadzane w postaci biblioteki, utwórzmy w naszym projekcie 'Nowy element' typu 'CodeFile' (kliknij PPM na zielonej ikonie z nazwą projektu), który będzie po prostu zupełnie pustym plikiem z rozszerzeniem .cs. Nadajmy mu nazwę SpikitAPI.cs
Do SpikitAPI.cs wklej kod z poprzedniego wpisu blogowego (czyli SpikitAPI.PipeClient) i voila! W każdej chwili możesz nawiązać komunikację z silnikiem rozpoznawania mowy. Aby to uczynić, kliknij PPM na ikonce Form1.cs i przejdź do kodu głównego okna programu.
Ostatnią rzeczą jaką musimy teraz zrobić to doprowadzić do sytuacji, w której zobaczymy Dokładnie (przez duże D) coś takiego:
Dla ułatwienia zamieszczę kod źródłowy w postaci tekstowej.

Form1.cs

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Kolory { public partial class Form1 : Form { SpikitAPI.PipeClient client = null; public Form1() { InitializeComponent(); client = new SpikitAPI.PipeClient(); client.MessageReceived += new SpikitAPI.PipeClient.MessageReceivedEventHandler(client_MessageReceived); this.FormClosing += new FormClosingEventHandler(Form1_FormClosing); } void client_MessageReceived(object sender, SpikitAPI.PipeClient.PipeClientEventArgs e) { // Dostęp do kontrolki musi odbyć się z wątku, na którym ta kontrolka została utworzona this.Invoke(new MethodInvoker(delegate { // Tu rozpoczyna się właściwy kod użytkownika if (e.Message.Equals("czerwony", StringComparison.OrdinalIgnoreCase)) // if (e.Message == "czerwony") ; else if ; else this.BackColor = Color.Red; else if (e.Message.Equals("zielony", StringComparison.OrdinalIgnoreCase)) this.BackColor = Color.Green; else if (e.Message.Equals("niebieski", StringComparison.OrdinalIgnoreCase)) this.BackColor = Color.Blue; // Tu kończy się właściwy kod użytkownika })); } void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (client != null) client.Stop(); // Podczas zamykania okna zakończ połączenie z programem i zwolnij zasoby } } } Po wprowadzeniu wszytkich zmian najlepszą rzeczą byłoby teraz zapisanie całego projektu, na wypadek chwilowego zaniku napięcia w sieci ;-)
Gotowe. Drzwi do technologii rozpoznawania i syntezy mowy polskiej zostały nam szeroko otwarte. Przed uruchomieniem programu, zastanów się chwilkę cóż on takiego może robić. Pamiętaj również, aby dodać do Spikit polecenia, których Twój program spodziewa się usłyszeć.
Efektem kilku linijek kodu po stronie programisty-amatora mogą być np. takie drobne produkcje.

Gwóźdź programu - czytnik RSS sterowany głosem

Ale gdzie jest wspomniany we wstępie głosowy czytnik, z którym można by zamienić zdanie w jakimś normalnym języku? Znajdziesz go poniżej.

Zapraszam wszystkich do obejrzenia od początku do końca filmu prezentującego zasady działania głosowego czytnika nagłówków RSS. Trzeba przyznać, że dostępny w Windows 8.1 polski głos syntezatora mowy (Microsoft Paulina Desktop) radzi sobie bardzo dobrze, jeśli nie doskonale. Popełnił raptem kilka drobnych potknięć w nieoczywistych sytuacjach. Dlaczego Antyweb i dobreprogramy? Są one dla mnie źródłem ciekawych informacji ze świata nowych technolgii. Możliwości rozbudowy takiego czytnika opartego o program Spikit są przeogromne. Jeśli zainteresowanie takim rozwiązaniem (tj. głosowym przyswajaniem treści) będzie wystarczająco duże - wydam jego publiczną wersję. W takiej wersji na pewno pojawi się możliwość większej personalizacji i na przykład ustalania listy interesujących nas kanałów oraz ilości pobieranych nagłówków za pomocą jakiegoś okienka dialogowego. A może macie jakieś inne pomysły?

Przy okazji przypominam o zabawie na najciekawszą aplikację wykorzystującą SpikitAPI. Jest jeszcze trochę czasu :-)

Jak zwykle czekam na Wasze sugestie dotyczące zarówno Spikit jak i udostępnionego Wam interfejsu programistycznego. Tylko dzięki nim i zaangażowaniu użytkowników projekty takie mają szansę się rozwijać. 

oprogramowanie programowanie hobby

Komentarze

0 nowych
kopara1960   1 #1 14.05.2014 20:27

Fenomenalnie. Wyobraź sobie że leżysz sobie na łóżku, a Spikit czyta Ci wybrane wiadomości na głos. Na dodatek masz możliwość prowadzenia małej konwersacji z programem. BRAWO !!! Szkoda tylko że to nie jest dla wszystkich. Panowie Programiści, Może któryś z Was stworzy coś podobnego i podzieli się z tymi, którzy sami, z różnych przyczyn takiej aplikacji nie napiszą. Jeszcze raz brawa dla autora.

Magnis   8 #2 14.05.2014 21:02

Jestem pod ogromnym wrażeniem! Naprawdę super sprawa. Wpis świetny program jeszcze lepszy. Brawo!

  #3 15.05.2014 00:47

przyłączam się do komentarzy wyżej. kiedy można się spodziewać wersji live czytnika? muszę powiedzieć że coś takiego chodziło mi po głowie, ale moje umiejętności jeszcze nie idą w parze z pomysłami :D więc brawa się należą jak najbardziej!!
zaczynam co raz częściej sięgać po spikit. opóźnienie już dawno przestało mi przeszkadzać, a muszę to po prostu przyznać, że program ułatwia mi wykonywać praktycznie wszystkie normalne czynności skróty klawiszowe, sprawdzanie poczty, pisanie maili i wyszukiwanie w sieci! gdybym mógł jeszcze w czasie rzeczywistym sterować myszką w programach to byłoby już bajecznie :)

alucosoftware   7 #4 15.05.2014 11:41

@kopara1960
Dzięki, takie właśnie są założenia programu, aby tworzył pomost między nami, a tym co widzimy na ekranie naszych komputerów. Dzięki nowemu API wszystkie te "fantazje" już niedługo mogą stać się faktem.

Ale, jak dobrze zauważyłeś, wymaga to oddolnego zaangażowania, do którego po raz kolejny zachęcam :-) Narzędzia już są!

PS Ostatecznie sam mógłbym podjąć się tego wyzwania, ale wciąż brakuje wsparcia jakiegoś inwestora.

@Magnis
Dziękuję i zachęcam do aktywnego korzystania ze Spikit.

@vb-guru
Czytnik stanie się dostępny z chwilą pojawienia się licznej grupy zainteresowanych nim użytkowników :-)
Musisz jednak przyznać, że także bezpłatna wersja Spikit może być wykorzystywana do nawigowania myszką po ekranie - jeśli tylko się nigdzie nie spieszysz (np. przeglądasz artykuł w sieci). Płatny klucz licencyjny całkowicie eliminuje to ograniczenie.

alucosoftware   7 #5 15.05.2014 11:42

W związku ze zmianami w sieciowym module rozpoznawania mowy, zalecam zapoznać się z postem: https://www.facebook.com/photo.php?fbid=641857955893397&set=a.41155045559081...

FullFrame   1 #6 16.05.2014 10:21

Spikit to tykająca bomba, czekam aż paru niezależnych programistów (czyt. lubiących nowe technologie ) tą bombę odpali. Potencjał niesamowity! Zachęta do pisania skryptów ze strony autora już jest, darmowy klucz licencyjny. Może potrzebujecie pomysły? To może ja zacznę: skrypt odpowiadający za pogodę. "Spikit jaka dziś pogoda" - "Dziś jest umiarkowanie, temperatura 13stopni, zachmurzone niebo, popołudniu może padać, dobrze mieć parasol":) lub "Spikit jak długo jeszcze będzie świecić słońce"- " zostały 4 godziny 20minut do zachodu słońca" Taka informacja przydaje mi się do zaplanowania sprzątania mieszkania, gdzie światło dzienne jest do tego niezastąpione. Ok, lećmy dalej "Spikit o której jedzie autobus X", baza może zawierać kilka autobusów i różne przystanki odjazdu:) Następne, odliczanie dni do zdarzenia, "Spikit kiedy mam spotkanie" "Masz jutro 1 spotkanie z Panem X o godzinie 10.00, za 3 dni spotkanie z Panią Z, przygotuj dokumenty, za cztery dni urodziny Y . Wszystko dla jednego tygodnia;) itd. Pozdrawiam

alucosoftware   7 #7 16.05.2014 11:12

@FullFrame
Dziękuję za trafne, bombowe spostrzeżenie ;-)

Chociaż przykład z kalendarzem wymaga więcej zachodu (dostęp do szczegółowych danych osobistych wymagający uwierzytelnienia) to wszystko o czym napisałeś jest do zrobienia i w zasadzie sprowadza się do kwestii wyboru odpowiedniego źródła danych.

Jeśli wpiszesz w Google hasło "pogoda", to otrzymasz informację bazującą na danych geolokalizacyjnych. Przetworzenie tego we własnym programie to żadna sztuka, ale parsowanie strony internetowej mija się z celem (dziś wygląda to tak, jutro może wyglądać inaczej). Lepiej jednak, gdyby dane te były w jakiś sposób ustandaryzowane (jak np. informacje w kanale RSS).

Jeśli podasz mi ciekawe, rzetelne i stałe źródło danych dot. pogody i oświetlenia to stworzę i udostępnię kolejny przykład :-)

meteo.pl odpada, ponieważ generuje grafikę.

FullFrame   1 #8 16.05.2014 15:22

Na pewno znany jest Rainmeter, który korzysta z takich informacji. Może się przyda, jest pogoda, kalendarz itd.
Pierwszy z brzegu link:
http://gospoda.blogspot.com/2011/03/rainmeter-czytnik-kanaow-rss-gadzet.html
Pozdrawiam

  #9 16.05.2014 17:06

no niby tak, ale tu chodzi o szybką pracę. mam wydajny sprzęt i chciałbym go wykorzystać. wiesz, chyba się skuszę na ten program. może tak się chociaż przyczynię do rozwoju. nie mogę o nim złego słowa powiedzieć. a najlepsze, że udało mi się zrpbić program do zmieniania kolorów pod vb.net! niby nic wielkiego, ale cała gęba aż mi się cieszy, takie sterowanie głosem daje satysfakcji :D

djfoxer   18 #10 16.05.2014 19:31

Dopiero zauważyłem, że jest SpikAPI! W wolnej chwili z chęcią przejrzę co oferuje. Pozdrawiam :)

alucosoftware   7 #11 16.05.2014 19:34

@djfoxer
A ja myślałem, że się na mnie za coś obraziłeś ;P

Pobierz najnowszą wersję (1.7.1.0), a jeśli będziesz chciał kod czytnika RSS to daj mi znać (choć i tak wszystko widać jak na dłoni na filmie :)

arlid   14 #12 16.05.2014 19:41

Świetne : ) Nie da się ukryć, że z pewnością przyszłościowe. Zadziwiasz mnie rozwojem aplikacji. Potencjał jest tutaj niesamowity. Powinno się wspierać takie projekty, to nie tylko zabawa. To wielka pomoc dla osób, które maja problemy ze wzrokiem - takie rozwiązania mogą im ułatwić codzienność. Kolejne brawa dla Ciebie :) Patrząc teraz z pryzmatu minionego czasu na recenzje jaką pisałem program wykonał obrót o 720 stopni - bardzo pozytywny obrót.

alucosoftware   7 #13 16.05.2014 19:55

@arlid
Dzięki za pozytywne wibracje.

Wszystko rozwija się w naturalny sposób, ale nadal brak jest siły przebicia wobec takich konkurencyjnych newsów jak choćby ten o Cortanie made by djfoxer ;-)

Mam nadzieję, że dożyję czasów, w których na równi z Cortaną i Siri stanie też polski Spikit.

arlid   14 #14 16.05.2014 20:16

@alucosoftware

Tego mogę Ci życzyć. Może trochę głupio to zabrzmi,i, ale spore przebicie byłoby, gdyby dało się wykorzystać Spikit w biznesie - jakaś pomoc w CRM czy programach księgowych (np. wprowadzanie liczb). Może to jakieś dość wyimaginowane i ciężkie do realizacji zagadnienia, ale chodziło mi bardziej o nakreślenie potencjalnej grupy odbiorców :) Sam z chęcią napisałbym coś fajnego, ale mój poziom znasz :P Chociaż jak to mówią dla chcącego nic trudnego :)

alucosoftware   7 #15 16.05.2014 20:36

@arlid
Dzięki, niech się spełni ;-)

A czy próbowałeś kiedyś zrobić to, o czym teraz wspominasz np. z wprowadzaniem tych liczb? Domyślnie w Spikit 1.5 i wyżej włączona jest funkcja rozpoznawania długich ciągów liczbowych więc możesz sobie powiedzieć "czterdzieści trzy miliony trzysta osiemdziesiąt pięć tysięcy siedemdziesiąt jeden" lub podyktować numer telefonu. Jak myślisz, co się wtedy stanie? ;) Widziałeś nowy, sieciowy moduł rozpoznawania mowy?

Takie rzeczy to pestka i z reguły jest już wszystko gotowe w aplikacji. Gorzej z konkretnymi środkami na reklamę, siecią kontaktów i wsparciem osób trzecich (choćby w postaci prostego 'lajka' - niech sobie radzi...). Dotychczasowe rozmowy z potencjalnymi inwestorami ciągną się w nieskończoność... a czas ucieka nieubłaganie. Ech. Trzeba po prostu robić swoje :-)

djfoxer   18 #16 17.05.2014 15:38

@alucosoftware
Dużo obowiązków mam, a czas niegumowy ;)

Niedługo zmieniam pracę, więc kilka dni wolnego będę miał, to popatrzę co można ciekawego z Twoim API zrobić :)

  #17 19.05.2014 14:30

Pytanie do autora: skąd to można pobrać, bo nie ma tu linka i w youtube?

alucosoftware   7 #18 19.05.2014 15:14

@ronin22
Aktualnie nie można. Nie udostępniłem publicznie tego czytnika, ponieważ stanowi on tylko jeden z przykładów wykorzystania specjalnych zasad komunikowania się z programem Spikit. Te zasady to tzw. API, czyli interfejs programistyczny. W związku z tym taki czytnik RSS sterowany głosem nie może działać samodzielnie tj. bez programu Spikit.

Jeżeli zainteresowanie takim wykorzystaniem programu będzie większe, to - zgodnie z tym co napisałem we wpisie - udostępnię publiczną wersję czytnika. Taka publiczna wersja posiadałaby możliwość ustalenia źródeł kanałów. Jeżeli tak się stanie, na pewno napiszę o tym na profilu Spikit na Facebooku.

arlid   14 #19 19.05.2014 18:46

@djfoxer
Czyżby Spikit na WP? Znając Ciebie to już można się wszystkiego spodziewać :P

arlid   14 #20 19.05.2014 18:46

@djfoxer
Czyżby Spikit na WP? Znając Ciebie to już można się wszystkiego spodziewać :P

FullFrame   1 #21 21.05.2014 10:24

@arlid

Chyba Spikit na WP to już mocne gadżeciarstwo;) Cortana i Siri wyznaczają jakiś trend, ale dalej jest to gadżet, tak mi sie wydaję. Jednak przedstawiona forma komunikacji z komputerem daje duże pole do popisu następnej generacji urządzeń takich jak google glass, oculus. Co do Spikita fajnie jak projekt będzie się rozwijał dla PC, ponieważ jest bardziej uniwersalny. Powiadomienia z WP do jednostki centralnej (PC-Spikit) to już bardziej ciekawa alternatywa:)

  #22 31.08.2015 16:55

@alucosoftware: Witam mój mail to hobex11@hotmail.com

Mógłbym prosić jeśli to możliwe o kod do czytnika