import base64 import requests import wave def save_audio_to_file(output_file, audio_data): with wave.open(output_file, 'wb') as wave_file: wave_file.setnchannels(1) # 设置为单声道 wave_file.setsampwidth(2) # 设置样本宽度(以字节为单位,2表示16位) wave_file.setframerate(44100) # 设置帧速率 wave_file.writeframes(audio_data) def text_to_speech(text, output_file): # 请求参数 request_data = { "text": text, "spk_id": 3, # 语速 "speed": 0.87, "volume": 1.0, "sample_rate": 0, "save_path": output_file } # 发送POST请求 response = requests.post("http://192.168.10.138:8090/paddlespeech/tts", json=request_data) # 解析返回的JSON response_json = response.json() if response_json["success"]: # 获取返回的音频base64编码 base64_audio = response_json["result"]["audio"] # 将音频保存到文件 with open(output_file, 'wb') as wave_file: wave_file.write(base64.b64decode(base64_audio)) else: print("TTS request failed:", response_json["message"]["description"]) # 要发送的语句列表 statements = [ "《庆余年》根据猫腻的小说改编,讲述了少年林殊在乱世中成长的故事。他凭借智慧和勇气,卷入复杂的政治斗争,结识志同道合的盟友和强大的对手,经历挑战与考验,最终成为能左右局势的重要人物。剧中不仅有紧张刺激的情节,还探讨了权力、正义与人性的复杂关系,深受观众喜爱。" ] # 保存语音的文件名列表 output_files = [f"E:\\SadTalker\\temp\\wav\\3.wav" for i in range(len(statements))] # 发送每个语句的请求并保存音频文件 for i in range(len(statements)): text_to_speech(statements[i], output_files[i])