前回、お手軽にパッケージインストールで音声合成させて、Twitterの読み上げをさせていたが、組み込みパッケージ版だとやっぱりイントネーションが少し不自然で聞き取りにくい。今後音声認識もさせたいと思っており、DoCoMoのAPIを使ってみることに。しかし、、DoCoMoAPIの音声合成はPCMだそうで、お試しでどんな声になるのかもちと分からず。技術はHOYAの合成エンジンを使ってるとのことで、HOYAのサイトでサンプルを聴いてみた(URLはご参考に記載)。さすがこれは一級品だと思い、頑張ってAPIの鍵をもらうことにした。
O-Authの設定とかよく分からず適当に普段のメールアドレスを登録、アプリ名も適当に設定。APIKEYを貰えたので試してみる。以下はHOYA版音声合成エンジンを使う場合の例
#!/usr/bin/python import urllib2 import urllib DOCOMO_API_URL = "https://api.apigw.smt.docomo.ne.jp/voiceText/v1/textToSpeech" API_KEY="xxxxxxxxxxxxxxxxxxxxxxx" # set your API KEY headers ={ 'Content-Type' : 'application/x-www-form-urlencoded', } data = { 'text':'hello', 'speaker':'haruka', } try : values = urllib.urlencode(data) url=DOCOMO_API_URL+"?APIKEY="+API_KEY req = urllib2.Request(url, values ,headers ) res = urllib2.urlopen(req) header = res.info() data = res.read() code = res.getcode() except Exception as e: print e exit() print code print header if code == 200: f=open('syth.wav','w') f.write(data) f.close() else: print "Response is not 200"
英文字でhelloをharukaの声で合成させた。正常にWAV形式のデータが取得できた。
応答文字列は以下。 レスポンスコード:200(OK)の場合のみWAVファイルを作成
Accept-Ranges: bytes asyncServiceInvoke: false Content-Type: audio/wave;charset=UTF-8 Date: Sat, 27 Aug 2016 09:32:10 GMT Last-Modified: Sat, 27 Aug 2016 09:32:11 GMT X-Revision: 0d8bc2728c40a431b9d44d7074e819f11eba9fbb Content-Length: 45364 Connection: Close
今後の取り組みは、、音声合成APIを呼び出すNode-REDの部品を作って、DoCoMoAPI(HOYAエンジン版)で喋らせる事。
ただ、、商用利用でない個人がAPIを使う場合、利用制約(API呼び出し回数等か)があるようで、ベラベラ喋っているうちにだんまりになる可能性もあり。
■追記
合成された音声をaudacityで読み込んでみた。
■ご参考URL
DoCoMo Developer Support API/ツール
https://dev.smt.docomo.ne.jp/?p=docs.api.index
HOYA版音声合成仕様説明
https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=text_to_speech&p_name=api_hoya#tag01
音声合成エンジンサンプル(HOYAのVoiceText)
https://voicetext.jp/samplevoice/