はじめに
前回、DOCOMOの雑談対話APIを使って、Hubotとお話できるようにしました。
その後、新しく音声合成APIが公開されましたので、そちらも遊んでみます。
音声合成APIについて
どれか選んで使うわけですが、HOYAサービス製のものが声質にサンタクロースや熊があって意味不明だったので、これを使ってみることにしました。下記のコードやサンプルは全て、HOYAサービスのAPIを利用したものです。
音声合成APIの仕様
上記公式ページに書いてあります。クエリパラメータとしてAPIキーを与えつつ、POSTリクエストを送れば良いです。POSTするデータとして、『声質』と『話してもらう文章』を含める必要があります。レスポンスのbodyには音声合成されたWavがバイナリ形式で返ってくるので、ファイルに書きだすなりそのまま再生するなりすれば良くて簡単。
Rubyのサンプルコード
とりあえずRubyで雑にAPIを叩いてみました。結果はバイナリで返ってくるので、そのままファイルに書き出してあげれば良いです。
require 'net/http' require 'uri' API_KEY = 'YOUR_API_KEY' endpoint = URI.parse('https://api.apigw.smt.docomo.ne.jp/voiceText/v1/textToSpeech') endpoint.query = 'APIKEY=' + API_KEY request_body = { 'text'=>'こんにちは。本日の天気をお知らせします。', 'speaker'=>'takeru' } res = Net::HTTP.post_form(endpoint, request_body) case res when Net::HTTPSuccess file_name = "docomo.wav" File.binwrite(file_name, res.body) `afplay docomo.wav` # Linuxならaplayやmpg123を使う File.delete(file_name) else res.value end
サンプル音声
上記コードを使って合成される音声はこちら。
まとめ
簡単に音声合成ができて楽しいです。しかも、合成された音声も結構品質が良く違和感なく聞くことが出来ます。漢字を送っても大丈夫なので、なにかおもしろいサービスを作る時に重宝しそうです。
なにより、無料で使えるのが良い。