Help us understand the problem. What is going on with this article?

JavaScriptだけで言葉をしゃべらせてみた

More than 3 years have passed since last update.

※ JavaScript for Robotics or Hardware Advent Calendar 2015 12/2用 
http://qiita.com/advent-calendar/2015/jsrobotics

ロボットなどでコミュニケーションを取る場合には、人間との会話が必要になることが多いです。
そのため、これら会話するために機械的に合成音声を出す必要があります。
これらを実現するためには、高度なライブラリやWeb上のサービスでのAPI、はたまた専用の基板などが存在したりします。
ですが、実はこの合成音声のためのものがW3Cで仕様が策定されています。
Web Speech API Specification
https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html
ということは・・・ブラウザで実装されています。
なので、もちろんJavaScriptのみで利用可能です!
現段階ではブラウザのChromeとSafariなどが対応しています。
http://caniuse.com/#feat=speech-synthesis

この二つが対応してるということは・・スマホだとほぼ対応してるという事です。

使い方は簡単!以下のコードだけでOK

speach.js
var ssu = new SpeechSynthesisUtterance();
ssu.text = 'クリスマスにはサンタさん来てくれるかな?';
ssu.lang = 'ja-JP';
speechSynthesis.speak(ssu);

実際に動作してるのはこちら。
http://jsdo.it/wakasamasao/webspeachapi1

このように簡単にブラウザを経由することで合成音声を生成することができます。
そして、このWebSpeachAPIは発音するのにはネットワークが必要無いというのも魅力です。
Application CacheやService Workerなど使えば完全にOfflineでも利用が可能ということです。
実際合成音声のAPIサービスなどは多数あり、合成音声を音声データで送ってきてそれを再生するなどもあったりしますが、こちらはそういう通信さえも必要がありません。
そして、発音も悪くないレベルです。
声のピッチなども変更が可能なので、男性っぽい声と女性っぽい声などで状態を切り分けるなど、ある程度の細かい設定も可能です。
気持ちChromeの日本語は語尾がなまり気味な気はしますが・・・。

で、音声が読み上げられるということは
- Twitterから取得したツィートを音声で読み上げ
- ログなどの解析結果で何かイベントがあると注意のために読み上げる
- WebRTCなどで音声チャットしてるが、僕だけしゃべることができない環境にいるのでテキストをいれると相手には音声で伝えれる
などなどいろいろな事ができるようになります。
私は社内ツールではありますが、ブラウザを立ち上げっぱなしでサーバにポーリングし、何か気になる状態が確認されたらスピーカーから音声でみんなに警告を知らせるなどのものを使っていたりします。
このあたりはネットワークに強いブラウザならではですね。

Web MIDI APIを使えばブラウザ単体でArduino等のハードウェアも連携できますので、完全に独立してしゃべって動くようなロボットも作る事が可能です。

そう、ブラウザなら。

wks
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした