SHOTech Blog

プログラミングに関する記録です

ちょまどさんの筋肉ボイス動かしてみた

google home とAzureを連携させて何か作ってみたいなと思っていたら、3月くらいにあったGoogleHomeHackでMicrosoftのちょまどさんが面白そうなもの作ってたので、Githubからソースを手に入れて動かしてみました。

簡単だと思っていたら意外とハマるポイントがあって難航しました(笑)

 

作るものはこれです。

 

ソースはここ

github.com

 

参考情報(Github内にもリンクあり)として使用しました。

satoshi-maemoto.hatenablog.com

 

全体的な構成はこんな感じ(ちょまどさんのGithubからお借りしました)

f:id:syota-y1989:20180729013940g:plain

 

ストレージアカウントの作成

まずストレージがないので、作成

f:id:syota-y1989:20180728235316p:plain

 

名前つけて、アカウントの種類とレプリケーションを指定して作成

今回作ったものはまとめたいので、1つリソースグループ作ってます。(このタイミングで新規作成してもいい)

f:id:syota-y1989:20180729000045p:plain

 

Visual Studioでの作業

GithubからもらってきたソースからC#のプロジェクト開く

ソリューションエクスプローラーからプロジェクトを右クリックから「発行」しようとしたら、なんかエラーが出てる

VoiceTextAPIのところの「Keys」ってのがないだと・・・

f:id:syota-y1989:20180728163436p:plain

 

qiitaにこのエラーが載っていました。

qiita.com

どうやら1つのクラスがないらしいので、それを作るよう書いてありました。

Gitにあげるときに多分公開できない部分として削除されているのだと思います。

f:id:syota-y1989:20180728234214p:plain

 

ここで疑問だったのが、

参考にしたsatoshi-maemotoさんの記事だと、AzureのFunctions上のアプリケーションの設定からAPIのキーを設定しているみたいだが、

Qiitaの記事だとソースにハードコーディングしてるので、パラメータ化して外から与える方法があるのかな?ということ(とりあえず今回はQiitaのやり方でやりました)

 

そのあと、VoiceTextWebAPIを入れるためにパッケージマネージャーを開こうとしたら「パラメータが間違っています」というエラーでこの画面が開けませんでした。(エラーのキャプチャは取るの忘れました)

f:id:syota-y1989:20180729001030p:plain

 

そもそも私はVisual Studioは最低限の機能(UWPとUnityのみ)しかインストールしていなかったので、Azure系含め今後趣味で使いそうなものをまとめて入れたらNugetのパッケージマネージャーも開けるようになりました。(VSは普段使わないので全然使いこなせてないな・・・)

f:id:syota-y1989:20180729001610p:plain

これで発行できるはずなので、発行してみる。というかローカルからAzure Functionsに直接デプロイできるんだなんて便利!

f:id:syota-y1989:20180729001821p:plain

  • アプリ名
  • リソースグループ(ストレージアカウント作るときに一緒に作ったやつ)
  • ホスティングプラン(既存でもってたやつ)
  • ストレージアカウント(さっき作ったやつ)

この辺を入力して作成する

f:id:syota-y1989:20180729022844p:plain

ホスティングプランがなければ作ってもいい

f:id:syota-y1989:20180729002740p:plain

これで発行完了。出力されているログに「発行が完了しました」と出ていればOKだと思います。

f:id:syota-y1989:20180729003021p:plain

qiitaの記事では失敗することがあるようですが、もう一回発行するとうまくいくらしい。

 

ストレージの設定

作成したストレージアカウントを開いて、BLOBを選択

f:id:syota-y1989:20180729003527p:plain

 

コンテナを作成

f:id:syota-y1989:20180729003800p:plain

できた

f:id:syota-y1989:20180729003922p:plain

FunctionからURLを取得するひつようあるので、Functionを開いて、「関数」>「GoogleHome」から「</>関数のURLを取得」をクリック

f:id:syota-y1989:20180729004456p:plain

 

qiitaでは「_master」のほうを使用していたので、「_master」のキーを覚えておく(DialogFlowで使います)

