Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Androidowy interaktywny sterownik głosowy do domów inteligentnych itp.

Quaki 02 Gru 2013 20:10 13419 23
  • Androidowy interaktywny sterownik głosowy do domów inteligentnych itp.
    Witam
    Tym razem chciałem pokazać aplikacje stworzona z dwóch powodów. Pierwszy był prozaiczny większość ludzi nie zdaje sobie sprawy jak potężne komputery nosi w kieszeni. Wymienianie na coraz to nowsze modele nie ma sensu bo nawet w 10% nie wykorzystują mocy obecnie posiadanych. Drugi był taki że jeden z kolegów na forum w innym temacie napisał "Co do sterowania androidem innymi urządzeniami niech ktoś przedstawi konkretne przykłady, projekty itd. skoro to takie proste"
    W takim wypadku ja przedstawiam albo nie w sumie ;) da sobie rade sama. Bardzo pomocna dziewczyna fakt ze jeszcze trochę mało rozgarnięta i niewiele umie ale popracujemy nad tym
    Ja tylko gwoli wprowadzenia oto Anna :)


    Link


    Teraz trochę technicznej cześć.
    Płytka wykonawcza to uniwersalna płytka zakupiona na znanym portalu aukcyjnym z mikroprocesorem Atmega 8 (nie mam jej schematów wiec ich nie będzie)
    Telefon na którym działa aplikacja to Samsung Galaxy S2 (ale śmiem sądzić ze na każdym telefonie z androidem 4.0 i wyżej aplikacja będzie działać)
    Połączenie za pomocą modułu BT / UART (zakupiony na portalu znanym portalu aukcyjnym tez nie ma schematu) po stronie telefonu wbudowany BT (można tez połączyć inaczej za pomocą fal radiowych albo po wifi )
    Jak całość działa widać na filmiku ogólnie program jest dość prosty (powstał żeby zobrazować możliwości telefonu i pokazać że nie jest to szczególnie skomplikowane ) jako ze został napisany w sumie w ciągu jednego dnia. Ale że komunikacja może odbywać się w obie strony można rozbudować go do dość sprawnej i dużej aplikacji.
    Komendy głosowe
    -witaj Anno
    -Anno przedstaw się
    -Anno włącz światło
    -Anno wyłącz światło
    -Anno zakończ aplikację
    Udostępniam też demo programu tak żeby każdy kto chce mógł z Anną "porozmawiac" w wersji demo nie ma części wykonawczej czyli Anna słucha i odpowiada ale nie wykonuje czynności ;). Żeby Anna mogła nam odpowiadać trzeba mieć zainstalowany program syntezy głosu w moim przypadku jest to polski darmowy program Ivona z glosem Maja
    Minusem w posługiwaniu się językiem polskim jest to ze telefon musi mieć dostęp do internetu, jeśli chcielibyśmy się komunikować po w języku angielskim można to robić offline.
    Program na telefon napisany w B4A program na atmege w bascomie
    Jak macie jakieś dodatkowe pytania lub sugestie ewentualnie pomysły na jakąś inna aplikacje która przyda się w życiu lub w waszej pracy to jestem otwarty na merytoryczną dyskusje.
    Pozdrawiam


    Fajne!
  • #2 02 Gru 2013 22:13
    szymon122
    Poziom 37  

    Quaki napisał:
    fal radiowych

    A bluetooth i wifi to co to jest :D

    Inne osoby próbowały korzystać z tego programu poza tobą? Czy wtedy reaguje równie dobrze? W jaki sposób dodajesz do programu nowe komendy na które ma reagować?

  • #3 02 Gru 2013 23:21
    Quaki
    Poziom 20  

    szymon122 masz racje chodziło mi o to ze można to podpiąć po prostu pod praktycznie każdy rodzaj transmisji jaki można zestawić z telefonem :)
    Jeśli chodzi ci o to czy ktoś już wykorzystywał funkcje rozpoznawania głosu to sadze ze tysiące ludzi bo wykorzystałem gotowy element jaki jest zaszyty w Androidzie :) Ale każdy może spróbować :)
    Na razie komendy dodawane są w środku programu ale pewnie powstanie wersja gdzie będzie można sobie samemu dopisywać komendy, odpowiedzi do nich i to co ma program wysyłać w wypadku usłyszenia danej komendy.
    Pozdrawiam

  • #4 03 Gru 2013 00:27
    szulat
    Poziom 23  

    Quaki napisał:
    Minusem w posługiwaniu się językiem polskim jest to ze telefon musi mieć dostęp do internetu

    czy to znaczy, że program pokazujący jak potężne urządzenia nosimy w kieszeni, pokazuje że potęga tych urządzeń polega na przekazywaniu głosu na serwer zewnętrzny gdzie jest on przetwarzany? bo jeżeli tak, to może wystarczyłaby sama atmega :)

  • #5 03 Gru 2013 01:14
    Quaki
    Poziom 20  

    No jak kolega da rade to ja z chęcią zobaczę takie zastosowanie atmegi :) Proszę dokładnie przeczytać konieczność połączenia jest dla języka polskiego jeśli chcemy używać angielskiego nie ma takiej konieczności jeśli jest ktoś kto da rade coś takiego zrobić na atmedze to ja chylę czoła.
    Pozdrawiam

  • #6 03 Gru 2013 08:00
    otapi
    Poziom 25  

    Sporo klikania jak na aplikację sterowaną głosem ;]

  • #7 03 Gru 2013 12:31
    Quaki
    Poziom 20  

    No cóż niestety stworzenie programu który analizowałby cala rozmowę i wnioskował z niej czego się od niego oczekuje leży na razie poza moimi możliwościami (czytaj jestem za cienki w uszach żeby sam napisać taka aplikacje ) Jeśli jest ktoś kto samodzielnie napisze taka aplikacje to ja jak już wspomniałem chylę czoła
    A klikanie ma na celu powiadomienie programu o początku wydawania komendy można to zrobić za pomocą zestawu słuchawkowego na przykład,odpada tez wtedy problem z głośnością komend bo mówiąc do zestawu nie musimy podnosić głosu.
    Pozdrawiam

  • #8 03 Gru 2013 12:51
    VSS
    Poziom 21  

    może użyj "magicznego słowa" np. "Anna". tak działało kiedyś wybieranie głosowe w ericssonach.
    wypowiadasz hasło, Anna odpowiada, ze się zaktywowała i wtedy wypowiadasz komendę. wtedy nie będzie trzeba klikać w ekran.

  • #9 03 Gru 2013 14:33
    Quaki
    Poziom 20  

    Niestety nie jest to takie proste chociaż nie powiem ze o tym nie myślałem :) Problemem jest software zaszyty w Androidzie który nie pozwala na takie zabawy trzeba by napisać swoje oprogramowanie rozpoznające mowę co dla jednej osoby jest praktycznie nie osiągalne. Sa wprawdzie programy typu virtual assistant które dają możliwości uruchamiania innych aplikacji i można by to wykorzystać ale nawet one wymagają dostarczenia informacji kiedy maja słuchać i analizować głos
    Pozdrawiam

  • #10 03 Gru 2013 19:01
    scal12
    Poziom 19  

    Poprosimy więcej szczegółów, jak możesz podaj przykład jak uruchomić wysyłanie komend z androida przy pomocy bluetooth.

  • #11 03 Gru 2013 21:53
    Quaki
    Poziom 20  

    scal12 zależy w czym chciałbyś pisać programy ja akurat pisze w B4A i korzystam z gotowych bibliotek a można z nich korzystać tylko i wyłącznie w wypadku posiadania licencji na to oprogramowanie wiec mój przykład nic ci nie da ale z łatwością znajdziesz takie przykłady przez wyszukiwarkę (pod Eclipse na przykład)
    W przypadku akurat tego programu wysłane są tylko dwie literki A lub B (nic więcej nie było mi potrzebne) ale można wysyłać i odbierać praktycznie dowolne ciągi znaków chce zrobić podobną aplikacje z możliwością wpisywania swoich własnych odbieranych komend odpowiedzi i przypisanych im wysyłanych elementów
    Pozdrawiam

  • #12 03 Gru 2013 22:05
    scal12
    Poziom 19  

    Przygodę z Androidem dopiero zamierzam zacząć, więc wszystko póki co jest zielone :) A ludzie niestety nie chętnie się dzielą wiedzą nawet szczątkową :)

  • #13 04 Gru 2013 12:09
    esh0
    Poziom 19  

    Wykorzystaj tą klasę http://developer.android.com/reference/android/speech/RecognitionListener.html

    A tutaj nawet masz gotowy przykład działający jako serwis http://stackoverflow.com/questions/14940657/a...h-recognition-as-a-service-on-android-4-1-4-2

    Nie zagłębiałem się dokładnie, ale wygląda na to, że serwis ten w tle analizuje dane z mikrofonu i sam stwierdza (onBeginningOfSpeech()) kiedy ktoś zaczął gadać i kiedy skończył (onEndOfSpeech()).

  • #14 06 Gru 2013 19:51
    Andrzej_;)
    Poziom 13  

    Problem z ciągłym dotykaniem ekranu żeby poinformować telefon o chęci podania rozkazu można łatwo obejść.

    Wystarczy że rozbudujesz część elektroniczną o przełącznik akustyczny reagujący na klaśnięcie w dłonie (albo dwa klaśnięcia - żeby wyeliminować przypadkowe)

    Można zrealizować to całkowicie analogowo a nawet może uda zaprzęgnąć atmegę do roboty (jakiś filtr HP).
    Atmega wysyła info o poprawnych "klaskach" i uruchamia aplikacje do rozpoznawania głosu... i mamy w pełni "dźwiękową" kontrolę w domu

    Muszę coś takiego sobie wykombinować :)
    A Tobie gratuluję pomysłu :)

  • #15 06 Gru 2013 20:50
    Quaki
    Poziom 20  

    esh0 popatrzę w sumie ciekawe rozwiązanie zobaczymy czy da się coś wykombinować na tych przykładach
    Andrzej_:) w sumie można to tak rozwiązać można tez przez zestaw słuchawkowy BT lub w na przykład prze smartwatch
    Pozdrawiam

  • #16 07 Gru 2013 22:26
    marekmichal2
    Poziom 11  

    Szkoda ze nie ma wersji na iOs

  • #18 08 Gru 2013 18:30
    piochuxl
    Poziom 20  

    Oki fajna aplikacja ale bez sensu. Dotknąć ekran by powiedzieć co się chce..... a nie można np 10 przycisków na ekranie zrobić? przerost treści chyba że zrobisz by np reagowała na słowo np nadaj jej imię i po nim komenda. Przypomina mi to kiedyś w sonym ericssonie była funkcja shake control. Po wciśnięciu przycisku i wstrząśnięciu telefonem utworek zmieniał się na następny.

  • #19 09 Gru 2013 05:43
    tayamoto
    Poziom 7  

    Fajna aplikacja, jakiś czas temu w D7 pisałem podobny program na PC w oparciu o Sapi 5.1 program sterował 8 przekaźnikami na zewnętrznej karcie. Niestety komendy musiałem wydawać po angielsku, ale udało się zaimplementować ponad 100 rożnych poleceń. Na Twoim miejscu faktycznie pomyślał bym o słowie "furtce" np. Anna oraz słowie "wyjściu" np. to wszystko. Tak to miałem zrobione u siebie i działało dość sprawnie.

  • #20 09 Gru 2013 12:54
    Quaki
    Poziom 20  

    Napisze to jeszcze raz w API które wykorzystałem nie da się zrobić "słowa klucza" tak zostało stworzone przez Google i tyle. Nie ma możliwości wykorzystania słuchania w tle. Trzeba "mechanicznie" podać moment początku wydawania komend (API samodzielnie znajduje moment końca gdy zalegnie cisza ) Da się podłączyć zestaw słuchawkowy BT do tableta lub inne urządzenie bezprzewodowe do Atmegi na przykład jakiś moduł radiowy zamknięty w obudowie zegarka żeby można było nie dotykać ekranu.
    W rzeczywistości rozwiązanie powinno wyglądać tak ze na ścianie wisi sobie tablet jako panel dotykowy na nim jest aplikacja do rozponzawiania mowy polaczona z aplikacja do sterowania normalnego "przyciskowego" (jeśli będzie w domu jakaś impreza lub coś podobnego to rozpoznawanie mowy nie będzie działać będzie po prostu za głośno) do tego jest słuchawka BT a tablet z atmegą połączony jest przez USB (lub po wifi ale do tego potzrebny by byl dodatkowy modul UART/wifi) dalsze połączenia to elementy wykonawcze połączone z atmega po rs485 rozsiane po całym domu ewentualnie tablet można połączyć z jakimś PLC czy tez inna jednostką sterującą
    Pozdrawiam

  • #21 11 Gru 2013 07:44
    esh0
    Poziom 19  

    Quaki, da się. W załączonej aplikacji zrobiłem tak, że czeka ona na to, aż rozpoczniesz gadać - wychwytuje to, wychwytuje też gdy skończysz i rozpoznaje słowo. Rozpoznane słowo wyświetlam na ekranie. Sprawdziłem na Nexus 7 i Nexus 4- na obu działa prawie bezbłędnie (prawie, bo są problemu z np. cyframi - "raz dwa trzy" czasami jest "1 2 3" czasami "raz dwa 3" itd).

    https://www.dropbox.com/s/mxnfhauzn74dos8/VoiceCommandTest.apk

    Robisz sobie słowo klucz np. "Iwona" i przechodzisz w tryb rozpoznawania komend.

  • #22 11 Gru 2013 12:19
    Quaki
    Poziom 20  

    esh0 ty wykorzystujesz klasę http://developer.android.com/reference/android/speech/RecognitionListener.html a ja wykorzystuje klasę http://developer.android.com/reference/android/speech/RecognizerIntent.html
    W tej która ja wykorzystuje się po prostu nie da, tak została zbudowana.Poza tym minusem słuchania w tle jest to ze jeśli wystąpi jakiś hałas którego program nie rozpozna to się wiesza (sprawdziłem). Jeśli jest cisz to działa dobrze.
    Pozdrawiam

  • #23 13 Gru 2013 07:13
    esh0
    Poziom 19  

    Wiesz, wczoraj uruchomiłem moją aplikację na 4.1.1, położyłem obok tabletu słuchawki w których leciała muzyka i nic się nie wysypało. Co więcej, nawet dalej w miare poprawnie rozpoznawał mój głos.

    Zainteresowałeś mnie tematem wysypywania się i postaram się sprawdzić moją metodę dokładniej.

  • #24 13 Gru 2013 13:04
    Quaki
    Poziom 20  

    esh0 ja to zauważyłem przez przypadek spadła mi szklanka i aplikacja się wysypała potem zauważyłem ze wystarczy klaśniecie i tez aplikacja pada (nie za każdym razem) dodatkowy problem to ciągłe obciążenie łącza internetowego (ale to jest zrozumiale bo aplikacja non stop przesyła dane do serwera analizującego )
    Ja właśnie pracuje nad wykorzystaniem zestawu BT do inicjalizowania komendy
    Pozdrawiam