AjaxとWeb Speech APIとVoiceText Web APIで会話を楽しみましょう

バックエンドでAPIの実装をしていると、これインタラクティブに動かせたら楽しそうじゃないですかって思うことがよくあると思います。少なくとも最近あったわけですね。

それでAjaxなんて調べてみて、フロントエンドさんに聞いてみたりして、掲題の内容を書くに至りました。

とりあえず非同期通信おうむ返しする

まず入力した文字を瞬時に打ち返してくる仕組みをAjaxとPHPで実装したいと思います。

htmlファイルはこれだけでおk。

clicker関数は入力された文字をmessage変数に入れてsample.phpに飛ばしてmessage変数に入って戻って来た文字をdivタグ配下に追加していきます。

sample.phpはおうむ返しです。

もうこの2つがあるだけでひたすら言い合いができます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-14-21-14-37

ここまで出来たら欲が出てくる

せっかくなら声で入力したいし声で返してくれたらいいなって思いました。ですので、Web Speech APIVoiceText Web APIを使いたいと思います。

Web Speech API: 音声の入力を文字に起こしてくれる便利なやつです。実行できる環境は限られますのでご注意ください。
VoiceText Web API: 逆に文字を音声にしてくれる便利なやつです。使う前に規約とか読むといいですね。

htmlファイルは少し変わります。

5行目からWeb Speech APIの記述でございます。addExentListener関数でresultを指定してますが、どうやら音声入力が終了してからの処理をここで書けるようです。

17行目は勝手なこだわりですが、返答がすぐに返ってくるのが何か気持ち悪かったので何秒か処理を遅らせています。

sample2.phpは音声バイナリ付きおうむ返しです。

15行目からVoiceText Web APIを実行する関数です。17行目のAPIキーは自分で取得する必要がありますのでご注意ください。

ちなみに1行目でbase64_encodeにかけていますが、HTMLソース側の19行目で受け取って型の認識しています。

こちらを参考にさせていただきました〜

準備は整ったので

あとは好きにPHP部分を変えるだけですね!雑談対話系のサービスにつないでみるもいいし、天気を聞いたら天気を返してくれるようにしてもいいかもしれませんね。ブラウザベースなのでやることは限られそうですけれども。

何かつなぎ込めたらまた書きますので(゜-゜)

●この記事を書いた人