f:id:syota-y1989:20180729004758p:plain

Actions on Googleの設定

Actions on Googleで「Add」から新しいプロジェクトを作る

f:id:syota-y1989:20180729005249p:plain

プロジェクト名を入れて、Languageとregionを日本に設定して作成する

f:id:syota-y1989:20180729005606p:plain

テンプレがいっぱい出てくるけどとりあえずSKIP!

f:id:syota-y1989:20180729005747p:plain

 

左のメニューから「Actions」を選択、「ADD YOUR FIRST ACTION」をクリック

f:id:syota-y1989:20180729010027p:plain

「Custom Intent」を選択して、「BUILD」を選択するとDialogFlowが立ち上がる

f:id:syota-y1989:20180729010248p:plain

 

DialogFlowの設定

言語はとりあえず日本語にして「CREATE」。完了まで待つ。

f:id:syota-y1989:20180729010519p:plain

 

すでに作成されている「Default Welcome Intent」に「Add Follow-up intent」から「fallback」を選択

f:id:syota-y1989:20180729011647p:plain

f:id:syota-y1989:20180729011907p:plain

追加されるとこんな感じ。この作成したINTENTを選択する

f:id:syota-y1989:20180729011954p:plain

output Contextに「DefaultWelcomeIntent-followup」を追加する

f:id:syota-y1989:20180729012228p:plain

一番下の「Fulfillment」からWebhookをenableにして「SAVE」

f:id:syota-y1989:20180729012421p:plain

左のメニューから「FulFillment」を選択、Webhookを「ENABLED」にして、AZUREのFunctionsのURLを設定する。一番下に「SAVE」があるので忘れずに保存する。

f:id:syota-y1989:20180729012755p:plain

動かしてみる

DialogFlowの左のメニューから「Integrations」から「Google Assistant」を選択

f:id:syota-y1989:20180729013133p:plain

「TEST」を選択

f:id:syota-y1989:20180729013252p:plain

「CONTINUE」を選択

f:id:syota-y1989:20180729013354p:plain

 

 

 

「CREATE INTENT」からINTENTを作成する

f:id:syota-y1989:20180729010831p:plain

 

Actions on Googleに戻るのでそこでテスト実行・・・

応答しなかった(´;ω;)

f:id:syota-y1989:20180729013605p:plain

 

この現象には本当に困った。参考ページも見ながらいろいろと見直してみたけど、Azure経験がほぼ0ということもあり全然わからなかった。

Qiitaのやり方でINTENTを作ってみてもダメ。なんやかんやで2時間くらい経って、気分転換にオーバーロード3期の最新話見て、晩御飯食べて再開したときに、作業中ずっと出ていたこのメッセージに行き着いた。

f:id:syota-y1989:20180729014829p:plain

設定を開いてみる

f:id:syota-y1989:20180729014952p:plain

DialogFlowのAPIは現在V2がオフィシャルになったので、基本的に新しくagentを作るとデフォルトでV2になるみたい。で、もともとちょまどさんがこのアプリを作ったのは3月くらい。

もしかしてV1にしないとダメなんじゃないかと思い、V2→V1に変更してSAVE

f:id:syota-y1989:20180729015503p:plain

 

イカツイ声が返ってきました!!

f:id:syota-y1989:20180729020019p:plain

 

超すっきりしました!!

ただ、今後はV2がオフィシャルなんだとしたら、V2でAZUREと連携するには微妙に設定が違うということなんだけど、そのやり方を早いうちに知っておくべきかなと思いました。

 

モノづくりしているとこういった壁にぶち当たることが多々あって、トライ&エラーで地道にやっていくしかなく、闇が深いと抜け出すのも時間がかかってストレスがたまっていくんだけど、解決した瞬間に「ヨッッッシャーーーー!!!!」とため込んでいたものが解放されて達成感を味わうことができるんですよね。だからうまくいかない工程も含めてモノづくりは楽しい!!

 

 

筋肉ボイス楽しいw

Alexaにも移植してみようかな

youtu.be