Vill du bygga ditt eget röststyrda smarta hemnav?  Så här använder du Google Assistant med en Raspberry Pi!

Hur man bygger en DIY Google Home Assistant med Raspberry Pi

Annons Röststyrda assistenter har snabbt blivit vanliga. Många hem har en Alexa eller Google Home som styr allt från belysning till media och till och med tidtagning. Tekniken som dessa enheter körs på är åtminstone delvis tillgänglig för alla. Googles Assistant SDK låter dig använda tjänsten på dina egna enheter. Den här tut

Annons

Röststyrda assistenter har snabbt blivit vanliga. Många hem har en Alexa eller Google Home som styr allt från belysning till media och till och med tidtagning.

Tekniken som dessa enheter körs på är åtminstone delvis tillgänglig för alla. Googles Assistant SDK låter dig använda tjänsten på dina egna enheter. Den här tutorialen beskriver hur du ställer in Google Assistant på din Raspberry Pi och röstaktiverar en LED via GPIO-stift.

Maskinvara krävs för en Raspberry Pi-hemassistent

Raspberry Pi Google-assistent krävs utrustning

Du kommer behöva:

  1. Raspberry Pi med en ny Raspbian-installation på SD-kortet Hur man installerar ett operativsystem på en Raspberry Pi Hur man installerar ett operativsystem på en Raspberry Pi Så här installerar du ett operativsystem på Raspberry Pi och hur man klonar din perfekta installation för snabb katastrofåterställning. Läs mer .
  2. USB-webbkamera eller mikrofon.
  3. Extern högtalare.
  4. Krets från Pi LED-handledning Hur programmerar du Raspberry Pi för att styra LED-lampor Hur programmerar du Raspberry Pi för att kontrollera LED-lampor Letar du efter ett enkelt Raspberry Pi-projekt för att komma igång med kodning och elektronik? Försök ansluta några lysdioder och koda dem för att slå på och stänga av! Läs mer (valfritt)
  5. En webbläsare som är inloggad på ditt Google-konto.

Obs: Utrustningen för denna handledning kan variera något. Jag använde en extra USB-webbkamera bara för sin mikrofon. Alla kompatibla webbkameror eller mikrofoner bör göra det bra, och det finns omfattande listor med Pi-kompatibla enheter som kan hjälpa dig.

Dessutom använder jag 3, 5 mm-utgången för ljud. HDMI och andra utgångskällor fungerar också, men det kräver ändringar av ljudinställningen nedan.

Anslut USB-webbkamera och högtalare och ställ in LED-kretsen om du använder den.

Ställa in ljudet

Denna handledning kan följas direkt på Pi eller via en SSH-anslutning till Pi.

Båda vägarna börjar i terminalen för att kontrollera ljudinställningarna. Använd kommandona arecord -l och aplay -l för att lista tillgängliga enheter.

Kontrollera uppspelnings- och inspelningsenheter

Bilden ovan visar USB-webbkameran som kort 1 och enhet 0 . Notera kort- och enhetsnumren för både mikrofon- och högtalarutgången.

Se till att du befinner dig i katalogen / home / pi, skapa en ny fil och öppna den i nano:

 sudo nano .asoundrc 

Innehållet i den här katalogen kommer att variera beroende på vilka kort- och enhetsnummer du använder. Det är här du kan välja att gynna HDMI-utgång snarare än 3, 5 mm om du vill.

asoundrec konfigurationsfil för mikrofon och högtalare

När du har angett din version av koden ovan trycker du på Ctrl + X för att spara och avsluta.

Testa din installation genom att spela in och spela upp ett kort klipp:

Gör en testinspelning för att kontrollera din installation

Valfritt steg: Om du vill ändra inmatningsvolymen för din mikrofon, öppna alsamixer och tryck på F6 för att växla mellan enheter.

Det är allt! Ljudet är inställt.

Skapa Google-projektet

Öppna Pis webbläsare, alternativt, om du är ansluten via SSH, öppna en webbläsare lokalt. Navigera till Google Action Console och klicka på New Project .

Skapa ett nytt Google-projekt

Det kan ta några ögonblick. När du är klar, lämna fönstret aktivt och öppna en ny flik - vi kommer till detta om ett ögonblick.

Aktivera Google Assistant API

