Pogadaj z Jolką

Hej
Mam kilka nurtujących pytań.
@jolka bardzo proszę w miarę możliwości o odpowiedź na poniższe zagadnienia.

Aktualnie pracujecie nad aplikacjami mobilnymi, może któreś z poniższych opcji jest możliwa do wprowadzenia bez większego wysiłku przy aktualnych kompilacjach.
Nie jestem programistą i może niektóre z tych rzeczy są abstrakcyjne,
a niektóre możliwe, że z niewiedzy w ogóle źle rozumiem :stuck_out_tongue_closed_eyes:

1

Czy jest możliwość aktywowania zdalnie w apliakcji mikrofonu (emulator przycisku)?
Rozumiem, że jest to guzik, if naciśniesz to włacz mikrofon, tak samo hotword jak wykryje to wlacz mikrofon, czy można zrobić dodatkowego trigera, komende, np. tak jak mogę “mobile_ais_dom_4534436” dać usługę notify to on jest wyzwalaczem?

2

Czy jest możliwość aby w jakiś sposób atrybutować powiedziane komendy przez aplikacje X i Y.
Mówie do jednego telefonu to komenda ma atrybut mobile_ais_dom_453443 a do drugiego mobile_ais_dom_99999.
Można by zrobić wtedy w intencjach, że jak mówię do tabletu X to samo zapal światło wystarczy, bo wiem z jakiego pokoju mówię
W momencie przełączenia guzika w aplikacji, mogę wyciągnąć jaki użytkownik to zrobił data.new_state.context.user_id i żeby było tak samo w przypadku głosowej komendy.
W Dzienniku widzę, kto przełaczył, ale jak komenda jest głosowa to nie widać.
Tak samo data.new_state.context.user_id:null
Żeby np. można było w intencjach zrobić akcję wysłania “komendy” przez mqtt z ID użytkownika/ urządzenia

3

Czy jest możliwe dodanie “sensora”, w momencie włączenia mikrofonu, czy to przez guzik, czy też hotword, jest sobie encja, która zmienia stan np. true, po deaktywacji false

Zastosowanie: w przypadku włączenia mikrofonu, ściszam telewizor żeby lepiej zrozumiał to co mówie. Tutaj też istotne jest który mikrofon w jakiej aplikacji.

4

Czy jest jakaś możliwość wyłączenia agenta AIS,
a żeby został jedynie Conversation z własnymi sentencjami.
Tak jak mogę wyłaczyć agenta Google Home odinstalowując integracje google home
Chodzi o to żeby w razie czego powiedział nie rozumiem a nie sam wymyślał Włączam parowanie urządzeń zigbee

5

Jak dobrze zrozumiałem, wrzucacie do /res/raw swój wakeword i kompilujecie.
Czy jest możliwość aby aplikacja miała dynamiczne pobranie tego keyworda?
Robię sobie swoje słowo “hej banana” pobieram plik ppn i wrzucam do jakiegoś folderu w androidzie, albo w aplikacji?

6

Czy zrobienie polskiego hotword Jolka to jakaś duża kasa w picavoice?
Na stronie mają info, że customowo robią takie rzeczy,
czy może po prostu nie chcieli zrobić polskiego?

7

Podłączyłem ps eye do bramki oraz komputera, postawiłem oba mikrofony dosłownie obok siebie.
Wybrałem “alexa” na nasłuch i maksymalną czułość i włączyłem konsole picovoice na kompie.
Mówiłem wolno, szybko, głośno cicho, blisko daleko…
Zdarzało się, że w konsoli łapało, a w bramce nie… nigdy na odwrót.
Czy są jakieś racjonalne powody dlaczego tak może się dziać? Co może mieć na to wpływ? Stara wersja? Mikrofony również zamieniłem, żeby wyeliminować tą zmienną.

8

