Blog (22)
Komentarze (619)
Recenzje (0)

Głosowy czytnik RSS (Antyweb i dobreprogramy)

@alucosoftwareGłosowy czytnik RSS (Antyweb i dobreprogramy)14.05.2014 18:28

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

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.