Det finns några justeringar online som du måste göra för att fortsätta. Navigera till webbplatsen för Google Assistant API och klicka på Aktivera .

Aktivera Google Assistant API

Projektet kräver också aktivitetsbehörigheter. Gå till din Aktivitetskontrollpanel och se till att följande aktiviteter är aktiverade:

  • Webb- och appaktivitet (inklusive kryssrutan för Chrome Historia)
  • Enhetsinformation
  • Röst- och ljudaktivitet

Ändrar inställningar för Google Aktivitet

Nu kan du gå vidare till att registrera enheten.

Registrera din hallonpi

Tillbaka i Action Console väljer du Enhetsregistrering från vänster panel. Under Produkt skapar du ett namn som är lätt att komma ihåg för din enhet. Tillverkarens namn är inte viktigt (men måste vara där) och välj Auto för enhetstypen.

Registrera din Pi som modell

Klicka på Registrera modell och klicka på Ladda ner OAuth 2.0-referenser på nästa skärm. Detta laddar ner en JSON-fil till din dator. Om du inte är bekant med JSON-filer, oroa dig inte, men lära dig att använda JSON JSON Python-parsning: En enkel guide JSON Python-parsning: En enkel guide Det finns bibliotek och verktygssatser tillgängliga för att analysera och generera JSON från nästan alla språk och miljöer. Den här artikeln koncentrerar sig på metoder och problem som härrör från JSON python-parsing. Läs mer är värt att göra för framtiden!

Den officiella Google-guiden rekommenderar att du flyttar filen till / home / pi, så öppna filhanteraren och gör det nu.

Extra steg för SSH-användare:

Om du använder SSH har du laddat ner JSON-filen till din lokala maskin istället för Pi. För att överföra det öppnar du ett separat terminalfönster utan SSH-anslutning. I det här fönstret, kopiera över den klienthemliga JSON-filen med detta kommando:

 scp ~/Downloads/client_secret_client-id.json :/home/pi/ 

Byt ut "hallon-pi-ip-adress" med din Pis ip-adress, och glöm inte kolon före vägen. Om du laddade ner JSON-filen till en annan plats ändrar du din lokala sökväg för att återspegla detta. Ange ditt lösenord när du uppmanas och filen kommer att kopieras till Pis hemkatalog.

Kopiera Secret Cient-ID till PI

Byt tillbaka till SSH-terminalen och navigera till / home / pi . Ange ls -l för att lista filerna i katalogen. Du bör se den överförda klienthemliga JSON-filen.

Installera SDK

Google rekommenderar att du arbetar i en Python-virtuell miljö. Skapa en ny virtuell miljö som heter env .

Om du aldrig har gjort det tidigare, hjälper denna handledning dig att lära dig hur du använder virtuella Python-miljöer.

Installera de senaste versionerna av Pip, Setuptools och Wheel och aktivera din virtuella miljö:

 env/bin/python -m pip install --upgrade pip setuptools wheel source env/bin/activate 

Google Assistant har några beroende som du bör installera i den virtuella miljön nu.

 sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev 

Slutligen installerar du verktyget Google Assistant SDK, Samples och OAuth.

 python -m pip install --upgrade google-assistant-library python -m pip install --upgrade google-assistant-sdk[samples] python -m pip install --upgrade google-auth-oauthlib[tool] 

Det är allt som behövs för att komma igång. Om någon av installationerna misslyckas, kontrollera stavningen och avståndet noggrant.

Autentisera Raspberry Pi

Använd google-autor-oauthlib [verktyget] med den JSON-fil som har laddats ner tidigare för att autentisera Raspberry Pi.

 google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \ --scope https://www.googleapis.com/auth/gcm \ --save --headless --client-secrets /home/pi/YOUR_CLIENT_SECRET_ID.json 

Du måste ersätta YOUR_CLIENT_SECRET_ID med den nedladdade filen, så det är värt att kopiera filnamnet först. Detta klient-ID måste vara korrekt. Ändra inte filnamnet!

Du bör få ett meddelande med en länk som ber dig klistra in en auktoriseringskod.

Generera autorisationslänken från kommandoraden.

Om du klickar på länken öppnas webbläsaren. Du blir ombedd att aktivera enheten på ditt Google-konto. Kopiera behörighetskoden som följer och klistra in den tillbaka i terminalfönstret.

