import csv import datetime import os import requests from config import key_get import base64 free_map = { "诺艾尔": "原神-中文-诺艾尔_ZH", "芙宁娜": "原神-中文-芙宁娜_ZH", "神里绫华": "原神-中文-神里绫华_ZH", "迪卢克": "原神-中文-迪卢克_ZH", } def get_free_tts(name, text): """ 从免费的试用api获取语音合成效果 """ url = "https://gsv2p.acgnai.top/infer_single" headers = { "Authorization": "Bearer " + key_get('tts'), "Content-Type": "application/json" } model = free_map.get(name) if model is None: return "该模型暂不支持" response = requests.post(url, headers=headers, json={ "version": "v4", "model_name": model, "prompt_text_lang": "中文", "emotion": "默认", "text": text, "text_lang": "中文", "top_k": 10, "top_p": 1, "temperature": 1, "text_split_method": "按标点符号切", "batch_size": 1, "batch_threshold": 0.75, "split_bucket": True, "speed_facter": 1, "fragment_interval": 0.3, "media_type": "mp3", "parallel_infer": True, "repetition_penalty": 1.35, "seed": -1, "sample_steps": 16, "if_sr": False }) data = response.json() if data.get("msg") == "合成成功": return data.get("audio_url") else: return "获取失败" def get_gpu_tts(text, text_lang="ja", file_path="/home/gxx/git/GPT-SoVITS-main/vioce/Future Samples_Anime Vocals Vol. 2_Vocal 35.wav", prompt="お願い、もう少しここにいてもいいかな"): """ 使用gpu进行v2推理,默认霓虹文 """ url = "http://127.0.0.1:9880/tts" # url = "https://api.gxx12138.space/vioce/tts" paload = { "text": text, "text_lang": text_lang, "ref_audio_path": file_path, "aux_ref_audio_paths": [], "prompt_text": prompt, "prompt_lang": text_lang, "top_k": 5, "top_p": 1, "temperature": 1, "text_split_method": "cut0", "batch_size": 1, "batch_threshold": 0.75, "split_bucket": True, "speed_factor":1.0, "streaming_mode": False, "seed": -1, "parallel_infer": True, "repetition_penalty": 1.35, "sample_steps": 32, "super_sampling": False } # api返回wav文件,转为base64编码返回 response = requests.post(url, json=paload) if response.status_code != 200: return "获取失败" bs64 = base64.b64encode(response.content).decode('utf-8') return bs64 if __name__ == "__main__": print(get_gpu_tts("おやすみにゃ~。みんな素敵な夢を見られますようににゃ。"))