Spaces:
Paused
Paused
| 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) | |