メインコンテンツへスキップ
見出し画像

【AI音声合成】COEIROINKのローカルAPIをPythonから呼び出して音声合成する

    【Python】【Requests】POSTやGETでJSONやDATAを送受信する方法

    https://max999blog.com/python-requests-get-post-json-data

    [RESTful API]パスパラメータ、クエリパラメータ、リクエストボディの違いと設計
    https://qiita.com/Shokorep/items/b7697a146cbb1c3e9f0b

    上記のリンクをだいぶ参考にさせていただきました!Restful APIとかの知識も全然ないままやったので間違っている個所もあるかもしれませんが、とりあえず動けば良い人向け。

    細かいボイスの設定などはご自身で加工をお願いします!

    ローカルapiを立ち上げる前提として、COEIROINKをローカルで起動しておく必要があります。

    ステップは下記の2つ必要です。

    1.音声クエリを作成

    下記の Post_RequestMQ関数で作成します

    2.1で作成したクエリを使って音声を作成し、wavファイルとして保存する。

    下記のPost_RequestMA関数にて作成します。

    おまけとして、JSONのパラメータ入力に必要なcore_versionをGetできるような関数を作ります。

    それが下記の Get_Request関数です。

    実行した後にステータスコードをPrintして成功したかどうかを確認しています。

    なおステータスコードの内容、Local APIの機能についてはhttp://localhost:50031/docsに書いてありますのでそちらをご参照いただいてコードを加工いただくとGETできるものが増えると思います。

    コードはこちら!

    import requests
    import json
    
    url = 'http://localhost:50031/'
    query_p = 'audio_query'
    req_url = url + query_p
    enable_interrogative_upspeak = ''
    
    
    v_name = "test.wav"
    v_dir = "C:\\Users\\ユーザー名\\Documents\\"
    voice_pass = v_dir + v_name
    
    # APIに送信する情報
    speaker_id = 0 
    #speaker_idには(重要)しゃべらせたいボイスのstyleIdを書いてください(上記はつくよみちゃんれいせいです) 
    my_text = 'これはテストです。'
    
    headers = {'speaker':1}
    q_params = {'text' :my_text,'speaker' :speaker_id, 'core_version':'0.0.0'}
    a_params = {'speaker' :speaker_id, 'core_version':'0.0.0','enable_interrogative_upspeak' : 'true'}
    
    
    #print(json.dumps(json_data))
    #GETリクエストを送る
    def Get_Request():
       response = requests.get(
       'http://localhost:50031/core_versions',
       )
       res_data = response.json()
       print(res_data)
       print(response.status_code)
       
    
    #POSTリクエストを送る(クエリを作成)
    def Post_RequestMQ():
       response = requests.post(req_url, params = q_params)
       res_data = response.json()
       #print(res_data)
       print(response.status_code)
       return res_data
     
    
    #POSTリクエストを送る(音声合成し、返ってきた音声ファイルを保存)
    def Post_RequestMA():
       response = requests.post('http://localhost:50031/synthesis',params = a_params,data= json.dumps(my_query))
       with open(voice_pass, 'wb') as saved_voice:
           saved_voice.write(response.content)
       print(response.status_code)
    
    my_query = Post_RequestMQ()
    #print(my_query)
    Post_RequestMA()


     
     

    山田

     
     
    本、映画、ゲームと時々技術について書いています。AIなどの新技術、謎解きや体験型施設も大好きです。

    あなたへのおすすめ