Du bör få en bekräftelse som läser Credentials Saved: / home / pi…, vilket betyder att Pi har godkänts med ditt Google-konto.

Testa det

Nu när allt är på plats är det dags att testa din Pi Google Assistant. Kör assistenten med det här kommandot:

 googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model 

Du måste byta ut mitt-dev-projekt med ditt projekt-ID (hittas under inställningens hjul på Action Console). Din enhetsmodell-id visas i avsnittet Enhetsregistrering i Action Console.

Testa! Säg "OK Google" och ställ en fråga. Du kan se programutgången i terminalen när du hör svaret:

Terminalutgång för Google Assistant

Det är allt! Google Assistant körs nu på din Raspberry Pi. Observera att om outputvolymen är lite låg kan du ändra den genom att säga "Hej Google, vrid upp volymen till 80%."

Bonus: Röstaktiverad GPIO

Det är möjligt att kontrollera lampor med en Arduino och Siri, men det finns en enklare metod. Om du ställer in en lysdiod kan du använda Google Assistant för att styra den med din röst.

Att ställa in Google Assistant för att arbeta med GPIO-stiften är relativt enkelt, men det krävs några extra steg. Gå till Google Action Console och hitta din enhet under Enhetsregistrering. Klicka på den och öppna dragmenyn:

Aktivera egenskapen OnOff Assistant

Slå på OnOff- egenskapen och klicka på Spara.

Försäkra dig nu om att du är i env- virtuell miljö, klona en version av SDK till din Pi med git:

 git clone https://github.com/googlesamples/assistant-sdk-python 

Eftersom detta är en virtuell miljö måste du installera RPi.GPIO innan du går vidare.

 pip install rpi.gpio 

Navigera nu till mappen som innehåller skriptet hotword.py .

 cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library 

Ändra manus

Du måste lägga till några rader i skriptet hotword.py, så öppna det i nano-redigeraren:

 nano hotword.py 

Lägg till dina egna för RPi.GPIO under importförklaringarna.

 import RPi.GPIO as GPIO 

Leta efter process_event- metoden. Ta bort eller kommentera utskriftsmeddelandet på rad 66 och lägg till ett if-uttalande för att kontrollera lysdioden.

 #print('Do command', command, 'with params', str(params)) if command == "action.devices.commands.OnOff": if params['on']: print('---------------') print('Led turned on') print('---------------') GPIO.output(18, GPIO.HIGH) else: print('---------------') print('Led turned off') print('---------------') GPIO.output(18, GPIO.LOW) 

Denna logik styr LED: n, men hittills är den inte konfigurerad för att mata ut. Ställ in den i huvudfunktionen () innan process_event-metoden kallas.

 GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW) 

GPIO-stiftet är nu inställt på att mata ut och initialiseras i ett lågt tillstånd. Spara och avsluta. Du kan köra ditt modifierade skript som passerar ditt modell-ID-nummer (finns i Action Console) som ett argument.

 python hotword.py --device-model-id YOUR-MODEL-ID-HERE 

Terminalutgången är densamma som tidigare och assistenten fungerar som standard. Men nu, när du säger "OK ​​Google, slå på" ser du en ny utgång:

Terminalmeddelande som visar "LED slår på" utskrift

Obs: Bilden ovan har beskurats och visar endast assistenten som hör till begäran och utskriften har lagts till i skriptet.

Du bör också se din LED tända!

Röstaktiverad LED.

Din egen DIY Raspberry Pi Google Home Assistant

Detta projekt är en bra introduktion till att använda Google API-tjänster. Nu när du har en Google Assistant-enhet kan du prova några av de bästa Google Home-kommandona Google Home Commands Cheat Sheet. Google Home Commands Cheat Sheet. Vår fusksida med Google Home-kommandon innehåller massor av praktiska åtgärder, inklusive underhållning, information och automatisering. Läs mer — Vi har tittat på några fantastiska Google Home-minispel 15 Google-hemkommandon för minispel och mer 15 Google-hemkommandon för minispel och mer Du kan göra så många saker med Google Hem-kommandon. Här är flera underhållande Google Home-kommandon som är värda att prova. Läs mer .

Utforska mer om: DIY-projektstudier, Google Assistant, LED-lampor, Raspberry Pi, Smart Hubs.