Czy jest coś na horyzoncie?
Wydaje mi się, że problem jest tylko w hot word,
bo stt działa całkiem dobrze (to googlowe, czy to Rhino?)
Niby picavoice robi przez deep learning, tylko w którym momencie? Jak sobie sami słowa zrobią ze swoich sampli?
Ja to rozumiem tak, że stale jak ja gadam to się uczy i zawęża pod mój głos.
To tak żeby każdy sam mógł w warunkach swojego mikrofonu, tonu głosu, echa itp wyćwiczyć tego hotworda, nawet jeżeli miało by to być gwizdnięcie :stuck_out_tongue: I taki deep learning byłby nalepszy.


Zdarzały się złe interpretacje więc podkreślę,
nic nie żądam, nic nie wymagam, tylko grzecznie pytam. :slight_smile:

Wydaje mi się, że są tu również inne osoby, które się zainteresują tematem.

EDIT

9

Jeszcze jedno, jak moge ustawić intencje żeby jak mówię do mikrofonu to nie odpowiada mi do wszystkich urządzeń tylko tego gdzie mówie.

4 polubienia

Podbijam temat, chyba wszystkim nam ciągle brakuje głośnika z mikrofonem od AIS, takiego na wzór google/alexa ale który działa lokalnie i bez obaw o prywatność:
Google przyznał się, że nas podsłuchuje, „bo tak jest lepiej” (spidersweb.pl)
Po cichu cały czas liczyłem jednak że pojawi się gotowiec od AIS.
Wiemy, że można głośnik ais diy + mikrofon eye…

Tu też podbijam :wink: + wielki szacunek dla całego zespołu AIS za świetną robotę i edukacje :clap:

3 polubienia

ad 1. :wink:

tak - to jest możliwe - mamy w api coś takiego jak API i zasób command i jak się tam wyśle micOn to powinno zadziałać

Tu jest opis api:

Przykład, mam tablet który ma IP 192.168.6.248

wchodzę na to IP - wywołuje API AIS - w przeglądarce (robie GET na API na porcie 8122) i widzę, coś tekigo:

image

żeby wywołać zasób command trzeba zrobić POST-a (wywołać inną metodę) z parametrami, to już z konsoli:

curl -v --header "Content-Type: application/json" --request POST --data '{"micOn": true}' http://192.168.6.248:8122/command

komenda trafia do API aplikacji ais-dom (zainstalowanej na tablecie/telefonie):

i w efekcie włączył się mikrofon:

Opisaliśmy kiedyś podobny przypadek w tym poście:

Cały czas mamy tą automatyzacje - mikrofon to PS3 podpięty do bramki w biurze.
Oczywiście wyzwalaczem nie muszą być drzwi ale coś zupełnie innego - dowolnego… zapalenie światła w kuchni rano, wykrycie ruchu, wykrycie obecności …

Może to być też głos, np taki moduł wykrywający słowo triger może włączyć mikrofon przez API AIS:

tu jest więcej o tym module:


cdn… Poczytamy i odpowiemy :slight_smile: Dzięki za wyrozumiałość!

5 polubień

Dzięki wielkie!
Całkowicie zapomniałem o API :scream:
Oczywiście działa elegancko:

2 polubienia

To tak:
w dokumentacji jest to napisane tak jak by dotyczyła tylko API bramki,
chociaż teraz jak już wiem to wyłapałem:

API bramki (dostęp do natywnych zasobów systemu Android) na porcie 8122

I teraz:

Obecnie dostępne są 2 zasoby http://ais-dom.local:8122/text_to_speech i http://ais-dom.local:8122/command

Jeżeli chcemy wysłać notyfikację na telefon to mamy opcje:

1
standardowo przez Asystentke Jolka, jak mamy otwartą aplikację to powie na wszystkich urządzeniach

gfhtfht

2
przez usługę notify bezpośrednio do jednej aplikacji.
ais_ai_service.mob_notify
Ustawiając say: true apliakcja powie wiadomosć i będziemy mieli również notyfikacje na pasku.

