Röststyrda assistenter har snabbt blivit vardag. 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 tillgänglig — åtminstone delvis — för alla. Googles Assistant SDK låter dig använda tjänsten på dina egna enheter. Den här handledningen tar upp hur du ställer in Google Assistant på din Raspberry Pi och röstaktiverar en LED via GPIO-stift.
Hårdvara som krävs för en Raspberry Pi Home Assistant
Du kommer behöva:
- Raspberry Pi med en ny Raspbian-installation på SD-kortet. USB-webbkamera eller mikrofon. Extern högtalare. Krets från Pi LED tutorial (valfritt) En webbläsare inloggad på ditt Google-konto.
Notera: Utrustningen för denna handledning kan variera något. Jag använde en extra USB-webbkamera enbart för dess mikrofon. Alla kompatibla webbkamera eller mikrofoner borde fungera bra, och det finns omfattande listor över Pi-kompatibla enheter till hjälp.
Jag använder också 3,5 mm-utgången för ljud. HDMI och andra utgångskällor kommer också att fungera, även om det kommer att kräva modifieringar av ljudinställningen nedan.
Anslut USB-webbkameran och högtalaren 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 sätten 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.
Bilden ovan visar USB-webbkameran som kort 1 och enhet 0. Notera kort- och enhetsnumren för både mikrofon- och högtalarutgång.
Se nu till att du är i /home/pi katalog, skapa en ny fil och öppna den i nano:
sudo nano .asoundrc
Innehållet i denna katalog kommer att skilja sig beroende på vilket kort- och enhetsnummer du använder. Det är här du kan välja att föredra HDMI-utgång istället för 3,5 mm om du vill.
När du har angett din version av ovanstående kod, tryck Ctrl + X för att spara och avsluta.
Testa din inställning genom att spela in och spela upp ett kort klipp:
Valfritt steg: Om du vill ändra ingångsvolymen på din mikrofon, öppna alsamixer och tryck F6 att växla mellan enheter.
Det är allt! Ljudet är inställt.
Skapar Google Project
Öppna Pi:s webbläsare, alternativt, om du är ansluten via SSH, öppna en webbläsare lokalt. Navigera till Google Action Console och klicka Nytt projekt.
Detta 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.
Aktiverar Google Assistant API
Det finns några onlinejusteringar du måste göra för att fortsätta. Navigera till Google Assistant API-webbplatsen och klicka Gör det möjligt.
Projektet kräver också aktivitetsbehörigheter. Gå till din aktivitetskontrollpanel och se till att följande aktiviteter är aktiverade:
Webb- och appaktivitet (inklusive kryssrutan Chrome History) Enhetsinformation Röst- och ljudaktivitet
Nu kan du gå vidare till att registrera enheten.
Registrera din Raspberry Pi
Tillbaka i Action Console, välj Enhetsregistrering från den vänstra panelen. Under Produkt skapa ett lätt att komma ihåg namn för din enhet. Tillverkarens namn är inte viktigt (men måste finnas där), och välj Bil för enhetstypen.
Klick Registrera modelloch klicka på nästa skärm Ladda ner OAuth 2.0-uppgifter. Detta laddar ner en JSON-fil till din dator. Om du inte är bekant med JSON-filer, oroa dig inte, men att lära sig hur man använder JSON är värt att göra för framtiden!
Den officiella Google-guiden rekommenderar att filen flyttas till /home/piså öppna filhanteraren och gör detta nu.
Extra steg för SSH-användare:
Om du använder SSH har du laddat ner JSON-filen till din lokala dator istället för Pi. För att överföra den, öppna ett separat terminalfönster utan SSH-anslutning. Från det här fönstret kopierar du klientens hemliga JSON-fil med detta kommando:
scp ~/Downloads/client_secret_client-id.json [email protected]:/home/pi/
Byt ut “raspberry-pi-ip-adress” med din Pi:s ip-adress, och glöm inte kolonet före sökvägen. Om du laddade ner JSON-filen till en annan plats, ändra din lokala sökväg för att återspegla detta. Ange ditt lösenord när du uppmanas, så kopieras filen till Pi:s hemkatalog.
Växla tillbaka till SSH-terminalen och navigera till /home/pi. Stiga på ls -l för att lista filerna i katalogen. Du bör se den överförda klientens hemliga JSON-fil.
Installera SDK
Google rekommenderar att du arbetar i en virtuell Python-miljö. Skapa en ny virtuell miljö som heter env.
Om du aldrig har gjort det här förut kommer den här handledningen att hjälpa dig att lära dig hur du använder Python virtuella 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 vissa beroenden 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 Google Assistant SDK, Samples och OAuth-verktyget.
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-auth-oauthlib[tool] med referens-JSON-filen som laddades ner tidigare för att autentisera din 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 behörighetskod.
Genom att klicka på länken öppnas webbläsaren. Du kommer att uppmanas att aktivera enheten på ditt Google-konto. Kopiera auktoriseringskoden som följer och klistra in den i ditt terminalfönster igen.
Du bör få en bekräftelseläsning Inloggningsuppgifter sparade: /home/pi…vilket betyder att Pi har auktoriserats med ditt Google-konto.
Testar det
Nu när allt är på plats är det dags att testa din Pi Google Assistant. Kör assistenten med detta kommando:
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 (finns under kugghjulet Inställningar på Action Console). Din enhet-modell-id listas under 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:
Det är allt! Google Assistant körs nu på din Raspberry Pi. Observera att om utgångsvolymen är lite låg kan du ändra den genom att säga “Hey Google, vrid upp volymen till 80 %.”
Bonus: Röstaktiverad GPIO
Det går att styra 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 fungera med GPIO-stiften är relativt enkelt, men kräver några extra steg. Gå till Google Action Console och hitta din enhet under Enhetsregistrering. Klicka på den och öppna egenskapsmenyn:
Vrid På av egenskap på och klicka Spara.
Se nu till att du är inne 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 hotword.py manus.
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
Ändra skriptet
Du måste lägga till några rader i hotword.py-skriptet, så öppna det i nanoredigeraren:
nano hotword.py
Under importsatserna lägger du till din egen för RPi.GPIO.
import RPi.GPIO as GPIO
Leta efter process_händelse metod. På rad 66, ta bort eller kommentera utskriftssatsen och lägg till en if-sats för att styra 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 lysdioden, men än så länge är den inte konfigurerad för utmatning. Ställ in den i main() funktion innan processen process_event-metoden anropas.
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW)
Nu är GPIO-stiftet inställt på utmatning och initieras i ett lågt tillstånd. Spara och avsluta. Du kan köra ditt modifierade skript genom att skicka 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 kommer att fungera som standard. Men när du säger “OK Google, slå på” kommer du att se en ny utgång:
Notera: Ovanstående bild har beskurits, och visar bara assistenten som hörde begäran och utskriftsutlåtandet lagt till skriptet.
Du borde se din LED lysa också!
Din egen DIY Raspberry Pi Google Home Assistant
Det här projektet är en bra introduktion till att använda Googles API-tjänster. Nu när du har en Google Assistant-enhet kan du prova några av de bästa Google Home-kommandona — vi har tittat på några fantastiska Google Home-minispel.
Om författaren
Ian Buckley (220 artiklar publicerade)
Ian Buckley är en frilansjournalist, musiker, artist och videoproducent bosatt i Berlin, Tyskland. När han inte skriver eller står på scen, pysslar han med DIY-elektronik eller kod i hopp om att bli en galen vetenskapsman.
Mer från Ian Buckley
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera
