こんにちは。前回は IBM Watson Visual Recognition 機能で画像認識してみましょう という記事を書きました。そこでは今現在8つの日本語版APIがあるみたいに書きました。今回はそのうちの文章を音声に変換する機能を使ってみたいと思います。
似たものにVoiceText Web APIがありますが、よかったら過去記事を読んでみてくださいませ。
Text to Speech
概要を引用します。
Watson Text to Speechは、REST APIを使用してテキスト入力から音声を合成します。ブラジル・ポルトガル語、英語、フランス語、ドイツ語、イタリア語、日本語、スペイン語の各言語で男女の音声が複数利用できます。リアルタイムで合成された音声は、僅かな遅延でストリーミングされます。開発者は、特定の単語の発音を制御できます。
(引用元: https://www.ibm.com/smarterplanet/jp/ja/ibmwatson/developercloud/text-to-speech.html)
純粋に日本語の音声を聞いてみたいですね。
この機能の価格は標準サービス利用時で下記です。
毎月最初の100万文字まで無料です。追加の文字は、1,000文字当たり$0.02です。サポートされるすべての言語で利用可能な音声をすべて利用できます。
(引用元: https://www.ibm.com/smarterplanet/jp/ja/ibmwatson/developercloud/text-to-speech.html)
Visual Recognitionの時と同様、IBM Bluemixに登録してサービスを作成すると、サービス資格情報としてusernameとpasswordが発行されます。これはText to SpeechのURLのベーシック認証を突破するために必要なものみたいです。
テキストからwavファイルを生成する簡単なPHPプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$text = 'Watsonで作られた音声です。' $unique = 's30Un1La' $api_response = watson_text_to_speech($text, $unique); function watson_text_to_speech($text, $unique) { $user_name = '**********'; //IBM Bluemixで取得 $password = '**********'; //IBM Bluemixで取得 $api_url = 'https://stream.watsonplatform.net/text-to-speech/api/v1/synthesize?voice=ja-JP_EmiVoice'; $postdata = array( 'accept' => 'audio/wav', 'text' => $text ); $ch = curl_init($api_url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $user_name.':'.$password); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Accept: audio/wav')); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postdata)); $voice = curl_exec($ch); curl_close($ch); return (bool)file_put_contents('./'.$unique.'.wav', $voice); } |
8行目はAPIのURLですが(何故かPOSTできなかったので)voiceパラメータを一番後ろに付けています。
声質は日本語を話せるja-JP_EmiVoiceを指定しています。えみちゃん。
ファイルを保存するディレクトリのパーミッションに注意しましょう。
音関係の記事も書けたらいいと思います(゜-゜)