3
po prostu poprzez casta przez tts na konkretnego media_player wysyłamy
"data":{"message": "Uwaga, Awaria grzałki"}
co powoduje otworzenie na telefonie takiego czarnego ekranu apliakcji AIS jak przy streamowaniu.

fdghdfh

4
I teraz doszło :slight_smile: przez API do konkretnej aplikacji za pomocą /text_to_speech
w tym przypadku, nic nie zaloguje do dziennika, nie powie w innych aplikacjach oraz nie pokaże żadnej notyfiakcji nic nie wyskoczy ani się nie włączy, ekran będzie zgaszony… po prostu powie.
Puszczając przed komunikatem jeszcze {"setVolume":"80"} na /commands
Ustawiamy sobie głośność na 80% i puszczamy komunikat.

Jak by ktoś chciał: flows (2).json (3,6 KB)

Zauważyłem tylko jedną rzecz, przy puszczeniu na /text_to_speech komunikatu zostaje wypowiedziany, a puszczając drugi i enty raz ten sam komunikat już nic nie mówi, dlaczego?
Puszczenie innego lub pustego {"text":""} rozwiązuje ten problem.

3 polubienia

tak to tak działa, bo komunikaty mogą być odtwarzane na 2 sposoby:

  1. przez tts w przeglądarce

  2. przez nasze natywne API

Zdarzało się, że komunikat był mówiony 2 razy

i dlatego dodaliśmy takie zabezpieczenie na bramce i teraz 2 razy nie mówimy tego samego…

Ale jak widać to faktycznie może być też problem. Coś kiedyś wymyślimy lepszego, narazie pozostaje faktycznie obejście z pustym komunikatem.

Tak się tylko dzieje wtedy jak mamy zalogowanego użytkownika tego samego na bramce i na urządzeniu mobilnym, na każdym musi być inny użytkownik. wtedy nie ma podwójnych komunikatów.

ad 2. kontekst w automatyzacji

To co opisałeś to ciekawa funkcjonalność i coś takiego kiedyś będzie :slight_smile:

Już teraz możemy definiowac automatyzację uruchamianą komendami głosowymi:

Należało by teraz przy wywołaniu automatyzacji dodać kontekst - obszar lub urządzenie którego automatyzacja dotyczy:

mając ten kontekst mogli byśmy wykonać automatyzację bardziej “smart”:

Żeby to osiągnąć można:

  1. Poczekać aż ktoś to doda do HA i wtedy pojawi się to a AIS
  2. Zgłosić to jako pomysł u nas na forum - jak znajdzie się odpowiednia ilość ludzi, którzy to poprą, to namówimy @3.14 albo @araczkowski albo @Sebastian , żeby to napisali, oczywiście pomożemy :slight_smile:

Mam wrażenie, że ten pomysł może być łatwo zrealizowany (nie jest to duża zmiana). Wg mie należało by tylko dodać nową encję z informacją jaki klient wywołał usługę. Jeżeli naprawdę potrzebujesz taką funkcjonalność, to tu jest opis zasad zgłaszania pomysłów autorstwa @Stravi :+1:

2 polubienia

Poniekąd jest to już wpisane w plany:

1 polubienie

Kurczę, myślałem, że można już to jakoś łatwo wyciągnąć beż żadnych zmian w aplikacji, tylko po prostu nie wiem jak :frowning:

Jak w ad. 3 - to by wystarczyło, aby zrobić automatyzację, że gdy mikrofon się uruchamia (zmienia się stan switch) na danym urządzeniu to wiemy że mówimy właśnie do niego.
(tak jak samo zmienienie stanu switch już ma atrybut użytkownika user_id)

