PHPで VoiceText WebAPIを利用してテキストを読み上げる

(1/1)
PHP で VoiceText WebAPIを利用し、与えられた日本語テキストを音声で読み上げるプログラムを作成する。

サンプル・プログラムの実行例

PHPで VoiceText WebAPIを利用してテキストを読み上げる

サンプル・プログラム

解説:準備

0033: //Voice Text Web APIキー
0034: //https://cloud.voicetext.jp/webapi/api_keys/new にて登録のこと.
0035: define('API_KEY', '************************');

VoiceText WebAPIを利用するには、API キーが必要だ。https://cloud.voicetext.jp/webapi/api_keys/new から利用登録(無料)し、API キーを入手しておこう。

WebAPI:VoiceText WebAPI

リクエストURL
https://api.voicetext.jp/v1/tts

入力パラメータ
項目名 フィールド名 内  容
サービス名 text string 【必須】読み上げるテキスト。Unicodeで200文字以内。
話者名 speaker string 【必須】
日本語:show(男性)
日本語:haruka(女性)
日本語:hikari(女性)
日本語:takeru(男性)
日本語:santa(サンタ)
日本語:bear(凶暴なクマ)
音声ファイルフォーマット format string 【デフォルト】wav
wav | ogg | aac
感情カテゴリの指定 emotion string happiness 喜 | anger 怒 | sadness 悲
話者 haruka、hikari、takeru、santa、bear にのみ使用できる。
感情レベル emotion_level int 【デフォルト】2
1~4
音の高低 pitch int 【デフォルト】100
50~200
話す速度 speed int 【デフォルト】100
50~400
音量 volume int 【デフォルト】100
50~200

解説:VoiceText WebAPIの呼び出し

0137: /**
0138:  * 「Voice Text Web API」を用いてテキストを音声データに変換
0139:  * @param string $text テキスト
0140:  * @return object 音声データ
0141: */
0142: function text2voice($text) {
0143:     $post = array(
0144:         'text' => $text,
0145:         'speaker' => 'takeru',     //話す人
0146:         'emotion' => 'happiness', //感情
0147:         'emotion_level' => 1,       //感情レベル
0148:         'pitch' => 100,         //声の高低
0149:         'speed' => 100,         //話す速度
0150:         'volume' => 100,         //音量
0151:         'format' => 'wav'          //データ形式
0152:     );
0153: 
0154:     $url = VOICETEXTWEB_URL;
0155:     $ch = curl_init();
0156:     curl_setopt($ch, CURLOPT_URL, VOICETEXTWEB_URL);
0157:     curl_setopt($chCURLOPT_USERPWD, API_KEY);
0158:     curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
0159:     curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
0160:     curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
0161:     curl_setopt($chCURLOPT_SSL_VERIFYHOSTFALSE);
0162:     curl_setopt($ch, CURLOPT_HEADER, FALSE);
0163:     curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
0164:     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
0165:     curl_setopt($ch, CURLOPT_POST, TRUE);
0166:     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
0167: 
0168:     $data = curl_exec($ch);
0169:     curl_close($ch);
0170: 
0171:     return $data;
0172: }

VoiceText WebAPI を呼び出すには cURL 関数群を利用している。

解説:音声出力

0207:     if ($data != NULL) {
0208:         $res = base64_encode($data);
0209:         $res = "<p><audio autoplay controls src=\"data:audio/wav;base64,{$res}\"></audio></p>";
0210:     }

デフォルトでは、画面上に HTML audio control を表示するようにしてある。
ただし、Internet Explorer のみ対応していない。

0254: //直接出力
0255: if (($sour != '') && (!isButton('exec'))) {
0256:     header('Content-type: audio/x-wav');
0257:     print($data);
0258: 
0259: //画面出力
0260: else {
0261:     $HtmlBody = makeCommonBody($sour$data$errmsg, VOICETEXTWEB_URL);
0262:     // 表示処理
0263:     echo $HtmlHeader;
0264:     echo $HtmlBody;
0265:     echo $HtmlFooter;
0266: }

そこで、URL から直接テキストを "VoiceTextWeb.php?sour=%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%92%E8%AA%AD%E3%81%BF%E4%B8%8A%E3%81%92%E3%82%8B" のように指定すると、HTTP ヘッダ "Content-type: audio/x-wav" でデータを出力することができるようにした。

参考サイト

(この項おわり)
header