pythonで文字列から音声ファイルを作ってみる

2020年12月21日

pythonで文字列から音声ファイルを作ってみる

題名の通りなのですが、「文字列」をpythonに読み込ませて「音声ファイル」を作成してみます。
「open_jtal」とかもあったんですがCentOSだと構築が大変そう且つ声が微妙だったので他を探していたら、「docomo」の「API」がありました。
車輪の発明ありがとうございます。

参考:Pythonでdocomoの音声合成APIを利用する

docomoのAPI取得申請

まずはAPIを取得します。
申請は下からお願いします。
  ・docomo Developer support へようこそ
登録手順は下を参考にしました。
  ・docomo雑談APIのAPIキーを発行する

ただ一つだけ情報が新しくなっていました。
APIの種類が増えたり名前が変更されているみたいですが今回作る機能だけの場合は下の画像のだけチェックを付ければ大丈夫です。

上記の手順通りに進めていくと「マイページ」に「API key」と記載されている項目があります。
この項目の「API key」をコピーしておきましょう

プログラム

あとはコーディングしていきます。
下の[API key]の部分は先ほどコピーした値になります。


url = 'https://api.apigw.smt.docomo.ne.jp/crayon/v1/textToSpeech?APIKEY=[API key]'

コード全体の構成は下の通りです。


import os
import requests
import json

url = 'https://api.apigw.smt.docomo.ne.jp/crayon/v1/textToSpeech?APIKEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

params = {
    "Command":"AP_Synth",
    "SpeakerID":"1",
    "StyleID":"1",
    "SpeechRate":"1.15",
    "AudioFileFormat":"2",
    "TextData":'生まれ変わったら開発がしたい'
}

request = requests.post(url, data=json.dumps(params))
if request.status_code == requests.codes.ok:
    wav = request.content
    with open("test.wav","wb") as file:
        file.write(wav)

実行結果

実行すると「test.awv」と言うファイルが同階層に作成されます。


.
├── test.wav
└── text_to_voice.py

音声ファイルを再生してみましょう。

声質を変えたいときは「params」の値を変更するみたいです。
参考ページはこちら

YouTube

2020年12月21日