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

Mową w monitor!

W przypadku projektów programistycznych konsekwencją wyboru takiego, a nie innego rozwiązania danego problemu może być nawet, w skrajnej sytuacji, brak możliwości jego sprawnego rozwijania w przyszłości. Wszystko jednak zależy od wzajemnych powiązań składników systemu, ich wewnętrznej budowy i trudu pracy (w tym doświadczenia) włożonych w ich utworzenie. Niemniej bardzo często słyszy się, że wiele elementów aplikacji X w wersji Y.Z zostało przepisanych na nowo, ponieważ programiści stanęli przed murem nie do pokonania (BTW, nadmierne przywiązanie rynku do terminu "deadline" jest przyczynkiem do takiego stanu rzeczy).

Przypadków zupełnie odwrotnych jest proporcjonalnie mniej, w zasadzie odwrotnie proporcjonalnie... To ciekawe, ale tworzenie oprogramowania wykraczającego poza obowiązujące standardy, w sytuacji, w której nad głową nie widać śladu przysłowiowego bata jest zajęciem o wiele bardziej kreatywnym i efektywnym. Większą bowiem wagę przykłada wtedy autor do jakości w funkcji czasu (nawet kosztem pierwszych wrażeń z użytkowania aplikacji) niż efektownej reklamy w krótkiej perspektywie.

Proste, acz gruntownie przemyślane, implementacje pewnych mechanizmów zwykle bardzo rzadko przynoszą rewolucyjne rezultaty, ale nie w przypadku projektu Spikit.

Wynik wdrożenia w życie prostych (z pozoru) pomysłów zaczyna powoli odbijać się szerokim echem. Tu problemem jest nie tyle brak, co prawdziwy nadmiar możliwości oferowanych przez aplikację. Wszystko to za sprawą odmiennego, od powszechne znanego, podejścia w traktowaniu użytkownika. Spikit traktuje użytkownika jak istotę myślącą, nie zaś jak konsumenta przynależącego do szarej masy.

Osobom, którym nazwa aplikacji nie mówi zbyt wiele przypomnę tylko, że jest to program komputerowy, który rozpoznaje mowę i reaguje na wypowiadane przez użytkownika polecenia głosowe.

Dokładny opis aplikacji można znaleźć w bazie dobrychprogramów pod tym adresem.

Świadomy użytkownik

- Czy za pomocą programu mogę yyhh?
- Tak.
- Nie określiłem czynności.
- Nie musiałeś...

Zasadniczą różnicą pomiędzy omawianym oprogramowaniem, a innymi rozwiązaniami tego typu (jeżeli w ogóle możemy mówić o konkurencyjności rozwiązań) jest fakt nieograniczonych możliwości tego pierwszego. Przynajmniej w aspekcie wykorzystania własnej mowy na potrzeby sterowania systemem operacyjnym. W rzeczywistości jednak możliwości programu są ściśle skorelowane z umiejętnościami jego użytkownika, przy czym im większa jest wiedza użytkownika komputera - tym więcej oferuje aplikacja (i odwrotnie).

Ten dość niecodzienny stan rzeczy jest efektem wprowadzonego w Spikit prostego mechanizmu Reguł głosowych, których w pełni świadome stosowanie może zdziałać niejedne cuda na ekranie naszego monitora. Z drugiej strony, nieumiejętność wykorzystania potencjału drzemiącego w tychże Regułach ogranicza drastycznie możliwości użycia aplikacji.

Reguły gry

