Blog (22)
Komentarze (619)
Recenzje (0)
@alucosoftwareOd zera do spikera - sterujemy komputerem za pomocą głosu cz. 1

Od zera do spikera - sterujemy komputerem za pomocą głosu cz. 1

17.02.2014 17:13

Czy istnieje jeden, niezawodny sposób na swobodną komunikację człowieka z maszyną? Na pewno nie. Cały nasz świat się zmienia, zmianom ulegają nie tylko technologie wykorzystywane przez nas na co dzień, ale również i nasze własne preferencje. Paradoksalnie największą stałą we wszechświecie jest... zmiana. Któż wie jak wyglądać będzie otaczający nas świat za kilkanaście lat (w kontekście IT)? Możemy natomiast już teraz wyróżnić kilka technologii ułatwiających jednokierunkową wymianę informacji na linii człowiek-komputer, które na przestrzeni minionych dekad lub tylko ostatnich lat zdobyły lub dopiero zdobywają naszą akceptację i coraz większe zainteresowanie. Ja jednak chciałbym skoncentrować się wyłącznie na jednej, ulubionej przeze mnie metodzie wpływania na to, co dzieje się na ekranie naszego komputera. Była z nami obecna już od dawna, jest obecna teraz i zapewne będzie gdy ruszymy w stronę gwiazd ;)

Tak, mowa tu o technologii sterowania PC (lub innych urządzeń) za pomocą komend głosowych.

Jak mówić do komputera, aby ten nas rozumiał? Najlepiej wykorzystać jakieś oprogramowanie, które wyszuka w naszej mowie wcześniej ustalone (zaprogramowane) komendy głosowe i podejmie właściwe dla tych poleceń działania. Aplikacją zdolną do podejmowania takich działań, obsługującą język polski, działającą szybko i sprawnie, jest Spikit. Ten tekst ma na celu pokazać, że utworzenie własnego asystenta głosowego może być bardzo proste i przyjemne.

Założenia

Na potrzeby tego wpisu przyjmiemy poniższe:

  • zainstalowaliśmy Spikit w wersji co najmniej 1.5.1
  • zapoznaliśmy się chociaż pobieżnie z instrukcją dołączoną do programu (zwłaszcza z rodziałem 4. Szybki start)
  • skonfigurowaliśmy poprawnie mikrofon (jeśli było to w ogóle konieczne), dzięki czemu Spikit bezbłędnie rozpoznaje domyślne polecenia głosowe zapisane w programie
503595

Lekcja 1

Jeśli chcesz zostać mówcą doskonałym, musisz przyswoić sobie kilka istotnych informacji i choć trochę zrozumieć fundamentalne założenia, które leżą u podstaw Spikit. To właśnie z nich wynika funkcjonalność programu oraz to one są źródłem jego ewentualnych ograniczeń. Sam dołożyłem starań, aby ograniczeń w Spikit było możliwie najmniej :)

Definicje

Zabawę z tym czy innym programem powinniśmy zawsze zacząć od dołączonej do niego dokumentacji. Ale kto ma na to czas. Przecież nie może to być AŻ TAK TRUDNE, prawda? Prawda, w Spikit znajdziesz raptem kilka przycisków, niemniej to nie o przyciski lub przełączniki chodzi, a o coś znacznie więcej.

Co to za napis na koszulce? ;)
Co to za napis na koszulce? ;)

Mechanizm zarządzania poleceniami nie należy do gatunku self-explanatory. Z drugiej strony, czy znacie jakiś język programowania, który mógłby przynależeć do takiej grupy i w ogóle nie wymagał tłumaczenia? Sposób zapisywania poleceń w programie jest stosunkowo prosty, ale wymaga odrobiny zaangażowania i chęci jego zrozumienia. Niektórym osobom przychodzi to łatwiej, niektórym z drobnymi trudnościami. Przytoczę więc tu najważniejsze informacje, z których będziemy korzystali teraz i w przyszłości.

  • Listę poleceń głosowych w programie Spikit nazywamy Regułą głosową
  • Poprawna Reguła głosowa musi zawierać co najmniej jedno poprawne polecenie głosowe
  • Pojedyncza komenda głosowa składa się ze słowa lub kilku słów oraz przypisanej do nich Akcji (wymagana) i Odpowiedzi (opcjonalna)
  • Istnieją różne rodzaje Akcji, dzięki którym informujemy program podjęcia jakich czynności oczekujemy w zamian za wypowiedzenie komendy
  • Choć ilość typów Akcji jest ograniczona, istnieje nieograniczenie wiele możliwości ich wykorzystania do własnych celów
  • Do zapisywania poleceń w programie wykorzystujemy znaki specjalne ( ) | [ ] { } * : # zgodnie z ich przeznaczeniem
  • Możliwe jest zagnieżdżanie niektórych znaków specjalnych
  • Wykorzystywane słowa powinny mieć odzwierciedlenie w języku, co dyskwalifikuje Reguły zawierające po prostu zlepek losowych liter
