import requests, json, os from string import Template from urllib.parse import quote import time def send_request(endpoint, endpoint_data, text, cha_name, character_emotion, text_language, top_k=6, top_p=0.8, temperature=0.8): urlencoded_text = requests.utils.quote(text) # 使用Template填充变量 endpoint_template = Template(endpoint) final_endpoint = endpoint_template.substitute(chaName=cha_name, speakText=urlencoded_text,textLanguage=text_language, topK=top_k, topP=top_p, temperature=temperature, characterEmotion=character_emotion) endpoint_data_template = Template(endpoint_data) filled_json_str = endpoint_data_template.substitute(chaName=cha_name, speakText=urlencoded_text,textLanguage=text_language, topK=top_k, topP=top_p, temperature=temperature, characterEmotion=character_emotion) # 解析填充后的JSON字符串 request_data = json.loads(filled_json_str) body = request_data["body"] # 发送POST请求 response = requests.post(final_endpoint, json=body) # 检查请求是否成功 if response.status_code == 200: # 生成保存路径 save_path = f"tmp_audio/{cha_name}/{quote(character_emotion)}.wav" # 检查保存路径是否存在 if not os.path.exists(f"tmp_audio/{cha_name}/"): os.makedirs(f"tmp_audio/{cha_name}/") # 保存音频文件到本地 with open(save_path, "wb") as f: f.write(response.content) else: print(f"请求失败,状态码:{response.status_code}") global models_path models_path = r"D:\123pan\Downloads\准备重新封包" def load_info_config(character_name): emotion_options = ["default"] try: with open(f"{models_path}/{character_name}/infer_config.json", "r", encoding="utf-8") as f: config = json.load(f) emotion_list=config.get('emotion_list', None) if emotion_list is not None: emotion_options = [] for emotion, details in emotion_list.items(): emotion_options.append(emotion) except: pass return emotion_options default_endpoint = "http://127.0.0.1:5000/tts" default_endpoint_data = """{ "method": "POST", "body": { "cha_name": "${chaName}", "character_emotion": "${characterEmotion}", "text": "${speakText}", "text_language": "${textLanguage}", "top_k": ${topK}, "top_p": ${topP}, "temperature": ${temperature} } } """ default_text=""" 我可太激动了!跑近一看,居然是一群小动物组成的戏团!牵着火焰小马的猴子、指挥戏团的兔子、双脚站立不停跳舞的大猫… 它们唱唱跳跳地 带我走出了森林,还让我务必收下这个面具!它们说,这个就是他们看到我时的样子!但你看,这面具明明是只狐狸,怎么可能是我呢?""" character_name = "花火" emotion_options = load_info_config(character_name) for emotion in emotion_options: print(emotion) send_request(default_endpoint, default_endpoint_data, default_text, character_name, emotion, "多语种混合") time.sleep(20)