Zapis dowolnej Reguły głosowej w Spikit jest połączeniem wyodrębnionej, niewielkiej ilości znaków specjalnych (sztuk 9: ( ) | [ ] { } * #), dowolnej ilości słów i zwrotów wykorzystywanych przez użytkownika oraz kilku prostych zasad określających możliwość mieszania jednych (znaków) z drugimi (słowami) w zależności od sytuacji.

Przykład rozbudowanego zapisu wielu poleceń głosowych uwzględniający złożoność mechanizmu Reguł głosowych może początkowo odstraszać (choć zupełnie niepotrzebnie).

[wykonaj] (pierwsze {5} | drugie {1} | trzecie {8}) * polecenie [głosowe]

Pod powyższym zapisem kryją się jednak 3 proste polecenia, aczkolwiek w 24 rozmaitych odmianach, każdej dla innego stanu psychfizycznego osoby je wypowiadającej. Zasadniczo treść komendy głosowej można sprowadzić do postaci:

co mówię {czego oczekuję}

Z logicznego punktu widzenia jest to jak najbardziej poprawne podejście. W naszym codziennym życiu ubieramy myśli w słowa, aby osiągnąć przyświecający tej myśli cel. Słowa same w sobie pełnią rolę czysto symboliczną, są tylko nośnikami skojarzeń, aktywatorami innych oczekiwanych procesów.

Mechanizm Reguł głosowych w Spikit jest właśnie tym, co łączy skojarzenia z czynnościami możliwymi do wykonania za pomocą komputera, dając przy tym użytkownikowi prawdziwą swobodę wyrażania myśli. Każdy z Nas jest bowiem inny, każdy ma własne upodobania, sposób wysławiania się, przyzwyczajenia.

Potęga prostoty

Ten prosty pomysł na stworzenie takiej, a nie innej formy zapisu poleceń głosowych w ramach technologii rozpoznawania mowy dyskretnej daje w rezultacie możliwość jednoczesnego wyboru wielu ścieżek rozwoju aplikacji, czasem nawet zbyt wielu... Zaprezentuję tu początek jednej z nich, tej najbardziej wyczekiwanej tj. możliwości dyktowania tekstu.

Niemal połowa przeczytanych lub zasłyszanych wyrazów to tzw. "hapaks legomena", słowa wypowiadane jednokrotnie, w konkretnej sytuacji. Przy całym bogactwie naszego cudownego języka, rzeczywisty zasób wykorzystywanego przez nas na co dzień słownictwa ogranicza się w najlepszym przypadku do kilku tysięcy pojedynczych wyrazów i dłuższych zwrotów. Żonglujemy nimi w miarę sensowny sposób, choć nierzadko też całkiem niepoprawnie - liczymy przy tym na zrozumienie naszej myśli przewodniej przez drugą ze stron dialogu.

Dla Reguły głosowej liczącej wiele setek poleceń głosowych (tu w znaczeniu pojedynczych słów), Spikit dość dokładnie odwzorowywuje wypowiedź użytkownika. Można więc utworzyć niewielki (~2 tyś. wyrazów) i wysoce spersonalizowany Słownik wykorzystywany na potrzeby codziennej komunikacji z drugim człowiekiem i szereg innych, pomniejszych i okazjonalnych Słowników ułatwiających poruszanie się po zakamarkach Internetu za pomocą haseł tematycznych i branżowych terminów. Słowniki takie składać się będą z najczęściej wykorzystywanych wyrazów (określanych mianem list frekwencyjnych), z których niekoniecznie będzie można utworzyć pozbawioną błędów, całkowicie naturalną wypowiedź. W dobie zaawansowanych algorytmów wyszukiwania oferowanych przez wiodące na rynku firmy (mając tu na myśli oczywiście Google oraz Microsoft, ale także mało znanego w Polsce producenta Wolfram Research) oraz dogłębnej znajomości preferencji pojedynczego użytkownika nie jest to już nawet potrzebne.

Wykorzystanie Spikit jako narzędzia generującego ciągi pytań do wyszukiwarek internetowych lub krótkie wiadomości tekstowe jest już teraz jak najbardziej możliwe i niesłychanie przydatne. Zwłaszcza gdy przypomnimy sobie, że podstawowym celem przyświecającym idei rozpoczęcia prac nad programem była i jest nadal chęć wspomagania osób niepełnosprawnych ruchowo w codziennej pracy z komputerem przez umożliwienie im bezdotykowej pracy nawet na sprzęcie starej daty, praktycznie żadnym kosztem. Nie oznacza to jednak, że Ty lub ja mielibyśmy wyłącznie bezczynnie patrzeć na rozwój Spikit, wręcz przeciwnie. Im większe będzie Twoje i Twoich znajomych zainteresowanie programem, tym szybszy jego rozwój.

Odsyłam więc do źródeł, każde "Lubię to!" to zawsze jakaś forma wsparcia i pomocy: Spikit na Facebooku.

Zapalonym programistom przekazuję za to kod źródłowy tej niewielkiej aplikacji pomocniczej (Generatora Słowników, nie Spikit :P) w nadziei, że może ona znaleźć zastosowanie także w innej dziedzinie wymagającej szybkiej ekstrakcji danych (.NET Framework 2.0+).

using System; using System.Collections.Generic; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExtractWords { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FormExtractWords()); } } public class FormExtractWords : Form { public RichTextBox Words { get; set; } public TextBox Chars { get; set; } public FormExtractWords() { TableLayoutPanel table = new TableLayoutPanel(); table.Dock = DockStyle.Fill; table.RowStyles.Add(new RowStyle(SizeType.AutoSize)); table.RowStyles.Add(new RowStyle(SizeType.AutoSize)); table.RowStyles.Add(new RowStyle(SizeType.AutoSize)); table.RowStyles.Add(new RowStyle(SizeType.Percent, 100)); table.RowStyles.Add(new RowStyle(SizeType.AutoSize)); table.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); TableLayoutPanel row = new TableLayoutPanel() { AutoSizeMode = AutoSizeMode.GrowAndShrink, AutoSize = true, Dock = DockStyle.Fill, Margin = new Padding(10, 10, 10, 5) }; row.RowStyles.Add(new RowStyle(SizeType.AutoSize)); row.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); row.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); Label label = new Label() { Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleLeft, Padding = new Padding(0), Margin = new Padding(0, 0, 5, 0), AutoSize = true }; label.Font = new Font("Open Sans", 12, GraphicsUnit.Pixel); label.Text = "Znaki oddzielające słowa:"; TextBox chars = new TextBox() { Dock = DockStyle.Fill, Margin = new Padding(5, 0, 0, 0), AllowDrop = false }; chars.Font = new Font("Open Sans", 12, GraphicsUnit.Pixel); chars.Text = "!@#$%^&*()-_=+[]{};:'\"\\|,.<>/?~` \\t\\r\\n"; Chars = chars; row.Controls.Add(label, 0, 0); row.Controls.Add(chars, 1, 0); Label labelDrop = new Label() { BackColor = Color.FromArgb(250, 250, 250), TextAlign = ContentAlignment.MiddleCenter, Dock = DockStyle.Fill, Padding = new Padding(20), Margin = new Padding(10, 5, 10, 5), AutoSize = true, AllowDrop = true }; labelDrop.Font = new Font("Open Sans", 16, GraphicsUnit.Pixel); labelDrop.Text = "Przeciągnij w to miejsce\njeden lub więcej plików tekstowych\n(kodowanie ANSI)..."; labelDrop.Paint += new PaintEventHandler(LabelDrop_Paint); labelDrop.DragEnter += new DragEventHandler(LabelDrop_DragEnter); labelDrop.DragDrop += new DragEventHandler(LabelDrop_DragDrop); Button buttonRead = new Button() { Anchor = AnchorStyles.Left | AnchorStyles.Right, Margin = new Padding(10, 5, 10, 5), Padding = new Padding(10), AutoSize = true, AutoSizeMode = AutoSizeMode.GrowAndShrink }; buttonRead.Font = new Font("Open Sans", 14, GraphicsUnit.Pixel); buttonRead.Text = "Pobierz ze schowka (ANSI)"; buttonRead.Click += new EventHandler(ButtonRead_Click); Button buttonSave = new Button() { Anchor = AnchorStyles.Left | AnchorStyles.Right, Margin = new Padding(10, 5, 10, 10), Padding = new Padding(10), AutoSize = true, AutoSizeMode = AutoSizeMode.GrowAndShrink }; buttonSave.Font = new Font("Open Sans", 14, GraphicsUnit.Pixel); buttonSave.Text = "Zapisz do pliku (ANSI)"; buttonSave.Click += new EventHandler(ButtonSave_Click); RichTextBox words = new RichTextBox() { Dock = DockStyle.Fill, Margin = new Padding(10, 5, 10, 5), AllowDrop = false, BorderStyle = BorderStyle.None }; words.Font = new Font("Open Sans", 12, GraphicsUnit.Pixel); Words = words; table.Controls.Add(row, 0, 0); table.Controls.Add(labelDrop, 0, 1); table.Controls.Add(buttonRead, 0, 2); table.Controls.Add(words, 0, 3); table.Controls.Add(buttonSave, 0, 4); this.Text = "Generator Słowników"; this.StartPosition = FormStartPosition.CenterScreen; this.Size = new System.Drawing.Size(420, 512); this.Controls.Add(table); } void LabelDrop_Paint(object sender, PaintEventArgs e) { Control control = sender as Control; if (control == null) return; Rectangle rect = new Rectangle(control.ClientRectangle.Location, control.ClientSize); rect.Inflate(-4, -4); e.Graphics.DrawRectangle(new Pen(Brushes.LightGray) { Width = 2, DashStyle = System.Drawing.Drawing2D.DashStyle.Dash }, rect); } void LabelDrop_DragDrop(object sender, DragEventArgs e) { string[] files = e.Data.GetData(DataFormats.FileDrop) as string[]; if (files != null && files.Length > 0) GetWordsFromFiles(files); } void LabelDrop_DragEnter(object sender, DragEventArgs e) { e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Link : DragDropEffects.None; } void ConcatSortUpdate(ref List<string> list) { if (!string.IsNullOrEmpty(Words.Text)) list.AddRange(Words.Text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)); Words.ResetText(); /* LINQ -> Distinct */ list.Sort(); string temp = null; StringBuilder result = new StringBuilder(); int count = 0; foreach (string s in list) { if (!string.IsNullOrEmpty(temp) && temp == s.ToLower()) continue; result.Append(s.ToLower() + "\r\n"); // Environment.NewLine ++count; temp = s.ToLower(); } Words.Text = result.ToString(); MessageBox.Show(String.Format("Ilość wyrazów w Słowniku:\n{0}", count), "Zakończono operację", MessageBoxButtons.OK, MessageBoxIcon.Information); } void ButtonSave_Click(object sender, EventArgs e) { SaveWordsToFile(); } void SaveWordsToFile() { using (SaveFileDialog saveDialog = new SaveFileDialog()) { saveDialog.Filter = "Plik tekstowy|*.txt"; if (saveDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string file = saveDialog.FileName; try { System.IO.File.WriteAllText(file, Words.Text, Encoding.Default); } catch (Exception e) { MessageBox.Show(String.Format("Plik:\n{0}\n\nKomunikat:\n{1}", file, e.Message), "Błąd zapisu", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } } } char[] CustomToCharArray(string value) { value = value.Replace("\\t", "\t").Replace("\\r", "\r").Replace("\\n", "\n"); return value.ToCharArray(); } void GetWordsFromFiles(string[] files) { List<string> result = new List<string>(); char[] splitChars = CustomToCharArray(Chars.Text); foreach (string file in files) { try { string allLines = System.IO.File.ReadAllText(file, Encoding.Default); string[] allWords = allLines.Split(splitChars, StringSplitOptions.RemoveEmptyEntries); result.AddRange(allWords); } catch (Exception e) { MessageBox.Show(String.Format("Plik:\n{0}\n\nKomunikat:\n{1}", file, e.Message), "Błąd odczytu", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } ConcatSortUpdate(ref result); } void ButtonRead_Click(object sender, EventArgs e) { GetWordsFromClipboard(); } void GetWordsFromClipboard() { if (!Clipboard.ContainsText(TextDataFormat.Text)) return; List<string> result = new List<string>(); char[] splitChars = CustomToCharArray(Chars.Text); string[] allWords = Clipboard.GetText(TextDataFormat.Text).Split(splitChars, StringSplitOptions.RemoveEmptyEntries); result.AddRange(allWords); ConcatSortUpdate(ref result); } } }

Link do pliku wykonywalnego Generatora Słowników 

oprogramowanie programowanie hobby

Komentarze

0 nowych
  #1 14.12.2012 12:59

świetny program. pracuj nad nim dalej!

bachus   20 #2 14.12.2012 14:43

Dobra robota, chętnie potestuję w weekend!

Axles   17 #3 14.12.2012 15:13

Cóż tu mogę napisać, testowałem jakiś czas temu ten program, kawał dobrej roboty, ale też trzeba mu trochę czasu poświęcić by go zrozumieć i skonfigurować, co mnie zniechęciło, no ale ja to leń jestem :)