Rozumiem, że guzik mikrofonu zrobiliście Wy? A nie z aplikacji HA.
Czyli po aktywacji mikrofonu (z jakiego kolwiek powodu- guzik, api, hotword), oprócz rozpoczęcia usługi “nagrywania” zmienia on stan encji (chociażby pomocnika), po zakończeniu, tak samo jak guzik zmienia stan na nieaktywny tak samo zmiani encję switcha na wyłączony.

Czy to nie jest dodanie jednej liniki kodu właśnie w tym miejscu?

1 polubienie

Czy na podstawie tego booleana, nie można zrobić chociażby publish mqtt z nazwą aplikacji (mobile_ais_dom_87676)

AisCoreUtils.java

EDIT.

Hmm…
to tutaj trzeba dodać sensor z unikalną nazwą urządzenia?

DomWebInterface.java

@jolka jak już dostałem wywołany do tablicy, to powiem, że średnio mi się podoba aktualny mechanizm automatyzacji rozmowy z Jolką, bardziej by mi się podobało utworzenie nowego typu triggera, wtedy kontekst wywołania by można było zawrzeć w jego parametrach. Wydaje mi się, że takie podejście by było bardziej zgodne z działaniem HA i pozwoliłoby na dużo bardziej zaawansowane korzystanie z asystenta głosowego (identyfikatory triggerów, template sensory, wait_for_trigger itp)

2 polubienia

@jolka
Czy jest jakaś możliwość wyłączenia agenta AIS,
a żeby został jedynie Conversation z własnymi sentencjami.
Tak jak mogę wyłaczyć agenta Google Home odinstalowując integracje google home.
Oraz żeby wyłaczyć wszelakie wyszukiwanie, sugerowanie itd…
Żeby tylko reagowało na sentencje jakie sam sobie ustale?
Czasem przes nasłuchiwanie hotword słucha 2-3zdań i potem mówi “nie rozumiem … no jechałem po bułki i sroga koparka na jezdni jak byłeś u swojej mamy…”
bzdury,
czy mogę zmienić żeby powiedziało tylko samo “nie rozumiem” i koniec?

1 polubienie

Po początkowej euforii sterowania głosem zwłaszcza po polsku, po blisko 2 latach entuzjazm minął i staram się tak organizować automatyzacje aby działały w tle i zamiast wydawać komendę np. włącz światło w salonie i zgaś w kuchni, działa to autonomicznie. Jednak brakuje mi w Jolce dwóch komend: tak i nie, które po odpowiednim przemodelowaniu choćby znanego powitania wypowiadanego po restarcie centralki “Witaj w domu, co mogę dla Ciebie zrobić?” centralka proponowałaby kilka wybranych działań typu raport temperatury, wilgotności, włączanie wskazanych urządzeń lub uruchomienie wybranych scen i setek innych działań co można zatwierdzić lub anulować komendą tak/nie. Oczywiście wiem, że jest to wykonalne już teraz przy pomocy intencji/sentencji ale wbudowanie tych komend ułatwiłoby konwersację w sterowaniu.
Nb. mój syn każdorazowo jak słyszy powitanie przy starcie centralki odpowiada lektorce poleceniem wykonania prostego przyrządu ortopedycznego i to jest dopiero siła przyzwyczajenia.

jeżeli robisz to z pilota AIS to tak - mikrofon wysyła kod przycisku i w zależności od tego kodu możesz robić różne automatyzacje

wyzwalanie mikrofonu z innych klientów (aplikacji) to już inny temat

jeżeli umiesz programować to możesz sobie zrobic forka kodu i dodać własnego agenta
możesz też, zmienić kod na bramce - kody całego asystenta masz na bramce w języku Python:

to skomplikowane… poczytaj:

mają przykłady w różnych językach

nie pamiętam dokładnie :wink: bo NDA trzeba podpisać żeby dostać cenę
Są to większe kwoty w USD, które w budżecie mają większe firmy:

to skomplikowane… nawet jak zapłacisz 10 tysięcy USD to nikt nie da gwarancji, że to zadziała

