logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji

p.kaczmarek2 20 Kwi 2023 20:18 6432 25
  • Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Pokażę tutaj jak można wykorzystać API OpenAI do utworzenia inteligentnego asystenta domowego. Nasz asystent będzie posiadać zdolności ChatGPT, a jednocześnie będzie w stanie też kontrolować stan świateł (i innych urządzeń) w naszym domu. Asystent będzie rozumieć złożone komendy językowe, nawet będzie w stanie z kontekstu rozmowy wywnioskować w jakim pomieszczeniu jesteśmy i włączyć tam światło. Oprócz tego będzie można było z nim rozmawiać tak jak z ChatGPT, czyli zasadniczo zapytać go o wszystko, czasem z lepszym, a czasem z gorszym skutkiem.

    Ten temat skupi się na kwestii wykorzystania API OpenAI oraz dobrania odpowiedniego promptu. W tym temacie pominę kwestie takie jak zamiana mowy na tekst a potem tekstu na mowę.

    Pierwszy eksperyment z prompt
    ChatGPT może tylko pisać, ale pisać może wiele - zgodnie z naszymi prośbami jest w stanie odgrywać role, odpowiednio się zachowywać i symulować wiele sytuacji.
    W związku z tym spróbowałem go 'poprosić', by swe wypowiedzi dzielił na dwie sekcje - sekcja "SAY" (co mówi) oraz "CODE" - co wykonuje.
    Oto moje pierwsze próby z promptami:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Ten model językowy jest w stanie jednocześnie pamiętać początkowy prompt (i działać wedle niego) oraz jednocześnie prowadzić ogólną, luźną rozmowę o gotowaniu czy o czymkolwiek co ma wyuczone. W momencie poproszenia o wykonanie operacji na oświetleniu, model poprawnie używa zaoferowanego mu API. Całkiem nieźle, nadaje się na asystenta...

    Użyta biblioteka do API ChatGPT
    Prototyp napisałem w C#, użyłem do tego biblioteki do API OpenAI:
    https://github.com/OkGoDoIt/OpenAI-API-dotnet
    To API można zainstalować w Visual Studio poprzez NuGet Packages:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Wpisujemy co trzeba i bingo:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    W razie problemów, upewniamy się że mamy odpowiednio wysoką wersję NET framework (sam musiałem doinstalować 4.7.2):
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Oczywiście trzeba mieć wykupione API (i klucz do tego API), ale o tym pisałem już jakiś czas temu.
    Biblioteka OpenAI_API wszystko ułatwia. Oto najmniejszy przykład:
    Kod: C#
    Zaloguj się, aby zobaczyć kod

    To naprawdę tylko trzy linijki! A w sumie dwie...
    Pierwsza to uruchomienie API (podanie naszego klucza), można to w sumie zrealizować w kilka sposobów:
    Kod: C#
    Zaloguj się, aby zobaczyć kod

    Potem można do woli z niego korzystać. Oto przykłąd prowadzenia rozmowy z ChatGPT:
    Kod: C#
    Zaloguj się, aby zobaczyć kod

    Biblioteka też wspiera streaming odpowiedzi, czyli wczytywanie jej na bieżąco, znak po znaku. Wygląda to tak, wersja C# 8.0 async iterator:
    Kod: C#
    Zaloguj się, aby zobaczyć kod

    Wersja sprzed C# 8.0:
    Kod: C#
    Zaloguj się, aby zobaczyć kod



    Plan działania
    W oparciu o zebrane informacje i eksperymenty z promptami powstał plan działania utworzenia asystenta domu. Oto jego skrócona wersja:
    1. System uruchamia ChatGPT z promptem o 'SAY' i 'CODE', wraz z listą pokojów
    2. Użytkownik może komunikować się z ChatGPT przez naszą aplikację i API ChatGPT, ChatGPT może rozmawiać o wszystkim, nawet zmyślać te swoje historie różne
    3. Aplikacja dodatkowo parsuje wiadomości ChatGPT i wyciąga z nich osobno blok CODE i SAY, SAY zostaje wyświetlony a CODE wykonany (np. poprzez wysłanie żądania do odpowiednich świateł)

    Podłączenie świateł do systemu
    Ten temat skupia się na użyciu modelu językowego, ale i tak dodam, że u mnie światła byłyby kontrolowane np. przez Tasmota HTTP, które wspiera zarówno Tasmota, jak i OpenBeken.
    Aby włączyć dane światło wystarczy wysłać do niego zapytanie HTTP:
    
    http://192.168.0.201/cm?cmnd=POWER%20ON
    

    Ale o tym można poczytać chociażby w dokumentacji Tasmoty.
    Dzięki takiemu podłączeniu urządzeń mamy też integrację z Home Assistant - a dokładniej, Home Assistant może tez sterować tymi samymi urządzeniami.

    Demonstrancja aplikacji
    W celu przetestowaniu pomysłu przygotowałem małą aplikację okienkową, która pozwala wpisać odpowiedzi/polecenia dla AI, jak również też pozwala dodać gotowe odpowiedzi z predefiniowanej listy, to w celu przyśpieszenia testowania.
    Aplikacja również śledzi stan (na ten moment symulowanych) świateł oraz koloruje odpowiednio fragmenty rozmowy.
    Oto krótka demonstracja:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Tak jak zapowiedziane - ChatGPT jest w stanie poprawnie rozumieć luźne polecenia podane w języku naturalnym, nie ma problemu z rozponaniem o co nam chodzi i poprawnie korzysta z udostępnionego mu API do kontroli świateł. To nie jest zwykły bot, który szuka "Turn on kitchen" na sztywno, tu cały zaawansowany model językowy interpretuje nasze wypowiedzi.
    Oto test kontekstu rozmowy, z Asystentem Domowym można rozmawiać nawet o gotowaniu w trakcie przebywania w kuchni a on potem sam wywnioskuje gdzie ma włączyć światło:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Oto ciąg dalszy rozmowy powyżej - AI wnioskuje z kontekstu, że trzeba zgasić światło w kuchni i zapalić w jadalni:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Ciąg dalszy - można poprosić AI o wyłączenie wszystkich świateł:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Oto inny przykład, AI potrafi domyśleć się o jaki pokój chodzi bez podawania jego nazwy:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Dodatkowo AI zdaje się rozumieć kolejność włączenia światła - poprawnie zareagowało na prośbę o wyłączenie światła w pierwszym pokoju o którym była mowa...
    Inny przykład - AI domyśla się pokoju z kontekstu wypowiedzi:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Inny przykład:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji

    Napotkane problemy
    Bardzo ciekawy problem napotkałem w początkowym stadium projektu, gdzie mój prompt korzystał ze słowa "CODE" zamiast z "DO" - wtedy AI upierało się na to, że wykonuje niby kod Pythona i wysypawało się gdy prosiłem o załączenie losowego światła:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Transkrypt rozmowy:
    
    Prompt: You are a Home Assistant. You can only prefix your messages with SAY if you want to say something, and CODE if you want to run code command. You can control lights by writing text command setLightEnabled(room,state), where room can be: Kitchen, Bedroom, Bathroom, Hall, Toilet, Dining Room, and state can be on or off.Do not use any other code commands.Please keep talking with user and use the command when asked to. Please do not ask user to use commands.Please do not use commands without any reason.Now, start conversation with user.
    AI raw reply: SAY: Hello there! How can I assist you today?
    AI says: Hello there! How can I assist you today?
    User: This is just a test. For a testing purpose, pick one room randomly and turn on there light.
    AI raw reply: CODE: 
    import random
    room_list = ['Kitchen', 'Bedroom', 'Bathroom', 'Hall', 'Toilet', 'Dining Room']
    random_room = random.choice(room_list)
    setLightEnabled(random_room, "on")
    SAY: I have randomly selected the {random_room} and turned on the light.
    

    Zmodyfikowałem prompt tak, by nie zawierał słowa Code, które kojarzy się z Pythonem, i zastąpiłem je słowem DO:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji

    Ciekawa obserwacja - czy AI włączy losowe światło?
    Inną moją ciekawą obserwacją jest to, że AI poproszone o włączenie losowego światła, grzecznie nam odmawia i czasem tłumaczy, że to by mogło zaskoczyć użytkownika i wprowadzić zamieszanie. Aby uzyskać oczekiwany rezultat należy najpierw podkreślić, że włączamy losowe światło w ramach testu. Przykład poniżej:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Przykład numer dwa (prośba o włączenie dwóch losowych świateł):
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji

    Ciekawa obserwacja - czy AI włączy światło w pokoju którego nie ma na liście?
    Co zrobi model językowy, gdy poprosimy go o zapalenie światła w pokoju którego nie ma na liście? Sprawdźmy:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Model nie zmyśla, poprawnie wykrywa, że attic nie ma na liście i odmawia wykonania operacji. Co więcej, podaje listę znanych mu pokoi.

    Potencjalny problem
    Jednym z problemów jaki napotkałem w trakcie testów jest tendencja AI do okazjonalnego wysyłania nam linków, które są oczywiście bez sensu w przypadku komunikacji głosowej.
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Możliwe, że odpowiednia dopiska w prompcie to naprawi, ale tego już nie sprawdzałem.


    Gra ze światłem?
    Teraz najciekawszy eksperyment. Zaproponujmy AI grę - AI włącza wszystkie światła i zadaje użytkownikowi pytania z matematyki. Jeśli użytkownik odpowie źle, to gasi jedno światło. Czy AI da radę?
    Zaczynamy zabawę:
    Cytat:

    Let's play a game. First turn on all lights with DO. Then ask me math questions. If I answer correctly, do nothing. If I give wrong answer, use DO to turn off random light.

    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    To serio działa:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Niestety, po chwili pojawia się problem... model językowy się wysypał na mnożeniu:
    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Liczę, że GPT 4 będzie w tym nieco lepsze.


    Podsumowanie
    Odpowiedni prompt sprawia, że model językowy ChatGPT jest w stanie sensownie kontrolować oświetleniem na bazie prowadzonej z użytkownikiem rozmowy. Model dość sensownie trzyma kontekst rozmowy oraz posługuje się udostępnionym mu prymitywnym API, przy czym jednocześnie oferuje dalej to wszystko co oferuje w swojej normalnej wersji. Model jest nawet na tyle "zrozumieć" kontekt rozmowy, że potrafi z niego wywnioskować gdzie jesteśmy i jakie światło chcemy zapalić.
    Widzę tu potencjał na "inteligentnego" pomocnika dla osób niepełnosprawnych bądź chorych, w zwykłym domu pewnie też niektórym taki gadżet by się spodobał, chociaż nie uważam, by był niezbędny. To tylko zbędny bajer.
    Jak na razie wykonałem tylko wstępne testy, ale warto byłoby jeszcze sprawdzić:
    - jak radzi sobie ten model przy dłuższej rozmowie (czy gubi wątek, by może soft powinien resetować rozmowę)
    - jak radzi sobie system przy większej ilości świateł
    - czy system można rozwinąć i np. dać też mu kontrolę nad jasnością światła bądź nad kolorem
    - można tez rozważyć podpięcie innych systemów, by AI np. kontrolowało grzanie i rozumiało polecenie "it's too hot in the kitchen", itd.
    - zastanawiam się również, czy GPT-4 by sobie tu lepiej jeszcze poradził
    W temacie też pokazałem kilka sytuacji, w których model ChatGPT się wysypał. Pierwsza z nich była sytuacja, gdzie użycie słowa "CODE" (zastąpionego potem "DO") do oznaczenia kontroli świateł sprawiło, że model zaczął myśleć, że pisze w Pythonie i po prośbie o zapalenie losowego światła, zamiast po prostu wybrać pomieszczenie to napisał kod losowania pomieszczenia... druga sytuacja to była z grą-zabawą, gdzie poprosiłem model by gasił światła jak odpowiem źle. Tu troszkę się mylił.
    Zamieszczam kod demka - napisany na szybko, oczywiście bez exe i bez klucza, trzeba uzupełnić Form1.cs własnym kluczem przed uruchomieniem.
    Załączniki:

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • #2 20549325
    LordZiemniak
    Poziom 15  
    Wszystko fajnie, teraz to kwestia chwili jak w domch bedzie jak w filmach s/f wchodzisz i rozmaiwasz z domem on robi kawe, szykuje łazienke do kąpieli robi temperatur odpowiednią, odpala radyjko, włącza jeszcze bardziej inteligentnego termomixa, na podstawie braków w lodówce sam robi zakupy i te dowozi nam dron pod dom, proponuje nam menu itp... no fajnie tylko teraz nie opłacimy subskrypcji i kuniec dobroci.... już pomijając totalną inwigilację i zniewolenie
  • #3 20549396
    ADI-mistrzu
    Poziom 30  
    @lucaspatecki tylko zaraz będą takie systemy działające lokalnie bez potrzeby posiadania połączenia do sieci.
    Więc sama komunikacja będzie lokalna, nie bój się :)
  • #4 20549443
    gulson
    Administrator Systemowy
    Czekam na rozwiązanie z rozpoznawaniem mowy, można użyć Whisper! :)

    Przy okazji, właśnie wydali Whisper do rozpoznawania mowy, który można sobie uruchomić na swoim komputerze.
    https://github.com/ggerganov/whisper.cpp

    Modele językowe też już stawiają, nawet na Raspberry Pi.
    I to by było na tyle, świat nie będzie taki sam.
  • #5 20549446
    czareqpl
    Poziom 33  
    Pierwszy post pod artykułem i już DOOM, zagłada i zniewolenie... A może po prostu taki wygodny świat jak w drugiej części "Powrotu do przyszłości" ?

    Poza tym, przecież subskrypcja na to ułatwienie jest DOBROWOLNA. Nie płacisz, to się wysilasz sam.

    Tak samo wygląda używanie samochodu. Subskrypcja wygasa w momencie zużycia paliwa z baku. Chcesz jechać dalej - płacisz. Jak nie płacisz to piechotą lub rowerem. No i też jest inwigilacja, bo po tym gdzie tankujesz SYSTEM wie, gdzie jesteś.
  • #6 20549533
    khoam
    Poziom 42  
    ADI-mistrzu napisał:
    tylko zaraz będą takie systemy działające lokalnie bez potrzeby posiadania połączenia do sieci.

    Bardzo w to wątpię. Już dzisiaj rozwiązania typu HA w wersji "chmurowej" oferują większą funkcjonalność niż te same, w wersji "domowej" bez dostępu do netu.

    czareqpl napisał:
    Tak samo wygląda używanie samochodu. Subskrypcja wygasa w momencie zużycia paliwa z baku. Chcesz jechać dalej - płacisz.

    Porównanie całkowicie nietrafione. Samochód nie wymaga opłacania stałej subskrypcji, aby móc do niego wsiąść, a następnie udać się np. na stację benzynową w celu zatankowania paliwa.

    Dodano po 3 [minuty]:

    gulson napisał:
    I to by było na tyle, świat nie będzie taki sam.




  • #7 20549555
    czareqpl
    Poziom 33  
    khoam napisał:
    Porównanie całkowicie nietrafione. Samochód nie wymaga opłacania stałej subskrypcji, aby móc do niego wsiąść, a następnie udać się np. na stację benzynową w celu zatankowania paliwa.


    Tak samo nie potrzeba opłacania subskrypcji sprzęt Home Asistant, aby móc go podłączyć do prądu i wejść do panelu sterowania aby zapłacić za kolejny miesiąc użytkowania.

    A skąd jest paliwo w baku pozwalające na podróż na stację w celu zatankowania? Z poprzednio opłaconej "subskrypcji".
    Ci co się buntują i odmawiają płacenia "subskrypcji" do samego końca, chodzą z kanisterkiem :)
  • #8 20549601
    gulson
    Administrator Systemowy
    Home Assistant jest darmowy, płatna jest tylko usługa dostępu z zewnątrz, jeśli używasz NAT. Można skorzystać z serwisów, które przekierowują porty i zapisują nasze bieżące IP oraz wystawiają Home Assistant na zewnątrz.
  • #9 20549632
    khoam
    Poziom 42  
    Cytat:
    Można skorzystać z serwisów, które przekierowują porty i zapisują nasze bieżące IP oraz wystawiają Home Assistant na zewnątrz.

    O ile otwarcie odpowiednich portów na domowym routerze będzie możliwe i wykonalne przez Jana Kowalskiego - 99% procent populacji to nawet nie wie, co to są te porty i dlaczego może być to niebezpieczne.

    Dodano po 1 [godziny] 1 [minuty]:

    Cytat:
    Czekam na rozwiązanie z rozpoznawaniem mowy, można użyć Whisper!

    Z tym też byłbym ostrożny. Są już dostępne aplikacje (na bazie tzw. AI), które potrafią gadać głosem wybranej osoby, na podstawie próbek zebranych np. telefonicznie.
  • #10 20549746
    czareqpl
    Poziom 33  
    Platforma Microsoft Azure dostarcza funkcje rozpoznawania mowy do tekstu. Jest proste API dla Pythona. Kiedyś się tym bawiłem aby z PC dyktować treść SMS'a do modułu GSM.
  • #11 20549957
    ADI-mistrzu
    Poziom 30  
    khoam napisał:
    Bardzo w to wątpię. Już dzisiaj rozwiązania typu HA w wersji "chmurowej" oferują większą funkcjonalność niż te same, w wersji "domowej" bez dostępu do netu.

    Sam uruchomiłem rozpoznawanie Polskiej mowy na MCU lokalnie bez dostępu do internetu, dowolne komendy, dowolny wakeup word.
    To co udało mi się uruchomić obecnie max to rozpoznawanie 4 języków równocześnie.
  • #12 20549960
    khoam
    Poziom 42  
    @ADI-mistrzu Mam na myśli rozwiązania komercyjne.
  • #13 20550204
    krzbor
    Poziom 27  
    ADI-mistrzu napisał:
    khoam napisał:
    Bardzo w to wątpię. Już dzisiaj rozwiązania typu HA w wersji "chmurowej" oferują większą funkcjonalność niż te same, w wersji "domowej" bez dostępu do netu.

    Sam uruchomiłem rozpoznawanie Polskiej mowy na MCU lokalnie bez dostępu do internetu, dowolne komendy, dowolny wakeup word.
    To co udało mi się uruchomić obecnie max to rozpoznawanie 4 języków równocześnie.

    Możesz opisać to rozwiązanie? Jestem zainteresowany głosowym sterowaniem IOT.
    Opis @p.kaczmarek2 jest bardzo obiecujący. Gdyby dodać Whisper i dodatkowo komendę wywołującą (chodzi o to, aby w pełni kontrolować, co wychodzi w sieć, a co nie), to by było całkiem obiecujące rozwiązanie. Rozwiązanie offline będą miały jednak zawsze przewagę szybkości.
  • #14 20550253
    khoam
    Poziom 42  
    @krzbor Słyszałeś o ESP-Skainet? Może pracować w trybie offline. Link
  • #15 20550346
    krzbor
    Poziom 27  
    Wygląda ciekawie, ale z tego co przeczytałem, rozpoznaje chiński i angielski. Mi zależy na języku polskim.
    Znalazłem coś takiego Vosk. Czy ktoś tego używał?
  • #16 20550434
    rafels
    Poziom 25  
    Używałem Vosk, to nic innego jak wielojęzykowe API do Kaldi. Bardzo wygodne i łatwe w użyciu narzędzie, używałem pythonowej wersji. Do działania wymaga modeli przygotowanych we frameworku ASR Kaldi. Nie wiem czy coś się zmieniło obecnie, ale niestety jeszcze rok temu nie były dostępne żadne modele akustyczne dla języka polskiego na stronach Vosk. Można poszukać polskich modeli udostępnionych przez Clarin.
    Można też wytrenować polski model samodzielnie, ale wymaga to sporo pracy poznawczej, dużej ilości otagowanych nagrań i sporo zasobów obliczeniowych, więc na start to odpada.
    Sam rozwijałem aplikację w CPP na bazie Kaldi i do tego polskie modele w ramach prac badawczo rozwojowych w firmie w której pracowałem. A hobbystycznie marzyły mi się właśnie małe urządzenia sterowane głosowo offline. Robiłem więc eksperymenty na raspberry. Poczynając od Pi 0 (obecnie już Vosk nie jet kompilowany na tę architekturę) ale aż do Pi 3 nie dawało się przetwarzać swobodnej mowy w real time. Da się przetwarzać zapisane sample, ale sygnału z mikrofonu już nie. Niewielkie modele języka angielskiego jeszcze na pi 3 jakoś w realtime działały, ale z bardzo ograniczoną gramatyką, jedynie do zastosowań command and controll. Na Pi 4 się już w realtome da. Testowałem nawet specjalnie odchudzone modele gramatyki FST pod kątem słabszych malin, które miały rozpoznawać jedynie kilkanaście komend w odróżnieniu do kilkudziesiędziotysięcznych modeli nGramowych, bez rezultatu. Robiłem odchudzone modele akustyczne zmniejszając wymiary sieci i godząc sie na większy współczynnik błędów, ale także to nie pomagało. Jak wyszła jakiś czas temu Pi zero 2 to specjalnie ją kupiłem, czy choć najprostsze polskie modele będą przetwarzane w realtime, ale niestety nie były. Także na razie porzuciłam temat małych urządzeń sterowanych głosowo. Choć mam na razie uśpiony od jakiegoś czasu pomysł postawić na domowej malinie Pi 4 serwer Kaldi i stermować do tego audio z mikrofonów na esp, tak żeby móc np. sterować HA które tam pracuje. Wiem, wszystko da się bez problemu zrobić chmurowo, ale nie o to chodzi 😃

    Z ciekawostek to robiłem też eksperymenty łącząc już pełny obszerny model ASR Kaldi z framerowkiem NLP Rasa. Ale to już na PC.
    Jak ktoś się chce pobawić w treningi modeli językowych to polecam Rasa. Łatwo można zacząć zabawę w NLP i szybko zacząć tworzyć proste dedykowane boty, w czatu tekstowego. Oczywiście nawet nie leżące obok modeli GPT, ale zabawa fajna i bo uzyskiwane efekty mogą zaskoczyć.
  • #17 20550438
    krzbor
    Poziom 27  
    Dziękuję za cenne informacje. Napisałem o VOSK bo ma wiele modeli językowych Link w tym polski: vosk-model-small-pl-0.22. Pytanie tylko, czy model, który ma 50MB do czegoś się nadaje? Czy np. dźwięk z mikrofonu elektretowego z odległości np. 3m będzie rozpoznawany?
  • #18 20550456
    rafels
    Poziom 25  
    Oo, fajnie że ktoś dodał model polski. Chętnie go kiedyś przetestuję. Ogólnie z rozpoznawaniem jest różnie, dużo zależy od danych treningowych i ich warunków akustycznych, zakłóceń, pogłosu. Mikrofon dookulny z 3m może nie być rozpoznawany najlepiej. Już lepiej jakiś kierunkowy a najlepiej coś w stylu Respiker.
    Najlepiej sam przetestuj ten model, na githubie vosk api jest folder z example. Jest gotowy przykład z użyciem mikrofonu w pythonie. Bardzo łatwe.
    Te modele składają się z dwóch części. Na wejściu model akustyczny AM, jest to sieć neuronowa i z niej wychodzą fonemy kontekstowe, niezrozumiałe wektory liczb. Trafia to modelu gramatyki HCLG, jest to taki ogromny graf skierowany FST. I z tego dopiero wychodzi mowa, ale też zapisana w postaci grafu, dopiero najlepsza ścieżka (najbardziej prawdopodobna) w tym grafie będzie zbiorem wyrazów zrozumiałych dla człowieka.
    Mając dobrze wytrenowany AM można łatwo tworzyć i podmieniać modele gramatyki, dostosowując je do swojej dziedziny i swoich potrzeb oraz pożądanego zbioru słów. Podstawy tego są przystępnie opisane na stronach Vosk a bardziej obszernie na stronach Kaldi.
  • #19 20550651
    gulson
    Administrator Systemowy
    A tutaj darmowa biblioteka do generowania mowy polskiej i dźwięków:
    https://github.com/suno-ai/bark
    Bark może generować bardzo realistyczne, wielojęzyczne mowy oraz inne dźwięki - w tym muzykę, szumy w tle i proste efekty dźwiękowe. Model może także generować komunikaty niewerbalne, takie jak śmiech, westchnienia i płacz.
  • #21 20551534
    gulson
    Administrator Systemowy
    A tutaj audio wygenerowane przez Bark.
    Niestety jak nie ma się właściwego GPU, to trwało to 30min.
    Przy dobrym GPU praktycznie generuje mowę od razu.
  • #22 20552219
    dawid123123123
    Poziom 9  
    pomysł ciekawy ale dla przeciętnego kowalskiego nie do wykonania
  • #24 20580487
    NorthernMan54
    Poziom 4  
    >>20548901

    Dla osób, które chcą tego spróbować i są użytkownikami node-red, odtworzyłem to za pomocą node-red i przepływu https://flows.nodered.org/node/node-red-contrib-custom-chatgpt.

    Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji

    Będziesz musiał podać API_KEY i organizację.

    Teraz, aby zobaczyć, co jest z tym możliwe.
  • #25 20580571
    p.kaczmarek2
    Moderator Smart Home
    Dziękuję! Nie testowałem jeszcze twojego skryptu, ale wygląda interesująco. Mam tylko podstawową wiedzę na temat Node-Red, ale spróbuję.

    Być może wkrótce utworzę repozytorium Github dla tego szybkiego mini projektu, czy mogę tam również dołączyć twoją wersję?

    Muszę też poeksperymentować z dodatkową kontrolą jasności....

    PS: @NorthernMan54 czy twój kod obsługuje skrajne przypadki, w których ChatGPT odpowiada komunikatem zawierającym KOD, ale później z tekstem bez prefiksu SAY? Zdarzyło mi się to kilka razy, a mój kod C # analizuje to poprawnie.
    Pomogłem? Kup mi kawę.
  • #26 20581202
    NorthernMan54
    Poziom 4  
    Cytat:
    Być może wkrótce utworzę repozytorium Github dla tego szybkiego mini projektu, czy mogę tam również dołączyć twoją wersję?


    Tak, możesz, to było tylko trochę zabawy, aby zobaczyć, jak działa koncepcja. Moim następnym krokiem jest umożliwienie mu kontrolowania mojej konfiguracji Homebridge.

    Cytat:
    PS: @NorthernMan54 czy twój kod obsługuje przypadki skrajne, w których ChatGPT odpowiada komunikatem zawierającym KOD, ale później z tekstem bez prefiksu SAY? Zdarzyło mi się to kilka razy, a mój kod C # analizuje to poprawnie.


    Odkryłem, że nigdy nie używał frazy SAY, ale był zgodny z DO. Moją logiką było podzielenie wyniku na linie oparte na `\r`, a wszystkie linie zaczynające się od DO były wysyłane do przepływu automatyki domowej, a wszystko inne wysyłane na inne wyjście.
REKLAMA