bachus   20 #4 14.12.2012 15:45

Nie wiedziałem, że ma aż takie możliwości! Ja właśnie potrzebuję w swoim "kuchennym" sprzęcie takich "funkcjonalości", to jest genialne.

alucosoftware   7 #5 14.12.2012 16:49

@para88
@bachus
Dziękuję za dobre słowo. Mam nadzieję, że program sprosta wymaganiom. Jestem otwarty na sugestie i zawsze wyjaśnię wszelkie wątpliwości.

@Axles
Również dziękuję i przypominam, że z wersji na wersję jest "trochę" łatwiej. Prostszy domyślny zestaw poleceń, bardziej czytelna dokumentacja. Może dasz mu niebawem jeszcze jedną szansę.

Autor edytował komentarz.
iluzion   5 #6 14.12.2012 18:13

Nie używałem, nie znam tego typu programów, więc jeśli ktoś mnie zapyta o coś podobnego to polecę Spikit. Podoba mi się obsługa. A, no i bardzo dobrze się tu sprawdza interfejs metro.

alucosoftware   7 #7 14.12.2012 18:29

@iluzion
Będę wdzięczny za marketing szeptany, sam nie mam do tego głowy :P

Ponieważ wersja demonstracyjna działa tylko z lekkim opóźnieniem (do kilku sekund), możesz śmiało wykorzystać Spikit np. w celu głosowego uruchamiania aplikacji.

