Opisane rozwiązanie korzysta z ChatGPT poprzez interfejs OpenAI API w języku Python. Daje to ogromne możliwości dalszych eksperymentów z projektem, np. sterowanie głosem asystenta. Projekt korzysta także z Azure Speech Services, czyli narzędzia w chmurze, które dostarcza konwersji tekstu na mowę, jak i mowy na tekst. Dzięki temu możemy z systemem normalnie konwersować, a działający skrypt, napisany w Pythonie, odpowiada za przekazywanie głosowych komend do ChatGPT i odczytywanie jego odpowiedzi.
Dzięki wykorzystaniu bardzo elastycznego silnika głosowego można bawić się postawą i głosem asystenta. Rejestrując się w Microsoft Azure Speech, można wypróbować różne głosy i wybrać ten, który nam się podoba. Następnie, w programie można opisać postawę, jaką chcemy, aby rozmówca przyjął. Można ustawić "złego szefa", "zrzędliwego staruszka" czy "miłą nauczycielkę z podstawówki". Dokładniej opisane jest to w dalszej części artykułu.
Potrzebne elementy
Do zbudowania tego urządzenia potrzebne są:
- komputerek Raspberry Pi - autor proponuję wersję 4 z dowolną ilością pamięci RAM,
- karta SD o pojemności min. 8 GB,
- moduł wzmacniacza audio z wejściem I²S o mocy 3 W (np. na układzie MAX98357A).
- głośnik,
- opornik 100 kΩ,
- minimikrofon na USB,
- elementy z druku 3D (górna część obudowy, dolna część obudowy, uchwyt na głośnik),
- cztery śrubki i nakrętki M2.5 i dodatkowe, mniejsze wkręty do mocowania głośnika,
- przewody do połączenia ze sobą elementów w obudowie,
- taśma dwustronna lub klej na ciepło.
Budowa urządzenia
Montaż układu jest dość łatwy. Wymaga zamocowania tylko kilku przewodów. Zacząć należy od od 7 przewodów o długości około 120...150 mm. Jeden koniec musi mieć żeńskie złącze do podłączenia do szpilek GPIO w Raspberry Pi. Z drugiego końca odcinamy złącze i zdejmujemy fragment izolacji, aby móc przylutować przewody do wzmacniacza i przycisków.
Przewody będą podłączone w następujący sposób (fotografia 1):
- żółty z BCLK na wzmacniaczu do GPIO 18 na Raspberry Pi,
- zielony z LRC na wzmacniaczu do GPIO 19 na Raspberry Pi,
- niebieski z DIN na wzmacniaczu do GPIO 21 na Raspberry Pi,
- czerwony 1 z Vin na wzmacniaczu do 3,3 V na Raspberry Pi,
- czarny 1 z GND na wzmacniaczu do masy na Raspberry Pi,
- czerwony 2 z jednej strony przycisku do GPIO 16 na Raspberry Pi,
- czarny 2 z drugiej strony przycisku do masy na Raspberry Pi.
Najpierw należy przylutować przewody głośnikowe do punktów lutowniczych oznaczonych jako "+" i "-" u góry płytki wzmacniacza. Po podłączeniu przewodów do Raspberry Pi i umieszczeniu go w dolnej części obudowy można podłączyć mikrofon USB do dowolnego z portów USB na Raspberry Pi.
Finalnie zabezpieczamy górną część obudowy, mocując ją do dolnej za pomocą śrub M2.5 o długości 28 mm. Jeśli nie mamy takich śrub, możemy po prostu ścisnąć obie połowy obudowy razem, a ponieważ są one dosyć ciasno do siebie dopasowanie, śruby można dodać później lub w ogóle. Tak zmontowany układ jest już gotowy do załadowania oprogramowania.
Zasada działania układu
Zasada działania systemu jest bardzo prosta. Program zapisany w pythonowym skrypcie komunikuje się z API ChatGPT i API Azure. Przyjrzymy się detalom tego skryptu w dalszej części artykułu.
Za wyjście dźwięku odpowiada moduł, który zawiera scalony wzmacniacz z wejściem I²S - układ MAX98357 - do którego podłączony jest głośnik. Można też po prostu podłączyć zestaw słuchawkowy czy inny odbiornik audio do wyjścia audio z gniazdem jack 3,5 mm w Raspberry Pi. Wejście głosowe realizowane jest przez mikrofon cyfrowy dołączony do portu USB.
Następnym krokiem jest dodanie do systemu obudowy (autor zaadaptował obudowę z projektu Gund Bear) i dostosowanie jej do płytki Raspberry Pi bez dodatkowego HAT, jaki jest w oryginalnym projekcie, ale z wystarczającą ilością miejsca, aby pomieścić przewody bezpośrednio podłączone do szpilek GPIO w Raspberry Pi.
System jest gotowy, gdziekolwiek jesteśmy, o ile mamy połączenie z siecią - nawet przez hotspot z sieci GSM, możemy podłączyć swoje urządzenie do chmurowej sztucznej inteligencji i zapytać ChatGPT o cokolwiek chcemy. Oczywiście ważne jest też mobilne zasilanie układu, ale tutaj wystarczy mocny powerbank i zasilanie całego systemu przez port USB w Raspberry Pi.
Instalacja systemu operacyjnego i innego potrzebnego oprogramowania
Przed uruchomieniem systemu musimy zainstalować na Raspberry Pi zestaw potrzebnego oprogramowania, rozpoczynając od systemu operacyjnego. Finalnie musimy załadować do komputera odpowiedni skrypt w Pythonie, jaki udostępnia autor projektu.
Należy pamiętać, że w projekcie będziemy potrzebować kluczy API od OpenAI i Azure Speech Services, aby korzystać z ChatGPT. Korzystanie z interfejsu OpenAI API nie jest darmowe, ale nie jest też drogie i powinno kosztować poniżej 5 dolarów za miesiąc, nawet przy intensywnym użytkowaniu (przy użytku prywatnym). Usługi Azure Speech od Microsoftu są bezpłatne.
Głos generowany na wyjściu może być wybrany spośród różnych dostępnych bezpłatnie od Microsoft (co jednak wymaga rejestracji). Osobowość głosu jest ustawiana już w programie czatu, jak wspomniano powyżej.