Codamaでお地蔵さん

ユカイ工学でインターンをさせて頂きました!

「Codama」という音声コミュニケーションキットを使ってお地蔵さんのような形をした司会者支援ツールを作ることにした私は、3日目かけてハードとソフトの両方に取り組みました。

まずハードの面では2時間ほどで大まかに設計した後、業務用3Dプリンターで出力させてもらいました。造形時間の関係で修正がいくつかありましたが、出来上がりはすごく綺麗でした。

f:id:massiro-myaon:20190402020507j:plain

ソフトの面では、Google Assistantをベースにするため公式サイトの手順に沿って準備しました。私はGoogle Assistant Serviceの方を選びましたが、手順通りとはいえすごく時間がかかりました。

https://developers.google.com/assistant/sdk/guides/service/python/

pushtotalk まで使えるようになったら、pushtotalk.pyの460行目付近を編集して、ウェイクアップワードで起動するようにします。(pushtotalk.pyの階層はgooglesamples-assistant-pushtotalkをctl+cで停止したときのエラー文に表示される)

while True:
if GPIO.input(27) == GPIO.HIGH:
        #if wait_for_user_trigger:
        #    click.pause(info='Press Enter to send a new request...')
        continue_conversation = assistant.assist()
        # wait for user trigger if there is no follow-up turn in
        # the conversation.
        wait_for_user_trigger = not continue_conversation

次にpushtotalk.py とひたすら睨めっこして、Assistant が認識した音声によって分岐を作ることに取り組みました。

AIY キットを使ったものは試したことがありましたが、1から image を書き換えるわけにもいかないので苦労しました。 

どうやらrespというjsonファイルに認識結果を格納しているようですが、150行目付近の%sがそのまま使えそうなので、今回はよく理解しないままここを使いました。

if resp.speech_results:
    logging.info('Transcript of user request: "%s".',
        ' '.join(r.transcript
            for r in resp.speech_results))
    word = (' '.join(r.transcript
                         for r in resp.speech_results))
if word == u"今日は":
    ~

LEDやサーボの機能もcodama ボードで実装出来ているので、気が向いたらGoogle Assistantの分岐先で組み合わせて行こうかと思います!