Interfejs jest podobny do Metro (teraz Modern), ale nawiasem mówiąc każdy komponent graficzny programu wykonałem samodzielnie, opierając się na prezentacjach wideo nowego interfejsu WP7 na dp. To miło, że nie tylko ja preferuję taki sposób przedstawiania informacji (swipe).

Autor edytował komentarz.
djfoxer   18 #8 14.12.2012 18:44

Oczywiście program jest genialny! Tak teraz myślę, że możesz spróbować rozpocząć współpracę z tą fundacją: http://www.fpmiinr.org.pl/ W następnym tygodniu następnym pogadam ze znajomą, która tam pracuje.

alucosoftware   7 #9 14.12.2012 19:20

@djfoxer
Wielkie dzięki! I z niecierpliwością poczekam na Twoje ze znajomą ustalenia.

Wiesz, praktycznie każda fundacja, stowarzyszenie lub inna opp otrzymała ode mnie informację o projekcie. Szokującym jest fakt jak wiele z nich (tj. przeważająca większość) zbagatelizowało sprawę i zamiotło ją pod dywan. Rzeczywistość jest bolesna, ale najgorsze jest to, że znaczna część całkowicie unieruchomionych dzieciaków i dorosłych (lub posiadających inne schorzenia) nie dowie się o Spikit, ponieważ zarabianie na cudzym nieszczęściu (sprzedaż drogich urządzeń wspomagających ON przez wiodące firmy w tej "branży") jest w Polsce wyjątkowo opłacane.

Autor edytował komentarz.
arlid   14 #10 14.12.2012 20:52

"Wykorzystanie Spikit jako narzędzia generującego ciągi pytań do wyszukiwarek internetowych lub krótkie wiadomości tekstowe jest już teraz jak najbardziej możliwe i niesłychanie przydatne."

Wprost niesamowite. Wspaniała funkcja. Program rzeczywiście jest coraz lepszy. Generator słowników wydaje się być dobrym pomysłem :) A powiedz mi, bo wiem, że była taka możliwość - czy nadal istnieje możliwość dofinansowania do licencji? Niestety nie zagłębiałem się jak to działało, czy to Ty oferowałeś zniżkę samodzielnie, czy poprzez fundację, stąd pytanie.

alucosoftware   7 #11 14.12.2012 21:18

