node-corevo-tts-cast
node-corevo-tts-cast は、Google Home や Android TV など Google Cast (Chromecast built-in) 対応デバイスに、指定のテキストをしゃべらせます。Google Cast 対応デバイスは自動的に発見することができますが、キーワードや IP アドレスを指定することもできます。音声合成は、corevo API(日本電信電話株式会社)の音声合成 API を使います。
※ 本モジュールは 日本電信電話株式会社 公式の node モジュールではありません。
依存関係
インストール
$ cd ~
$ npm install castv2-client
$ npm install node-dns-sd
$ npm install node-corevo-tts
$ npm install node-corevo-tts-cast
corevo 音声合成 API の API Key の発行
本モジュールは音声合成に NTT が提供する corevo 音声合成 API を使います。corevo 音声合成 API を利用するためには、corevo API ポータルから新規ユーザー登録を行い、ポータルにログイン後、API Key を発行する必要ががあります。
API Key はアプリケーションごとに発行する必要があります。node-corevo-tts を利用するプログラムに割り当てる API Key を事前に発行してください。
API Key 発行申請の際に、プラットフォームを選択する必要がありますが、選択肢は Android, iOS, Hybrid のいずれかです。node-corevo-tts を利用するプログラムの場合は、どれを選択しても構いません。
目次
以下のコードは、ローカルネットワークに存在する Google Cast 対応デバイスを自動的に発見して、そのデバイスに「こんにちわ。」としゃべらせます。
const mCorevoTTSCast = require('node-corevo-tts-cast');
let cast = new mCorevoTTSCast({
apikey: '0123456789abcdefghijklmnopqrstuvwxyz'
});
cast.speech({
text: 'こんにちわ。'
}).then(() =>{
console.log('成功。');
}).catch((error) => {
console.error(error);
});
node-corevo-tts-cast を利用するためには、次の通り、node-corevo-tts-cast モジュールをロードします:
const CorevoTTSCast = require('node-corevo-tts-cast');
上記のコードから、CorevoTTSCast
コンストラクタが得られます。次の通り、その CorevoTTSCast
コンストラクタから CorevoTTSCast
オブジェクトを生成しなければいけません。コンストラクタには、引数として、apikey
に API Key をセットします。
const cast = new CorevoTTSCast({
apikey: '0123456789abcdefghijklmnopqrstuvwxyz'
});
上記コードでは、変数 cast
が CorevoTTSCast
オブジェクトです。CorevoTTSCast
オブジェクトは、以降のセクションで説明するとおり、speech()
メソッドを持っています。
speech()
メソッドは、ローカルネットワークから Google Cast 対応デバイスを探し、corevo 音声合成 API にリクエストを送り、音声合成結果を発見した Google Cast 対応デバイスにキャストします。このメソッドは Promise
オブジェクトを返します。
このメソッドには、次のプロパティを含んだハッシュオブジェクトを与えます:
プロパティ | 型 | 必須 | 説明 |
---|
text | String | 必須 | Google Cast 対応デバイスにしゃべらせたいテキスト。 |
name | String | 任意 | Google Cast 対応デバイスの識別するためのキーワード。 |
address | String | 任意 | Google Cast 対応デバイスの IP アドレス。指定できるアドレスは IPv4 のみです。 |
title | String | 任意 | タイトルを指定すると、対象デバイスが Android TV なら、そのタイトルを画面に表示します。 |
image | String | 任意 | 画像ファイルのパス、または、URL を指定すると、対象デバイスが Android TV なら、その画像を画面に表示します。 |
port | Integer | 任意 | Google Cast 対応デバイスから待ち受ける HTTP ポート番号。指定がなければ 8080 がセットされます。 |
options | Object | 任意 | NTT corevo 音声合成 API のパラメータ。 |
delay | Integer | 任意 | 再生遅延 (ミリ秒)。デフォルト値は 800 ミリ秒。もし再生開始時の音声が途切れるようなら、この値を少し長めに設定してください。 |
名前指定
speech()
メソッドが呼び出されると、本モジュールは Google Cast 対応デバイスを発見しようとします。デバイス発見には mDNS/DNS-SD を使います。もし address
も name
も指定がなければ、最初に発見した Google Cast 対応デバイスが採用されます。
もしローカルネットワーク内に複数の Google Cast 対応デバイスが存在する場合は、name
を使うと良いでしょう。name
を指定すると、mDNS/DNS-SD によって得られたデバイス情報に name
の文字列が含まれていれば、そのデバイスが採用されます。例えば、name
には、デバイスのモデル名を指定します。SONY BRAVIA Android TV モデルなら "BRAVIA"
を、SHARP AQUOS Android TV モデルなら "AQUOS"
を、Google Home なら "Google Home"
を、Chromecast なら "Chromecast"
を指定します。
cast.speech({
text: 'こんにちわ。',
name: 'BRAVIA'
});
Google Home や Chromecast の場合は、スマートフォンの Google Home アプリからデバイスの名前 (Family name) を設定することができますが、その名前を name
に指定することも可能です。
cast.speech({
text: 'こんにちわ。',
name: '仕事部屋のGoogle Home'
});
Windows の場合、mDNS/DNS-SD によるデバイス発見が成功しないことが多いため、IP アドレス指定をご利用されることをお勧めします。
IP アドレス指定
speech()
メソッドはパラメータ address
に IPv4 アドレスが指定されると、mDNS/DNS-SD によるデバイス発見処理を行わず、指定の IP アドレスに直接アクセスします。
cast.speech({
text: 'こんにちわ。',
address: '192.168.10.23'
});
もしデバイスの IP アドレスが事前に分かっている場合は、パフォーマンスの観点からも address
に IP アドレスを指定することをお勧めします。
HTTP ポート番号の変更
speech()
メソッドが呼び出されると、対象の Google Cast 対応デバイスを発見後、NTT corevo 音声合成 API を使って音声データを取得します。そして、Google Cast プロトコルを使って、該当のデバイスに音声データをキャストします。その際、該当のデバイスから本モジュール実行コンピューターに対して、HTTP リクエストが送られてきます。そのため、本モジュールは一時的に HTTP サーバーを起動します。
デフォルトでは HTTP ポート番号は 8080
です。もしご利用のコンピューターにて TCP ポート番号 8080
の受付を許可していない場合は、許可してください。もしこのポート番号を変更したい場合は、speech()
メソッドに port
パラメータを指定します。
cast.speech({
text: 'こんにちわ。',
port: 10080
});
音声合成パラメータ
NTT corevo 音声合成 API は、さまざまな音声合成パラメータをサポートしています。speech()
メソッドの options
にパラメータをセットすると、NTT corevo 音声合成 API にそれらを投げます。
cast.speech({
text: 'こんにちわ。',
options: {
SpeakerID: '000-00-0-004',
SpeechRate: 1.2
}
});
上記コードでは、SpeakerID
に "000-00-0-004"
を指定して、話者を「あおい(お姉さん)」にしています。また、SpeechRate
に 1.2
を指定して、少しだけ話速を上げています。corevo 音声合成 API がサポートするパラメータについては、corevo API ポータルで開示されている PDF ドキュメントを参照してください。
-
v0.0.3 (2018-05-18)
speech()
メソッドのパラメータとして、新たに delay
プロパティを設けた。デフォルト値を 800 ミリ秒にすることで、音声再生時の音声の途切れを回避した。
-
v0.0.2 (2018-01-07)
The MIT License (MIT)
Copyright (c) 2018 Futomi Hatano
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.