Spaces:
Runtime error
Runtime error
| import os | |
| import requests | |
| tts_service_host = os.environ.get("TTS_SERVICE_HOST", "localhost") | |
| tts_service_port = os.environ.get("TTS_SERVICE_PORT", 8001) | |
| # API endpoint URLs | |
| CHANGE_MODEL_URL = f"http://{tts_service_host}:{tts_service_port}/tts_change_model/" | |
| TTS_RESPONSE_URL = f"http://{tts_service_host}:{tts_service_port}/tts_response/" | |
| def change_model(model_name): | |
| """请求更换TTS模型""" | |
| response = requests.post(CHANGE_MODEL_URL, params={"model_name": model_name}) | |
| if response.status_code == 200: | |
| print(f"模型更换成功: {response.json()}") | |
| else: | |
| print(f"模型更换失败: {response.status_code}, {response.text}") | |
| def request_tts(payload, ref_audio_path=None, output_wav_path='output_tts.wav'): | |
| """请求TTS生成音频,支持上传文件""" | |
| files = {} | |
| if ref_audio_path: | |
| files['ref_audio'] = open(ref_audio_path, 'rb') | |
| try: | |
| response = requests.post(TTS_RESPONSE_URL, data=payload, files=files) | |
| response.raise_for_status() # Raise an exception for HTTP errors | |
| with open(output_wav_path, 'wb') as wav_file: | |
| wav_file.write(response.content) | |
| print(f"TTS生成成功, 音频保存为: {output_wav_path}") | |
| except requests.RequestException as e: | |
| print(f"TTS生成失败: {e}") | |
| if __name__ == "__main__": | |
| result_dir = "outputs" | |
| os.makedirs(result_dir, exist_ok=True) | |
| # 要测试的模型列表 | |
| models = [ | |
| "EdgeTTS", | |
| "PaddleTTS", | |
| ] | |
| # 循环更换模型并生成TTS | |
| for model_name in models: | |
| print(f"切换到模型: {model_name}") | |
| change_model(model_name) | |
| # 请求TTS生成音频 | |
| text = "你好,我是Linly-Talker,很高兴认识大家" | |
| payload = { | |
| "text": text, | |
| "tts_method": model_name, | |
| "save_path": f"output_{model_name}.wav" | |
| } | |
| output_wav_path = os.path.join(result_dir, f"output_{model_name}.wav") | |
| request_tts(payload, output_wav_path=output_wav_path) | |
| print("\n" + "-" * 50 + "\n") | |
| # 测试 GPT-SoVITS | |
| model_name = "GPT-SoVITS克隆声音" | |
| print(f"切换到模型: {model_name}") | |
| change_model(model_name) | |
| # 请求TTS生成音频 | |
| payload = { | |
| "text": "你好,我是Linly-Talker,很高兴认识大家", | |
| "tts_method": model_name, | |
| "prompt_text": "你好,我是Linly-Talker,我是克隆生成的", | |
| "ref_text": "你好,我是Linly-Talker。", | |
| "prompt_language": "中文", | |
| "ref_language": "中文", | |
| "save_path": f"output_{model_name}.wav" | |
| } | |
| ref_audio_path = os.path.join(result_dir, "output_EdgeTTS.wav") | |
| output_wav_path = os.path.join(result_dir, "output_GPT_SoVITS.wav") | |
| request_tts(payload, ref_audio_path=ref_audio_path, output_wav_path=output_wav_path) | |
| print("\n" + "-" * 50 + "\n") | |
| # 测试 CosyVoice | |
| cosyvoice_models = [ | |
| "CosyVoice-SFT模式", | |
| "CosyVoice-克隆翻译模式" | |
| ] | |
| for cosy_model in cosyvoice_models: | |
| print(f"切换到模型: {cosy_model}") | |
| change_model(cosy_model) | |
| # 请求TTS生成音频 | |
| payload = { | |
| "text": "你们好,今天天气很好,你们都要天天开心哦", | |
| "tts_method": cosy_model, | |
| "cosyvoice_mode": "预训练音色" if "SFT模式" in cosy_model else "3s极速复刻", | |
| "ref_text": "你好,我是Linly-Talker,很高兴认识大家", | |
| } | |
| ref_audio_path = os.path.join(result_dir, "output_EdgeTTS.wav") if "克隆翻译模式" in cosy_model else None | |
| output_wav_path = os.path.join(result_dir, f"output_{cosy_model}.wav") | |
| request_tts(payload, ref_audio_path=ref_audio_path, output_wav_path=output_wav_path) | |
| print("\n" + "-" * 50 + "\n") |