@arlid
Co roku PFRON realizuje program, dzięki któremu osoby niepełnosprawne mogą otrzymać dofinansowanie do zakupu sprzętu rehabilitacyjnego oraz specjalistycznego oprogramowania. Koszt takich urządzeń i oprogramowania mieści się zazwyczaj w przedziale 4000 - 20000 PLN. Żaden normalny obywatel nie może ot tak sobie pozwolić sobie na zakup takich urządzeń, tym bardziej osoby z rozmaitymi schorzeniami, których i tak już doświadczyło życie. Są firmy, które cały rok czekają na taki stan rzeczy...

W ramach ostatniego programu PFRON (Aktywny Samorząd) można było dokonać zakupu Spikit przy wkładzie własnym 10%, co zamykało się w kwocie ok. 20 zł. Ponieważ niewiele osób skorzystało z takiej możliwości (bo o tym po prostu nie wiedziało), postanowiłem wyjść im naprzeciw i definitywnie obniżyć cenę licencji do takiego poziomu, aby każdy mógł sobie na nią pozwolić, bez potrzeby ingerencji jakichkolwiek instytucji (teraz jest to ok. 37 zł).

Ceny za produkty (w tym oprogramowanie) oferowane przez specjalistyczne firmy są, czysto mówiąc, abstrakcyjne i jak to podkreśla wiele rodzin mających niepełnosprawne dzieci - chore... Mam więc nadzieję, że uda mi się dotrzeć do jak największej liczby osób i pokazać im Spikit - nie muszą przecież go kupować, bo jest wersja darmowa (ale i tak płatna licencja jest XX-krotnie tańsza od podobnej klasy rozwiązań, patrz Google).

Co do wspomnianej przez Ciebie funkcji - będzie lepiej. Mam zamiar wprowadzić możliwość wczytywania kilku słowników naraz i przełączania się pomiędzy nimi za pomocą jakiegoś polecenia. Dzięki temu dokładność rozpoznawanej mowy będzie na wysokim poziomie, a i lista słów znacznie dłuższa. Ale... pożyjemy, zobaczymy. Musi to iść w parze z zainteresowaniem aplikacją.

Autor edytował komentarz.
  #12 14.12.2012 21:51

no to chylę czoło, nie wiedziałem że to tak wygląda. tym barziej trzymam kciuki, żeby się udało. a jak to wygląda u konkurencji. Są jakieś podobne do twojego programy?

flaszer   10 #13 14.12.2012 23:01

No no, widziałem kilka różnych podejść i realizacji tematu, ale Twój najbardziej przypadł mi do gustu. Powiedz jeszcze, bo nie zgłębiałem możliwości aplikacji (póki co :P), jak wygląda sprawa z załadowaniem słownika z pliku, w którym to jest słownik z mega ilością słów.

alucosoftware   7 #14 14.12.2012 23:41

@flaszer
Dzięki.

Załadowanie Słownika składającego się z 60 tysięcy wyrazów (dość pokaźnej listy frekwencyjnej języka polskiego) i włączenie tak skonstruowanej Reguły nie zabiera więcej niż 30 sekund na Intel Atom 1,8 GHz.

Przy tak dużym Słowniku dokładność rozpoznawania następujących po sobie słów nie jest - niestety - wysoka, raczej kiepska, ponieważ paronimy (inaczej wyrazy bliskobrzmiące) mają zbliżoną reprezentację i Spikit często się myli. Zaleca się, aby nie stosować list dłuższych niż 2 tysiące wyrazów (domyślny Słownik zawiera 1000 pozycji). Więcej wskazówek znajdziesz w filmach i samej Dokumentacji programu.

Jeżeli chodzi o pozostałą funkcjonalność programu (standardowe Reguły głosowe Spikit) - wierz mi, ale sterowanie systemem operacyjnym rzadko odbywać się będzie za pomocą wiekszęj ilości komend niż 100 - 200. Na chwilę obecną nie mogę sobie wyobrazić czynności, której nie mógłbym wykonać w jakiś sposób za pomocą Spikit - zawsze znajdzie się rozwiązanie.

Weź np. funkcję Klawisze, zawiera ona listę podstawowych poleceń wybierających pewną kombinację klawiszy po rozpoznaniu polecenia głosowego. Cóż prostszego rozbudować program o dodakowe możliwości edycji tekstu:

(zaznacz (poprzednie {SHIFT+CTRL+LEFT} | następne {SHIFT+CTRL+RIGHT}) | (poprzednie {CTRL+LEFT} | następne {CTRL+RIGHT})) słowo

zaznacz poprzednie słowo - zaznacza słowo
zaznacz następne słowo - zaznacza słowo
poprzednie słowo - zmienia pozycję kursora w tekście bez zaznaczania
następne słowo - zmienia pozycję kursora w tekście bez zaznaczania

itp. itd.

Autor edytował komentarz.
  #15 15.12.2012 10:24

Z tego co widzę program oferuje bardzo podstawowe komendy, ale można dodać samemu wszystko inne co brakuje? Czy tak?

  #16 15.12.2012 13:42

Podobne funkcje są zapisane w systemie wystarczy mieć jego angielską wersje by sterować aplikacjami, przeglądać zdjęcia,video itp. za pomocą mowy.

