目次
サンプル・プログラムの実行例
サンプル・プログラム
| VoiceTextWeb.php | サンプル・プログラム本体 |
| .pahooEnv | クラウドサービスを利用するためのアカウント情報などを記入する .env ファイル。 使い方は「各種クラウド連携サービス(WebAPI)の登録方法」を参照。include_path が通ったディレクトリに配置すること。 |
| pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 1.2.0 | 2026/01/11 | PHP8.5対応:curl_closeを使わない |
| 1.1 | 2022/01/30 | PHP8対応,リファラ・チェック改良 |
| 1.0 | 2016/01/29 | 初版 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.0.1 | 2025/08/11 | getParam() bug-fix |
| 2.0.0 | 2025/08/11 | pahooLoadEnv() 追加 |
| 1.9.0 | 2025/07/26 | getParam() 引数に$trim追加 |
| 1.8.1 | 2025/03/15 | validRegexPattern() debug |
| 1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
準備:PHP の https対応
Windowsでは、"php.ini" の下記の行を有効化する。
extension=php_openssl.dllLinuxでは --with-openssl=/usr オプションを付けて再ビルドする。→OpenSSLインストール手順
これで準備は完了だ。
準備:pahooInputData 関数群
また、各種クラウドサービスに登録したときに取得するアカウント情報、アプリケーションパスワードなどを登録した .pahooEnv ファイルから読み込む関数 pahooLoadEnv を備えている。こちらについては、「各種クラウド連携サービス(WebAPI)の登録方法」をご覧いただきたい。
準備:初期値など
VoiceTextWeb.php
53: // 初期値(START) =============================================================
54:
55: // 表示幅(ピクセル)
56: define('WIDTH', 600);
57:
58: // Voice Text Web API
59: define('VOICETEXTWEB_URL', 'https://api.voicetext.jp/v1/tts');
60:
61: // -- 以下のデータは .env ファイルに記述可能
62: // Voice Text Web APIキー
63: // https://cloud.voicetext.jp/webapi/api_keys/new にて登録のこと.
64: if (isset($_ENV['PAHOO_VOICE_TEXT_APIKEY'])) {
65: define('VOICE_TEXT_APIKEY', $_ENV['PAHOO_VOICE_TEXT_APIKEY']);
66: } else {
67: define('VOICE_TEXT_APIKEY', '');
68: }
69:
70: // 入力テキスト(初期値)
71: define('DEF_SOUR', 'PHPで VoiceText WebAPIを利用し、与えられた日本語テキストを音声で読み上げるプログラムを作成する。');
72:
73: // 初期値(END) ===============================================================
WebAPI:VoiceText WebAPI
| リクエストURL |
|---|
| https://api.voicetext.jp/v1/tts |
| フィールド名 | 要否 | 内 容 |
|---|---|---|
| text | 必須 | 読み上げるテキスト。Unicodeで200文字以内。 |
| speaker | 必須 | 話者名:日本語:show(男性) 日本語:haruka(女性) 日本語:hikari(女性) 日本語:takeru(男性) 日本語:santa(サンタ) 日本語:bear(凶暴なクマ) |
| format | 任意 | 音声ファイルフォーマット:wav | ogg | aac wav(デフォルト) |
| emotion | 任意 | 感情カテゴリの指定:happiness 喜 | anger 怒 | sadness 悲 話者 haruka、hikari、takeru、santa、bear にのみ使用できる。 |
| emotion_level | 任意 | 感情レベル:1~4 2(デフォルト)> |
| pitch | 任意 | 音の高低:50~200 100(デフォルト) |
| pitch | 任意 | 音の高低:50~200 100(デフォルト) |
| speed | 任意 | 話す速度:50~400 100(デフォルト) |
| >volume | 任意 | 音量:50~200 100(デフォルト) |
解説:VoiceText WebAPIの呼び出し
VoiceTextWeb.php
159: /**
160: * 「Voice Text Web API」を用いてテキストを音声データに変換
161: * @param string $text テキスト
162: * @return object 音声データ
163: */
164: function text2voice($text) {
165: $post = array(
166: 'text' => $text,
167: 'speaker' => 'takeru', // 話す人
168: 'emotion' => 'happiness', // 感情
169: 'emotion_level' => 1, // 感情レベル
170: 'pitch' => 100, // 声の高低
171: 'speed' => 100, // 話す速度
172: 'volume' => 100, // 音量
173: 'format' => 'wav' // データ形式
174: );
175:
176: $url = VOICETEXTWEB_URL;
177: $ch = curl_init();
178: curl_setopt($ch, CURLOPT_URL, VOICETEXTWEB_URL);
179: curl_setopt($ch, CURLOPT_USERPWD, VOICE_TEXT_APIKEY);
180: curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
181: curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
182: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
183: curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
184: curl_setopt($ch, CURLOPT_HEADER, FALSE);
185: curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
186: curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
187: curl_setopt($ch, CURLOPT_POST, TRUE);
188: curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
189:
190: $data = curl_exec($ch);
191: // PHP8.5:非推奨関数
192: if (PHP_VERSION_ID < 80500) {
193: curl_close($ch);
194: }
195:
196: return $data;
197: }
解説:音声出力
VoiceTextWeb.php
237: if ($data != NULL) {
238: $res = base64_encode($data);
239: $res = "<p><audio autoplay controls src=\"data:audio/wav;base64,{$res}\"></audio></p>";
240: }
ただし、Internet Explorer のみ対応していない。
VoiceTextWeb.php
287: // 直接出力
288: if (($sour != '') && (getParam('mode', FALSE, -1) == 0)) {
289: header('Content-type: audio/x-wav');
290: print($data);
291:
292: // 画面出力
293: } else {
294: // 表示HTML作成
295: $HtmlBody = makeCommonBody($sour, $data, $errmsg, VOICETEXTWEB_URL);
296: // 表示処理
297: echo $HtmlHeader;
298: echo $HtmlBody;
299: echo $HtmlFooter;
300: }

(2026年1月11日)PHP8.5対応:curl_closeを使わない
(2025年9月19日).pahooEnv導入