Q&A
実現したいこと
unity上でcoeiroinkのローカルapiを使えるようにしたい
unityのunitywebrequestのPOST通信でform送信をしたいがエラーが出て動かないのでエラーを解消したい
前提
python上では実現できていて、pythonで書かれたものをC#に書き直して実現したい.
coeiroinkとは合成音声を作るものであり、エラー箇所が出るところの仕様としては
POST方式でパラメータ(form)をおくるとクリエが作成される。
送るformは{'text' :my_text,'speaker': speaker_id,'core_version':'0.0.0'}
このクリエを別のPOST送信で送信すると合成音声が返ってくるがここは質問に関係ない箇所なので省略している。
発生している問題・エラーメッセージ
HTTP/1.1 422 Unprocessable Entity
該当のソースコード
実現できているpython上での記述
python
1import requests 2import json 3 4url = 'http://localhost:50031/' 5query_p = 'audio_query' 6req_url = url + query_p 7# enable_interrogative_upspeak = '' 8 9v_name = "voice.wav" 10v_dir = "voices/" 11voice_pass = v_dir + v_name 12 13# APIに送信する情報 14def Params(message): 15 speaker_id = 0 16 #speaker_idには(重要)しゃべらせたいボイスのstyleIdを書いてください(上記はつくよみちゃんれいせいです) 17 my_text = message 18 #これが必要なformの情報 19 q_params = {'text' :my_text,'speaker': speaker_id,'core_version':'0.0.0'} 20 return q_params 21 22 23#POSTリクエストを送る(クエリを作成) 24def Post_RequestMQ(q_params): 25 response = requests.post(req_url, params = q_params) 26 res_data = response.json() 27# print(response.status_code) 28 29def Create_Voice(message): 30 q_params = Params(message) 31 my_query = Post_RequestMQ(q_params) 32 33Create_Voice("aaa")
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using System.Text; 5using UnityEditor; 6using UnityEngine.Networking; 7 8public class Voice : MonoBehaviour 9{ 10 11 private string url = "http://localhost:50031/audio_query"; 12 13 } 14 15 public IEnumerator Post_RequestMQ() 16 { 17 18 WWWForm form = new WWWForm(); 19 form.AddField("text","今日もお疲れ"); 20 form.AddField("speaker", 0); 21 form.AddField("core_version", "0.0.0"); 22 23 using (UnityWebRequest MQrequest = UnityWebRequest.Post(url, form)) 24 { 25 yield return MQrequest.SendWebRequest(); 26 27 if (MQrequest.result != UnityWebRequest.Result.Success) 28 { 29 Debug.Log(MQrequest.error); 30 } 31 else 32 { 33 Debug.Log("Form upload complete!"); 34 } 35 MQrequest.Dispose(); 36 } 37 } 38 39 public void CreateVoice(string message) 40 { 41 StartCoroutine(Post_RequestMQ()); 42 } 43}
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。