flaszer   10 #17 15.12.2012 21:40

Dzięki za odpowiedź. Zdaję sobie sprawę, że do sterowania maszyną więcej słów nie potrzeba, ciekaw byłem tylko czy ładując odpowiednio duży słownik i mając dopracowane algorytmy przetwarzania poszczególnych słów można uzyskać właściwie nieograniczone możliwości ;) Ale co jest do wszystkiego, to jest do niczego, jak to mówią ;P

alucosoftware   7 #18 16.12.2012 08:31

@Brow
Tak, wystarczy mieć anglojęzyczną wersję systemu Windows i już można cieszyć się możliwością wypowiadania - angielskich - poleceń.

Spikit wspiera język polski. Z drugiej strony, program dostarczam w formie: "możesz utworzyć tysiące własnych komend głosowych, które - gdy rozpoznane - wykonają za Ciebie co tylko zechcesz", która odróżnienia się od standardowego podejścia producentów aplikacji: "masz dostępnych 30 poleceń, w tym naciskanie entera... w nowej wersji będzie można nacisnąć escape..." :P

@Anonim
Dokładnie tak, niewiele osób to rozumie - a wystarczy przeczytać instrukcję do programu ;)

Autor edytował komentarz.
alucosoftware   7 #19 16.12.2012 10:54

@para88
Na rynku są inne rozwiązania rozpoznawania mowy, ale ciężko tu mówić o dużych podobieństwach między produktami i wskazywać lepsze. Inaczej mówiąc, nie byłoby to sprawiedliwe gdybym za czyimiś plecami wypowiadał się na temat konkretnego programu negatywnie bez możliwości jego obrony przez autora/autorów.

Spikit jest "wielopłaszczyznową" odpowiedzią na to co dostępne było do tej pory na rynku polskim. Możliwości, wymagania sprzętowe i cena świadczą na korzyść Spikit. Nie używam w związku z programem epitetów typu "najlepszy", "jedyny na rynku" itp. ponieważ nie chcę mydlić oczu użytkownikom - niech sami zdecydują i porównają go z dostępnymi na rynku programami, choć w co niektórych przypadkach problemem może być dostępność cenowa...

Autor edytował komentarz.
kadet90   5 #20 16.12.2012 12:31

W zasadzie to nie powinienem się wypowiadać bo używalem programu ledwo 2 minuty ale nawet to co mówię ja (a z zrozumieniem mnie mają i ludzie problemy) sobie radzi. Niestety kolejkowanie na 5s - 10s skutecznie zniechęciło mnie do dalszego testowania.

alucosoftware   7 #21 16.12.2012 12:39

@kadet90
Takie właśnie jest ograniczenie wersji bezpłatnej (demo), niektórych to nie zraża. Zawsze możesz zamówić klucz licencyjny ;)

Autor edytował komentarz.
bachus   20 #22 16.12.2012 16:36

@kadet90: ... dodatkowo, że licencje to 37zł - nie uważam, aby to było bardzo dużo.

  #23 17.12.2012 13:47

Świetny program, mógłbyś pewnie wypuścić wersję do zastosowań biznesowych z przygotowanymi słownikami dla różnych dziedzin albo z szablonami poleceń. Użytkownicy tacy są z reguły zapracowani i nie mają czasu na tworzenie reguł ale dać im taki program z gotowymi regułami - na pewno skorzystają.
A dla zastosowań domowych - mógłbyś również udostępniać taką bazę reguł, choćby nadsyłaną przez innych użytkowników programu, dla zarejestrowanych oczywiście posiadaczy licencji.
Spróbuję potestować choć dla mnie sterowanie komputera głosem czy dyktowanie nie jest rozwiązaniem - w biurze nie preferuje się czegoś takiego a w domu jest zbyt wiele rozpraszaczy żeby to miało sens (np. psy mogą zacząć wykonywać jakieś polecenia w czasie dyktowania ;)
Powodzenia

  #24 17.12.2012 15:03

wow!!! program jest super. wielkie dzięki!

alucosoftware   7 #25 18.12.2012 10:29

@Anonim
Dlaczego miałaby to być dedykowana wersja? Jest jedna, dla wszystkich.

Reguły głosowe można zapisywać i wczytywać z pliku. W ramach rozszerzonego wsparcia technicznego zapewniam szkolenie oraz dostosowanie programu do indywidualnych potrzeb.

Korzystanie z programu musi być jednak świadomym wyborem. Rozumiem, że ktoś może być zapracowany, ale jeśli Spikit przypadnie komuś do gustu, ale ta osoba nie będzie chciała poświęcić choć 1 lub 2 godzin swojego życia, aby zaznajomić się z potencjałem programu (tj. przeczytać Dokumentację) - może lepiej, aby nie korzystała z niego w ogóle...

PS. Psy swoim szczekaniem nie wykonają żadnego polecenia :)

Autor edytował komentarz.
jaredj   10 #26 21.12.2012 13:41

