8bitsandabyte
Published © CC BY-NC

The All-Knowing Artifact

The aim of this project is to build an ancient relic that looks the part, but is delightfully useless. We're thinking of an all knowing stat

IntermediateFull instructions provided20 hours151
The All-Knowing Artifact

Things used in this project

Hardware components

Raspberry Pi 4 Model B
Raspberry Pi 4 Model B
×1
Google AIY Kit
×1
Bamboo
×1
Glue
×1
Primer
×1
Spray Paint
×1
Sandpaper
×1

Software apps and online services

Google Dialogflow
Google Cloud Platform

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)

Story

Read more

Custom parts and enclosures

Statue Model

Schematics

Data flow

Code

truthTeller.py

Python
# Generic imports
import time
import os
import vlc

# Dialogflow setup
import aiy.voice.tts 
import dialogflow_v2 as dialogflow
from aiy.board import Board
from aiy.cloudspeech import CloudSpeechClient
from google.cloud import texttospeech

session_client = dialogflow.SessionsClient()
session = session_client.session_path('YOUR PROJECT ID', 12345)

# Instantiates a client
speechClient = texttospeech.TextToSpeechClient()
cloudClient = CloudSpeechClient()


def getDialogResponse(text):

    text_input = dialogflow.types.TextInput(text=text, language_code='EN')

    query_input = dialogflow.types.QueryInput(text=text_input)

    response = session_client.detect_intent(session=session, query_input=query_input)

    text = response.query_result.fulfillment_text

    return response

def say(test):

    synthesis_input = texttospeech.types.SynthesisInput(text=test)
    voice = texttospeech.types.VoiceSelectionParams(language_code='en-US', ssml_gender=texttospeech.enums.SsmlVoiceGender.MALE)
    audio_config = texttospeech.types.AudioConfig(audio_encoding=texttospeech.enums.AudioEncoding.LINEAR16)
    response = speechClient.synthesize_speech(synthesis_input,voice,audio_config)

    with open('/home/pi/Desktop/truthteller/output.wav', 'wb') as out:
        out.write(response.audio_content)
        out.close()

    os.system('aplay ' + "/home/pi/Desktop/truthteller/output.wav")


while True:

    print('Listening...')
    spokenText = cloudClient.recognize() 

    if spokenText is None:
        print('You said nothing.')
    else:
        print(spokenText)
        response = getDialogResponse(spokenText)
        textToSay = response.query_result.fulfillment_text
        print(textToSay)
        say(textToSay)

    
    time.sleep(2)

Credits

8bitsandabyte

8bitsandabyte

55 projects • 45 followers
We’re Dane & Nicole, two makers that create tremendously terrible tech, which we happily share with you on our channel!

Comments