概要
高品質音声合成エンジン AITalkの、Web API サービスである AITalk® WebAPI を使って、CSVファイルの内容を読み上げる音声ファイルを作成してみます。
用意するもの
- AITalk® WebAPIを利用するためのアカウント
- DataSpider Servista (以下 DataSpider )
※DataSpiderは、CSVデータの読み取りや Web API の送受信に使います。
AITalk® WebAPIとは
HTTP(S)で音声にしたいテキストをパラメータに指定してリクエストを送信すると、テキストを読み上げた音声のファイルをレスポンスとして返してくれます。⇒WebAPI仕様
より詳細な WebAPI 仕様書 も用意されているので、今回はこれを元にAPIを試してみます。
AITalk® WebAPI × DataSpider
今回はDataSpiderを使って、ファイルの読み取りと組み合わせた処理を作成してみます。
処理の内容は下記のような流れです。
- CSVファイルからデータを読み取り、
- 音声にしたいテキストに変換して、
- AITalk® WebAPIに送信、音声ファイルを受け取る
それでは、そんな処理をDataSpiderのスクリプトとして、作成してみましょう。
DataSpiderのスクリプト作成
CSVアダプタ
まずは 任意の場所にあるCSVファイルを読み取る処理を作成します。
今回はテストデータとして、近所の中華料理屋のメニューと値段をCSVファイルにしたものを用意しました。下記のような内容です。
- 味噌ラーメン 650円
- ニラソバ 700円
- タンメン 600円
- ・・・
- ・・・
- ・・・
- DataSpider を起動し、デザイナを開きます。
- 任意のプロジェクトとスクリプトを作成します。
- 画面の右側にある [ツールパレット] の [ファイル] カテゴリから、CSVアダプタの CSV読み取り をドラッグ&ドロップして、スクリプトキャンバスに配置します。
- [必須設定] の [ファイル] には読み取るCSVファイルのパスを指定します。
- [必須設定] の [列一覧] には、CSVの列を定義します。[列名] はそれぞれ menu と price としました。
CSVデータを音声化するテキストに編集
次にCSVデータを音声化するテキストとしてまとめます。
まずは、マッパーを使って、CSVアダプタから読み取ったメニューと値段を文字列結合します。そして、読み上げるときに、それぞれのメニューの間には "間" があると自然な響きとなるので、メニューと値段を文字列結合する度に、句読点も付加します。その後、DataSpiderの変数であるスクリプト変数に文字列を蓄積していきます。
(編集イメージ)
味噌ラーメン 650円 CSVファイルから読み取りしたレコード
↓
味噌ラーメン650円、 CSVファイルから読み取りしたレコードに句読点 "、" を結合
↓
"味噌ラーメン650円、" スクリプト変数の ”AITalk_Text” に追加
- 画面の右側にある [ツールパレット] の [変換] カテゴリから、[基本] の マッピング をドラッグ&ドロップして、スクリプトキャンバスに配置します。
- マッピング アイコンをダブルクリックして、マッピングキャンバスを開きます。
- 画面の右側にある [ツールパレット] の [文字列] カテゴリから、[演算] の 連結 をドラッグ&ドロップして、マッピングキャンバスに配置します。あとは結合したい項目をつなぐだけです。 句読点 "、" は [演算] の 単一行文字列定数
で表現できます。マッピングの全体像は下記を参考にしてください。
マッピングキャンバス
この処理をレコード数分繰り返せば、メニューを読み上げるテキストが作成できます。スクリプトキャンバス上でマッパーを 繰り返し(データ件数) で挟んで、CSVファイルのレコード数分だけ処理を繰り返すようにします。
- 画面の右側にある [ツールパレット] の [基本] カテゴリから、[フロー] の 繰り返し(データ件数) をドラッグ&ドロップして、スクリプトキャンバスに配置します。
RESTアダプタ
AITalk® WebAPI の送受信を行う処理から作成してみます。
WebAPI は Curlコマンド などでも送受信可能ですが、それよりもDataSpiderのRESTアダプタを使用するほうが簡単です。
- 画面の右側にある [ツールパレット] の [ネットワーク] カテゴリから、RESTアダプタの GET実行 をドラッグ&ドロップして、スクリプトキャンバスに配置します。
- 設定ダイアログが開くので、AITalk® WebAPIの WebAPI 仕様書 を参考にHTTPリクエストの設定をします。
[必須設定]
-
[必須設定] の [接続先] プルダウンから追加を指定すると、REST接続設定 の画面が表示されるので、URLに http://webapi.aitalk.jp/ と入力します。REST接続設定 の名前 は「AITalk接続設定」としました。
-
[必須設定] の [パス] にはwebapiのパス webapi/v2/ttsget.php と入力します。
-
[必須設定] の [クエリパラメータ] には、WebAPI 仕様書 の 2-1-1. リクエストパラメータ を参照して、パラメータを追加してみます。最低限必要なパラメータは、下記4つです。
-
username
-
password
-
text
-
speaker_name
username と password は利用申し込みを行った際に、発行されたものを使います。
text は音声にしたいテキストです。今回はCSVから作成したデータをバインディングしたいので、スクリプト変数 というDataSpiderの変数を指定しています。
speaker_name は WebAPI 仕様書 の 3-1. 標準話者 を参考に音声のペルソナを指定します。今回はやさしい口調の子供を模した ゆうと君 を指定してみました。話者の雰囲気のバリエーションが広いのも AITalk の魅力です。
[レスポンス設定]
- APIは合成した音声データをファイルとして返却するので、[レスポンス設定] の [データ出力先] は ファイル を指定します。
- 保存する音声データは /data/voice.wav とし、[レスポンス設定] の [ファイルパス] に入力します。
これで、APIを送信する準備は整いました。
スクリプト完成
メニューと値段を記載したCSVファイル /data/menu.csv を置き、スクリプトを実行すると、CSVの内容を読み上げる音声ファイル /data/voice.wav が作成されるはずです。
Windows Media PlayerなどWAVEファイルに対応したソフトで実行すれば、作成された音声を確認できます。
まとめ
- AITalk® WebAPI を使うと、簡単にテキストを高品質音声に変換できます。声の雰囲気の違う話者をパラメータとして設定できます。他にも抑揚などのパラメータ指定が可能です。詳しくは WebAPI 仕様書 を参照してみてください。
- DataSpider を使うと、ファイルの読み取り処理を簡単に作成できます。
- DataSpider を使うと、Web APIの送受信処理を簡単に作成できます。