Hej
Byłem nie zalogowany jak pisałem komentarz (Anonim o 13:47 17.12.2012).
Trochę komentarza do Twojego komentarza:
Nie chodzi mi o dedykowaną wersję tylko wersję z dodatkami przeznaczonymi dla biznesu - dodatkowe słowniki (gotowe), zestawy poleceń itd. W większości przypadków szkolenie czy dostosowanie programu do indywidualnych potrzeb nie wchodzi w grę - brak czasu, odległość itd.
Dalej program ludziom by z niego korzystali czy żeby doceniali jego genialność? Bo jeśli to drugie to nie mam uwag...
Im program bogatszy w pre-instalowane dodatkowe opcje tym do większej grupy odbiorców trafi. Nie jestem pewien dlaczego tego nie chcesz przyjąć do wiadomości.
Np. używam od długiego czasu genialnego edytora tekstu - UltraEdit. Producent dostarcza goły program ale też dostarcza mnóstwo słowników do kolorowania składni, również wiele szablonów które dostosowują interfejs programu w zależności od profilu działania - koder html, koder c++ itd. - na paskach są inne ikony, inne jest pole robocze. Ukłon w stronę kupującego. Nie muszą ale mogą. Musiałbym poświęcić procent swojego czasu by to poustawiać wszystko ale nie muszę bo mam gotowe.

To nie psy mają wydać polecenia komputerowi - to ja dyktując mogę nie chcąco wydać im jakieś polecenie ;) Nic się nie stanie jeśli to będzie siad ale jeśli są wyszkolone zareagować na np. słowo OBCY to się zrobi rwetes, firanki mogą pospadać, wazony potłuc itp chaosy.

alucosoftware   7 #27 27.12.2012 13:31

@jaredj
Rozumiem Twoje stanowisko, ale Spikit został utworzony głównie dla osób z pewnymi dysfunkcjami np. osób z dysfunkcją narządu ruchu lub niepełnosprawnych dzieci. Program oraz jego podstawowe funkcje umożliwiające sterowanie komputerem (z wyłączeniem dyktowania tekstu) udostępniam z bazą grubo ponad stu poleceń głosowych oraz przystępną instrukcją jak rozszerzyć ich listę do ilu tylko użytkownik zechce. Taki ogrom domyślnych poleceń głosowych może już sprawiać trudności osobom, które nie posługują się biegle komputerem (w tym małym dzieciom) - i tak w rzeczywistości jest... stąd nieustanne skracanie domyślnych poleceń zgodnie z przesłanymi do mnie uwagami, aby te podstawowe polecenia i komendy były łatwe do zapamiętania.

Jeśli użytkownik potrzebuje indywidualnie dopasowanego programu (tj. dedykowanych Reguł głosowych) - może skontaktować się ze mną i takowe otrzymać lub utworzyć je samemu - to naprawdę nie zajmuje wiele czasu (a szkolenia przeprowadzane są przez Internet). Indywidualne Reguły przeważnie dotyczą funkcji Klawisze, dzięki której można sterować aplikacjami (np. edytorem tekstu lub odtwarzaczem filmów, slajdów) za pomocą poleceń głosowych przypisanych do pewnych skrótów klawiszowych. Należy jednak pamiętać, że każdy z nas ma własne preferencje w wyborze wykorzystywanych na codzień programów komputerowych, więc złym pomysłem byłoby utworzenie setek tysięcy poleceń dla wszystkich użytkowników. Niemniej, po przeczytaniu - ze zrozumieniem - Dokumentacji, można w godzinę przystosować program do każdego zadania i takie pozytywne relacje otrzymuję od użytkowników. Jeżeli pewne kwestie są opisane niezrozumiałym językiem, wystarczy zwrócić mi na to uwagę :)

Z drugiej strony, coraz więcej osób nie rozumie słowa pisanego... nic na to nie poradzę.

Program jest bardzo użyteczny z domyślną bazą poleceń i nie trzeba wiele by to zrozumieć, ale by tak się stało należy go najpierw wypróbować lub zobaczyć filmy instruktażowe.

Autor edytował komentarz.
  #28 01.01.2013 22:11

Warto pomyslec o gotowych zestawach komend do różnych programów, rozumiem że program został stworzony dla osób z dysfunkcjami jednak zakładam że pieniądze z licencji nie zależnie od kogo będą pomogą w pracach nad programem. A zestawy poleceń przygotowane do popularnych programów przestestowane i najlepiej przygotowane przez użytkowników tych programów znacząco myśle pomogły by w rozprzestrzenieniu programu, rozumiem że wystarczy aby przeczytać instrukcje i samemu zbudować najpotrzbniejsze komendy jednak to zapewne znacznie ograniczy liczbę użytkowników do tych którym będzie się chciało a później do tych którym będzie się chciało poszukać w internecie gotowych paczek, warto by stworzyć paczki do popularnych programów i udostepniac je w programie jako opcje, plus tu pewnie przydalby sie jakis mechanizm glosowego przelaczania reguł, chyba że dałoby się zestawy reguł niektóre przyporządkować do konkretnych programów, tzn stworzyc polecenia które dzialaja jezeli focus jest na programie adobe photoshop to ten zestaw regul ma priorytet a jezeli nie to nie sa wogole uwzgledniane