Który zapis jest poprawny, po lewej czy po prawej stronie?
Który zapis jest poprawny, po lewej czy po prawej stronie?

Krok w stronę własnego asystenta głosowego

Otwórz okno programu Spikit i przejdź do zakładki zatytułowanej Karta dynamiczna (kliknij w tę nazwę). Kliknij w obrębie pola z definicją Reguły głosowej i, gdy pole to stanie się aktywne, skorzystaj ze skrótu klawiszowego Ctrl+A, by zaznaczyć wszystkie zapisane tam polecenia. Teraz naciśnij klawisz Backspace lub Delete i pozbądź się domyślnych poleceń za jednym zamachem. Gdybyś jednak zmienił zdanie, możesz w każdej chwili ponownie wczytać do tej karty zbiór poleceń dostarczany razem z programem. Ale to już powinieneś wiedzieć z lektury instrukcji obsługi programu...

Wprowadź w polu Reguły głosowej taki tekst jak na poniższym obrazku:

Zauważyłeś różnice w kolorze między poszczególnymi fragmentami Reguły głosowej?
Zauważyłeś różnice w kolorze między poszczególnymi fragmentami Reguły głosowej?

Teraz kliknij w przycisk włączający kartę z utworzonym przez Ciebie poleceniem. Jeśli zmienił swój stan z szarego na pomarańczowy - gratuluję! Utworzyłeś swoją pierwszą, na razie nieprzydatną Regułę głosową :)

Reguła głosowa zawiera dokładnie jedno polecenie. Zamknij GUI programu kliknięciem w otaczające je ciemne tło lub przeznaczony do tego przycisk X. Gdy tylko wypowiesz do mikrofonu wszystkie słowa zapisane kolorem pomarańczowym ('to jest moja komenda'), Spikit wykona akcję zapisaną pomiędzy znakami specjalnymi { }. W naszym małym przykładzie akcją tą jest akcja naciśnięcia klawisza Pause (niezależnie od tego czy jest on fizycznie dostępny na klawiaturze Twojego laptopa/komputera stacjonarnego). Dlaczego zatem jest to nieprzydatna Reguła głosowa? Dlatego, że w systemie Windows taka czynność (naciśnięcie klawisza Pause) nie powinna specjalnie wpłynąć na jego pracę, chyba że posiadasz zainstalowane jakieś dodatkowe programy aktywnie korzystające z takiego skrótu klawiszowego/gorącego klawisza. Zauważ, że gdy tylko wprowadzisz znak { w polu Reguły głosowej, Twoim oczom ukaże się okienko podpowiedzi zawierające pewne stałe nazwy lub przykłady, które możesz wykorzystać do budowania akcji.

503610

Możesz zmodyfikować to polecenie (wprowadzić inną nazwę klawisza) i sprawdzić efekty takiej zmiany. Jeśli chciałbyś nacisnąć wybrany klawisz wielokrotnie - po prostu zapisz jego nazwę żądaną ilość razy pomiędzy znakami specjalnymi { } np. to jest moja komenda {Enter Enter Enter}. Proste? Możesz zrobić znacznie więcej: przytrzymywać/zwalniać wybrany klawisz, wykorzystać modyfikatory Control, Shift oraz Alt, naciskać ustalone klawisze w sposób sekwencyjny lub symultaniczny albo pomieszać wszystko razem w jednym ciągu reprezentującym np. kombinację ciosów w grze komputerowej (combo).

Akcja naciśnięcia klawisza lub nawet całej ich kombinacji jest tylko jedną z dostępnych w programie. Poniższe zestawienie typów akcji rozpoznawanych przez Spikit umieszczam na razie wyłącznie w celach informacyjnych. Lista jest krótka, ale konsekwencje istnienia takich, a nie innych rodzajów akcji w Spikit są ogromne.

503613

Wróćmy do pierwszego przykładu. Złożoność naszej Reguły głosowej nie jest duża, tak jak nie są duże zalety posiadania pojedynczej komendy głosowej. Utwórzmy więc listę czterech takich poleceń, posiadających tę samą wspólną akcję. Dowiemy się dzięki temu, że możemy tę samą akcję powiązać z różnymi słowami, alternatywnymi wersjami komendy głosowej, wypowiadanymi zależnie od nastroju lub poziomu naszej koncentracji. Wykorzystamy do tego celu znaki specjalne ( ) |, które odpowiadają kolejno za rozpoczęcie listy poleceń, zakończenie listy poleceń oraz rozdzielenie jednego polecenia od drugiego w liście.

Zwróć uwagę na brak separatora | tuż przed końcem listy!
Zwróć uwagę na brak separatora | tuż przed końcem listy!

To, w którym miejscu wykorzystasz znaki nowej linii lub spacji nie ma najmniejszego znaczenia (kwestia gustu) tak długo, jak pozostawiłeś odstępy pomiędzy poszczególnymi wyrazami wchodzącymi w skład poleceń. Powyższy zapis Reguły głosowej nie różni się więc fundamentalnie od poniższego "pomieszania z poplątaniem", z którego ciężko wywnioskować coś na pierwszy rzut oka.

503617

Na pewno zwróciłeś uwagę na to, że tak utworzone komendy współdzielą takie same lub bardzo zbliżone wyrazy. Dodajmy w naszej Regule głosowej kilka znaków odstępu i zamieńmy polecenia miejscami, aby wyróżnić ten fakt.

503619

Gdybyśmy tylko mogli w prosty sposób wskazać w naszym poleceniu wyrazy opcjonalne, które możemy lub których nie musimy wypowiadać, oszczędzilibyśmy wiele miejsca i pracy. Okazuje się, że jest to bardzo proste. W Spikit wybrane wyrazy lub nawet całe zdania możemy umieścić pomiędzy znakami specjalnymi [ ] i w ten sposób oznaczyć je jako opcjonalne.

503621

Efekt? Dokładnie taki jak sobie założyliśmy (z czterech poleceń pozostały dwa). Gdbyśmy trochę pokombinowali i wykorzystali możliwość zagnieżdżania znaków specjalnych, nasza Reguła głosowa mogłaby przybrać jeszcze inną, znacznie bardziej złożoną formę (przypomnij sobie domyślny zbiór umieszczony w Karcie Dynamicznej). My natomiast dokonamy jedynie drobnego uproszczenia, ograniczając listę poleceń z obecnych dwóch do jednego. Ponieważ akcja dla obu tych komend jest wspólna, umieścimy ją poza listą tj. za znakiem specjalnym ).

