Introduction: Vertalende Teddybeer

Dit is een teddybeer die functioneert als vertaalmachine. Als je tegen hem zegt bijvoorbeeld: "How do you say how are you in Russian", dan geeft hij antwoord. Hij is Engelstalig.

Supplies

Raspberry Pi, met Raspbian erop geïnstalleerd

Voeding

Speakers verbonden met een Aux kabel

Een USB microfoon

Een toetsenbord/muis/monitor met HDMI kabel

Een teddybeer

Een stabiele internetconnectie

Een schaar

Naald en draad

Step 1: Opstarten

Start je Pi op en sluit de USB microfoon aan, sluit de speakers verbonden met AUX kabel aan, het toetsenbord, de muis en de monitor aan. Vervolgens zorg je voor een stabiele internetconnectie.

Step 2: Google API Registreren

Ga met je Google account aangemeld naar:

https://console.actions.google.com

Klik vervolgens op de knop "New project"

Dan geef je je project een naam, in dit geval heb ik het "Vertaal beer" genoemd.

Stel dan je taal en regio in, dus dutch en the Netherlands.

(Alhoewel je dutch invult zal de vertaal beer Engelstalig zijn)

Ga vervolgens in een nieuw tabblad naar de Google developers console.( https://console.developers.google.com/apis/library... ) Selecteer het project "Vertaal Beer" links bovenin het scherm en druk op inschakelen.

Ga nu weer terug naar het andere tabblad van https://console.developers.google.com/apis/library...

En scroll naar onder naar "Device registration"

Klik vervolgens op register model en vul dan bij Product name in dit voorbeeld "Vertaal beer" in.

Bij manufacturer name bijvoorbeeld je eigen naam, je mag het zelf verzinnen.

En selecteer bij Device Type speaker.

Bewaar vervolgens de Model-id aangezien je deze later nodig hebt

Klik dan op Register Model.

Download dan de OAuth 2.0 credentials, bewaar deze goed aangezien je deze nog nodig hebt, en klik vervolgens op next.

Dan kan je traits selecteren als je deze nodig hebt, in dit project heb je geen traits nodig, dus klik op save traits zonder verder iets te selecteren.

Ga vervolgens naar het API Credentials Oauth consent screen (https://console.developers.google.com/apis/credent... en selecteer je email adres bij support email, klik vervolgens op save.

Ga ten slotte naar https://myaccount.google.com/activitycontrols en activeer de volgende activity controls.

Web & App activity

Location History

Device information

Voice & Audio activity

Step 3: Audio Instellen Van Google Assistant

Zorg ervoor dat de USB microfoon en de speaker met een AUX kabel aangesloten zijn.

Lokaliseer eerst de microfoon.

Open de terminal en typ dan in:

arecord -l

Schrijf dan de card number en device number op.

Lokaliseer dan de speaker door:

aplay -l

Let op! De 3.5 mm jack is meestal aangegeven als Analog of bcm2835 ALSA.

En de HDMI output is meestal genoteerd als bcm2835 IEC958/HDMI.

Kies hiervan de 3.5 mm jack.

Doe vervolgens:

nano /home/pi/.asoundrc

En zorg ervoor dat het bestand er zo uitziet

Vervang en door de gegevens die je net genoteerd hebt. Zorg ervoor dat je de <> weglaat na het invullen van de nummers.

pcm.!default {

type asym

capture.pcm "mic"

playback.pcm "speaker"

}

pcm.mic {

type plug

slave {

pcm "hw:,"

}

}

pcm.speaker {

type plug

slave {

pcm "hw:,"

rate 16000

}

}

Tot slot Druk op crtl+X en dan op Y en dan op ENTER.

Step 4: Testen Van Microfoon En Speakers

Open de terminal en geef het commando:

speaker-test -t wav

Als het goed is hoor je nu een stem praten, als je dit niet hoort, moet je de speakers nog goed aansluiten.

Nu gaan we de microfoon testen met het volgende commando:

arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw

Nu kan je 5 seconden lang iets inspreken.

Vervolgens geef je het commando

aplay --format=S16_LE --rate=16000 out.raw

Nu zou je moeten horen wat je net ingesproken hebt.

Als dit niet zo is moet je de microfoon checken en kijken of de card number en device number in .asoundrc goed ingevuld is.

Als je het volume niet goed vindt, kan je het volgende commando gebruiken om dit te configureren.

alsamixer

Step 5: Opzetten En Downloaden Van Google Assistant

Update eerste de Raspberry Pi met het volgende commando:

sudo apt-get update

Als hij klaar is met updaten, moet er een bestand gemaakt worden om de credentials die eerder gedownload is op de computer te bewaren.

Om dit te doen, moet je de volgende commando's geven.

mkdir ~/googleassistant

nano ~/googleassistant/credentials.json

Nu moet je het eerder gedownloade json bestand openen met een text editor, en moet de tekst die zich erin bevindt gekopieerd worden en geplakt worden in het bestand op de Pi. Dus kopieer de gegevens uit de text editor en plak ze in de terminal in het bestand. Als je dat gedaan hebt klik dan op CRTL+X dan Y en dan Enter.

Voor python3 te installeren moet het volgende commando gegeven worden:

sudo apt-get install python3-dev python3-venv libssl-dev libffi-dev libportaudio2

Nu moet python3 ingeschakeld worden als virtual environment. Dit doe je met het volgende commando:

python3 -m venv env

Vervolgens moet de meest recente versie van setuptools geïnstalleerd worden, doe dit met het volgende commando:

env/bin/python3 -m pip install --upgrade pip setuptools --upgrade

Om in de nieuw gemaakte python environment te komen moet het volgende commando uitgevoerd worden in de terminal:

source env/bin/activate

Nu we alle pakketten hebben, moet de Google Assistant Library geïnstalleerd worden. Doe dit door de volgende commando's te geven die pip gebruiken om de laatste versie van het python pakket te installeren.

python3 -m pip install --upgrade google-assistant-library
python3 -m pip install --upgrade google-assistant-sdk[samples]

Step 6: De Raspberry Pi Autoriseren Voor Google Assistant

Installeer de Google Authorisation Tool met het volgende commando:

python3 -m pip install --upgrade google-auth-oauthlib[tool]

Nu de Google Authorisation Library geïnstalleerd is, moet deze uitgevoerd worden. Dus voer deze commands in in de Terminal.

google-oauthlib-tool --client-secrets ~/googleassistant/credentials.json \

--scope https://www.googleapis.com/auth/assistant-sdk-pro... \

--scope https://www.googleapis.com/auth/gcm \

--save --headless

Nu komt er een lange link, kopieer deze volledig en bezoek deze met een webbrowser.

Log dan in met het juiste Google account waarmee je de API hebt opgezet.

Dan komt er een code in beeld, kopieer deze code en plak hem in de Terminal en druk op Enter.

Als de Authenticatie goed is verlopen verschijnt dit in de terminal:

“credentials saved: /home/pi/.config/google-oauthlib-tool/credentials.json”

Vul vervolgens in de terminal dit commando in

googlesamples-assistant-pushtotalk --project-id <project-id> --device-model-id <device-model-id>

Vervang <project id> door het project id, als je het project id vergeten bent kan je deze terugvinden op https://console.actions.google.com/, onder project settings wat rechtsbovenin onder de 3 puntjes staat.

Vervang <device id> door de device id die eerder verkregen is. Ben je deze vergeten, kan je deze terugvinden op de google console actions website onder Device Registration.

Na dit commando ingevoerd te hebben kan je op Enter drukken en zou je tegen de assistent moeten kunnen praten. Let op: Deze is wel Engelstalig. Je kan hem testen door bijvoorbeeld te vragen: What's the time?

Step 7: Google Assistant Activeren

Om Google assistant te activeren zonder alle voorgaande stappen te doen geef je de commando's:

source env/bin/activate

googlesamples-assistant-pushtotalk

Als dit werkt door steeds op Enter te drukken ga je door naar de volgende stap.

Step 8: Google Assistant Activeren 2.0

Nu gaan we ervoor zorgen dat er niet elke keer op Enter geklikt hoeft te worden, maar hij gewoon reageert op je stem.

Open een nieuwe Terminal

Geef het commando:

nano /home/pi/start_assistant.sh

Zet de volgende gegevens in het bestand:

#!/bin/bash
source /home/pi/env/bin/activate googlesamples-assistant-pushtotalk --device-model-id <deviceid>

Vervang <deviceid> door je deviceid die je eerder verkregen hebt in de instructable.

Klik dan op CRTL+X en Y en Enter.

Nu er een bash script gemaakt is moet er een service file gemaakt worden, doe dit dmv het volgende commando:

sudo nano /lib/systemd/system/assistant.service

zet de volgende gegevens in het bestand

[Unit]
Description=Google Assistant

Wants=network-online.target

After=network-online.target

[Service]

Type=simple

ExecStart=/bin/bash /home/pi/start_assistant.sh

Restart=on-abort

User=pi

Group=pi

[Install]

WantedBy=multi-user.target

Doe nu CRTL+X en Y en Enter om het bestand op te slaan.

Step 9: Google Assistant Opstarten

Als je nu je Raspberry Pi opstart en je wilt dat Google Assistant opstart om als vertaalmachine voor het vertaalbeertje te werken moet je het volgende doen.

Zorg voordat je de Raspberry Pi in headless mode opstart (zonder monitor) dat er een stabiele verbinding is met een wifi netwerk, aangezien dit niet aan te passen is in headless mode.

Vervolgens start je je Raspberry Pi op en je doet het volgende met een toetsenbord:

CRTL+T (opent Terminal)

sudo systemctl enable assistant.service

Enter

sudo systemctl start assistant.service

Enter

Nu moet Google Assistant werken en hoef je niet elke keer op Enter te drukken, maar zal hij reageren op je stem.

Als hij niet werkt kan je controleren wat er mis is gegaan met:

sudo systemctl status assistant.service

Er is een daily limit en hij reageert op alles, dus als hij veel is gebruikt op een dag kan hij een error geven bij de sudo systemctl status assistant.service commando, de oplossing hiervoor is minimaal 24 uur wachten.

Step 10: Raspberry Pi Verwerken in Teddybeer

Als laatste moet een Teddybeer opengeknipt worden, vulling eruit gehaald worden en speakers in geplaatst worden. Tot slot wordt hij dichtgenaaid tot een punt dat er nog kabels uit kunnen steken uit een klein gaatje. De Raspberry Pi kan vastgemaakt worden met draad die een lus vormt. In deze lus gaat de Pi en deze wordt een soort van vastgenaaid met enkele lussen aan de onderkant van de Teddybeer. Nu is hij klaar voor gebruik.

Step 11: Opstarten Teddybeer

Er is geen monitor en geen muis meer nodig. Deze kunnen ontkoppeld worden gelaten.

Om de teddybeer op te starten moet de Pi in het stopcontact gestoken worden, eventueel ook de speakers in het stopcontact. Dan wachten tot hij opgestart is ±2 minuten en hij moet een stabiele wifi verbinding hebben. Na twee minuten doe je het volgende.

Gebruik het toetsenbord en doe het volgende op het nog aangesloten toetsenbord:

CRTL+T

sudo systemctl enable assistant.service

Wacht 20 seconden

sudo systemctl start assistant.service

Nu kan het toetsenbord ontkoppeld en opgeborgen worden.

Nu werkt deze teddybeer als vertaalbeer.

Om hem te testen kun je vragen: How do you say hello how are you in Russian?

Je krijgt dan antwoord van de teddybeer.