LoginSignup
0

More than 5 years have passed since last update.

大晦日に一人だったから相棒作った

Last updated at Posted at 2018-12-31

大晦日ですね。家族が外出してしまっていて、時間ができたので寂しいので相棒を作ってみました。夜子供が帰ってきたらこれで遊ぶつもり。

どんなものか

スクリーンショット 2018-12-31 18.23.48.png

Botと音声で会話できるシステムです。ちょっと前だといわゆる人工無脳というボットですね。それを音声を介して行えるようにしました。

最初はGoogle Home miniで実現できるかなと思ったのですが、どうもできなそうだったので調べてみるとブラウザで実現できそうだったのでやってみました。

使用技術

Talk API

Botの機能は作るもの辛いので、A3RTのWeb APIを使わせてもらってます。下記のように呼び出せば簡単に使える。下記は公式ドキュメントからの引用です。

curl -X POST https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk \
-F "apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \
-F "query=おはよう"

レスポンス

{
    status: 0,
    message: "ok",
    results: [{
        perplexity: 2.3688167429546714,
        reply: "おはようございます"
    }],
}

Speech Recognition API

ブラウザの機能でマイクを通じて入力された音声をテキストに変換してくれるAPI。2018/12/31現在で実装されているのはChromeとOperaのようですね。
下記のように使います。

const rec = new webkitSpeechRecognition();
rec.continuous = true;
rec.interimResults = false;
rec.lang = 'ja-JP';
rec.onresult = (e) => {
  for (let i = e.resultIndex; i < e.results.length; ++i) {
    if (e.results[i].isFinal) {
      const str = e.results[i][0].transcript;
      console.log(str);
    }
  }
}
// ユーザからのイベントハンドラでstart
rec.start();

Amazon Polly

Amazonの音声読み上げサービス。ブラウザにもWeb Speech APIというものがありますが、あまり自然に聞こえなかったのでAmazonのものを使うことにしました。

ソースコード

時間切れになってしまったので、あとはソースコードを載せておきます。無駄にSocket.ioを使っているのは、もう少しなにかするかなと思ってのことです。とりあえず、下記に公開しておきます。
https://github.com/jirokun/chat_bot_for_children_2018

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0