Jest już na rynku inna firma, która ma troszkę inne podejście do trenowania słowa klucza, wysłaliśmy jej nasze nagrania oni nam próbki… ale niestety nadal nie ma szału.

Po kilku latach projektu rozumiemy bardziej, że sterowanie głosem (możliwość włączenia i wyłączenia światła poleceniem głosowym ) bardzo się czasami przydaje, ake na codzień to trochę nieergonomiczna zabawka. Lepszy efekt da się osiągnąć jak się ma ogromną ilość czujników i automatyzacji, wtedy system wymaga minimum uwagi i jest smart magia :slight_smile:

Oczywiście nadal robimy wszystko, co się daje zrobić, by żyło się lepiej i łatwiej.

Kiedyś to pewnie dodamy. Pamiętaj o możliwości zgłoszenia pomysłu tą drogą:

Oczywiście możesz też to napisać lub znaleźć kogoś, kto to napisze - jesteśmy otwarci na wszystkie poprawki i ulepszenia.
:+1:

1 polubienie

Super pomysł :slight_smile: Dostęp do kodu masz oczywiście, więc jak tylko okaże się, że faktycznie jest chęć zmiany tego w społeczności :wink: to każdy ma możliwość zgłoszenia takej potrzeby i działajmy - ulepszajmy, tak jak sugerujesz.

Gratulacje sukcesu integracji lovelace-xiaomi-vacuum-map-card
Przepisałeś apkę xiaomi do HA :heart_eyes_cat: niesamowite jak to działa :slight_smile:

:+1:

W te rejony kodu jeszcze nie zaglądałem :wink:

Dzięki, dużo roboty poszło na tą kartę

1 polubienie

Jest szansa aby ta integracja trafiła na AiS? :slightly_smiling_face::slightly_smiling_face:

Super karta, zastanawiam się właśnie nad zakupem robota odkurzającego, będzie jak znalazł :).

To, co zrobiłeś Piotr, to jest… mistrzostwo świata :medal_sports: :heart:

Jak to się pojawiło, to cały zespół AIS ściągnął czapki z głów i z otwartymi buziami… patrzyliśmy, jak reddit oszalał :wink: i byliśmy naprawdę dumni, że to Piotr, który jest na naszym forum i ma bramkę AIS, potrafi coś takiego wykonać. Dla tych, co nie wiedzą, o co chodzi, tu jest wpis na reddit:

To oczywiście działa na bramce AIS, ale jako komponent niestandardowy. Sami testujemy i śmiga pięknie, tu posprzątał dokładnie ten kwadracik:

Niestety to nie jest na oficjalnym API i utrzymanie tego byłoby dla AIS zbyt kosztowne i ryzykowne. Dlatego nie możemy tego oficjalnie dołączyć i utrzymywać… każdy kto chce może sam sobie ten komponent doinstalować i utrzymywać.

@3.14 Piotr po tym, co pokazałeś światu, wiemy jedno - jeżeli trafi się jakieś zadanie niemożliwe, to wiemy do kogo dzwonić. Masz niesamowite umiejętności, mamy nadzieję, że będziemy w stanie kiedyś z nich skorzystać (że pojawi się jakiś fajny temat biznesowy) i dojdzie do tego, że do nas dołączysz. Jak byś z nami pracował, to po wydaniu tego kodu, nie tylko ja, ale każdy z sepołu AIS, robił by Ci kawę :coffee: przez cały miesiąc i podawał do biurka :tipping_hand_woman:

PS
Mamy też nadzieję, że lubisz serial “Silicon Valley” i masz poczucie humoru :slight_smile: - specjalnie dla Ciebie, przerobiony kadr (“Silicon Valley”), w tym kadrze wyjaśniony jest pewien algorytm, trochę to nawiązuje… do tego, co zrobiłeś :heart_eyes_cat:

4 polubienia