白菜工厂1145号员工
Automated commit from batch script
a17d0bc
raw
history blame contribute delete
No virus
3.19 kB
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)