503623

Ten prosty zabieg umożliwi nam "scalenie" poleceń, a dokładniej, zmianę postrzegania przez Spikit obu alternatywnych ścieżek, którymi może podążać użytkownik programu. Drogi te, choć przebiegają różnie, prowadzą do jednego, wspólnego celu (do akcji {Pause} - przyp. autor). Jak w życiu...

503625

Spikit analizuje taki zbiór ścieżek od lewej do prawej. Gdy droga się kończy, program wykonuje ostatnią zapamiętaną akcję napotkaną na ścieżce, którą podążał użytkownik. Przez podążanie ustaloną ścieżką, mam tu oczywiście na myśli wypowiadanie słów wchodzących w skład Reguły głosowej w ustalonej kolejności.

Na początku swej przygody z programem najpewniej wystarczy Tobie zapis poleceń głosowych w najprostszej formie. Kolejne komendy będą elementami długiej, wspólnej listy.

503628

Miej jednak świadomość, że dzięki odpowiedniemu wykorzystaniu znaków specjalnych możesz bardzo szybko i małym nakładem sił dokonać modyfikacji poleceń i np. utworzyć ich odmienne wersje odpowiednie dla danej sytuacji. Dzięki temu Twoja konwersacja z komputerem będzie bardziej naturalna i skuteczna, bez względu na to czy wypowiesz wszystkie lub tylko wybrane słowa wchodzące w skład komendy głosowej.

Poruszone w tym wpisie zagadnienia to pierwszy element większej układanki. Dalsza część wkrótce...

PS Czy wiedziałeś, że możesz wykorzystać znak *, aby wskazać w Regule głosowej miejsca potencjalnego pojawiania się wyrazów nacechowanych emocjonalnie, które - choć dodane do naszej wypowiedzi - nie wpłyną na odbiór polecenia przez aplikację? Jeśli nie, zajrzyj do oficjalnego podręcznika użytkownika. Znajdziesz tam naprawdę ciekawe rzeczy :D

Wybrane dla Ciebie
Komentarze (11)