Ogólnie program ma duży potencjał, niska cena też przemawia na jego korzyść, polecilbym popromowac go troche w serwisach typu dobreprogramy, dajac np: darmowe licencje do rozdania serwisą co również przyniesie troche szumu wokol programu. Polecilbym sprobowanie wyslania zapytania np do Antywebu, a nuż pojawi się tam recenzja.

Naprawdę podoba mi się program i mam nadzięje że nie zniknie albo nie zostanie wykupiony i zniknie albo zamieni w to co mozna zobaczyc u konkurencji.
Obecnie z programem mialem problem tylko na poczatku z mikrofonem wbudowanym w laptopa bo jakiś program go zablokowal dla siebie(z tym tez warto by cos zrobic), teraz pojawil sie jeszcze jeden problem bo wlasnie ogladalem film z wlaczonym programem i zlapal na mikrofonie "zamknij program"
wiec z tym tez trzeba by pokombinowac jak tego unikac;p

Życze sukcesów i dalszego rozwijania programu
Jutro pewnie bede licencje kupowal:]

alucosoftware   7 #29 02.01.2013 10:57

@Rasers
W kwestii paczek z Regułami dla popularnych programów - jeszcze się nad tym zastanowię. Czasem jest tak, że z całkiem "prostej koncepcji" można zrobić "napęczniały śmietnik", więc jakiekolwiek zmiany w tym kierunku muszą przeze mnie zostać bardzo gruntownie przemyślane...

Akcja promocyjna w portalu dobreprogramy miała już miejsce ;)

I tu mała uwaga dla Czytelników, serwisy o podobnej tematyce (pliki, programosy, itp.) umieściły (i pewnie jest to ich powszechna praktyka) program w swoich bazach bez mojej zgody. Takie portale więcej szkodzą niż przynoszą korzyści, szczególnie gdy większość informacji o programie tam zawartych jest nieaktualnych i nieprawdziwych.

Wiele komunikatorów (w tym Skype) posiada opcję "automatycznego dostosowywania poziomu sygnału wejściowego", dlatego zalecam wyłączenie takiej funkcjonalności przed rozpoczęciem zabawy z programem Spikit. W nowej wersji programu można włączać i wyłączać Reguły głosowe za pomocą... głosu :) oraz kontrolować parametr odpowiedzialny za podejmowanie przez program decyzji o zaakceptowaniu lub odrzuceniu jakiegoś polecenia głosowego (np. gdy program nie jest do końca pewny wypowiedzi użytkownika) - takie oto rozwiązanie pozwoli uniknąć opisywanych przez Ciebie problemów.

Dziękuję za dobre słowo!

Autor edytował komentarz.
kadet90   5 #30 16.01.2013 17:10

No, teraz testuje pełną wersje i jest na prawdę świetna. Reakcja jest prawie natychmiastowa a i w 90% przypadków z powodzeniem rozpoznaje moje polecenia, a mowy wyraźnej na pewno nie mam :) Napotkałem się tylko na jeden problem którego nie potrafię ominąć, coś dyktowanie nie chce działać, niby włączone a jednak coś nie chce rozpoznawać, tak czy siak program to dla mnie 9/10, ten minus jeden punkt za lekko klatkujący interfejs :P

alucosoftware   7 #31 16.01.2013 19:52

@kadet90
To miło, że wszystko śmiga jak należy. Jeżeli chodzi o funkcję Dytkowanie spróbuj następujących kroków:

1. Utwórz na pulpicie pusty plik tekstowy w Notatniku (.txt)
2. Wczytaj taki pusty Słownik z pliku (Wczytaj z pliku)
3. Obejrzyj dokładnie powyższe filmiki instruktażowe omawiające funkcję Dyktowanie, które zawierają bardzo ubogie (ilościowo) Słowniki.
4. Wydawaj polecenie głosowe "Spikit zmniejsz próg akceptacji", aż osiągniesz wartość 50%
5. Wyłącz wszystkie funkcje za wyjątkiem funkcji Dyktowanie, której Słownik składać się będzie z dosłownie kilku wyrazów.
6. Zacznij wypowiadać w dowolnej ilości i dowolnej kolejności wyrazy ze Słownika (uruchom wcześniej np. Notatnik).
7. Powoli zwiększaj próg akceptacji tak, aby program jeszcze w całości rozumiał tworzone przez Ciebie zdania.
8. Spróbuj wypowiadać bardzo (aż nadto) wyraźnie poszczególne słowa ze Słownika, jeżeli program robi błędy
9. Powoli zwiększaj ilość wyrazów w Słowniku (np. często używane zwroty). Nie umieszczaj w Słowniku wyrazów, których raczej nigdy nie wypowiesz!!!
10. Jeżeli to nie pomoże - uruchom systemowy rejestrator dźwięku, nagraj swój głos i odsłuchaj. Być może masz nie do końca prawidłowo skonfigurowany mikrofon (zbyt duże natężenie hałasu, szum, zniekształcony dźwięk). Wyłącz przy tym wszelkie "usprawnienia" dźwięku i tzw. programowe zwiększenie natężenia sygnału (boost).

PS. Dziękuję za pozytywną ocenę, bardzo proszę o adekwatną ocenę programu w bazie dobrychprogramów (płytka) i lajka na Facebooku ;) To naprawdę podnosi morale!