6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-12-16

はじめに

docomoの音声合成APIには、日本語の声のパターンが一通り揃っています。
今回はPythonから喋らせたい内容をAPIに叩いて、帰ってきた結果を音声ファイルとして保存して再生することにしました。このシステムだと何度も同じ内容を喋らせる際に、処理を早く済ませられます。

事前準備

あらかじめAPIキーを取得しておいてください。私はこちらのAPIを利用しましたが、他にもいろいろあります。

コード

他の機能と組み合わせて作ったので、喋らせる部分だけ抜粋しました。
関数は、talk(音声ファイルのタイトル, 喋らせたい文字列)となっています。

talk.py
import os
import requests
import json

#引数で指定した文字列を再生する
def talk(title, message, path="./"):

    if not os.path.isfile(path+title+".wav"): # 既に音声ファイルがあるかどうかを確認する
        url = 'https://api.apigw.smt.docomo.ne.jp/crayon/v1/textToSpeech?APIKEY=2e6d4e6b645342562f6858396b59634d626a6a356d79424a6b43433654386f4558656d76676a7242336344'

        params = {
              "Command":"AP_Synth",
              "SpeakerID":"1",
              "StyleID":"1",
              "SpeechRate":"1.15",
              "AudioFileFormat":"2",
              "TextData":message
            }

        r = requests.post(url, data=json.dumps(params))
        if r.status_code == requests.codes.ok:
            wav = r.content
            with open(path+title+".wav","wb") as fout:
                fout.write(wav)

	# APIでエラーが発生し、音声ファイルが生成されないときのため
    if os.path.isfile(path+title+".wav"): 
        char = "aplay {}{}.wav".format(path, title)
        os.system(char)

try:
    while True:
        
        #中略
        
        #画像認識の結果からデータベースを検索しその内容(説明文)を喋らせる
        talk(result,desc)
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?