tts.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import csv
  2. import datetime
  3. import os
  4. import requests
  5. from config import key_get
  6. import base64
  7. free_map = {
  8. "诺艾尔": "原神-中文-诺艾尔_ZH",
  9. "芙宁娜": "原神-中文-芙宁娜_ZH",
  10. "神里绫华": "原神-中文-神里绫华_ZH",
  11. "迪卢克": "原神-中文-迪卢克_ZH",
  12. }
  13. def get_free_tts(name, text):
  14. """
  15. 从免费的试用api获取语音合成效果
  16. """
  17. url = "https://gsv2p.acgnai.top/infer_single"
  18. headers = {
  19. "Authorization": "Bearer " + key_get('tts'),
  20. "Content-Type": "application/json"
  21. }
  22. model = free_map.get(name)
  23. if model is None:
  24. return "该模型暂不支持"
  25. response = requests.post(url, headers=headers, json={
  26. "version": "v4",
  27. "model_name": model,
  28. "prompt_text_lang": "中文",
  29. "emotion": "默认",
  30. "text": text,
  31. "text_lang": "中文",
  32. "top_k": 10,
  33. "top_p": 1,
  34. "temperature": 1,
  35. "text_split_method": "按标点符号切",
  36. "batch_size": 1,
  37. "batch_threshold": 0.75,
  38. "split_bucket": True,
  39. "speed_facter": 1,
  40. "fragment_interval": 0.3,
  41. "media_type": "mp3",
  42. "parallel_infer": True,
  43. "repetition_penalty": 1.35,
  44. "seed": -1,
  45. "sample_steps": 16,
  46. "if_sr": False
  47. })
  48. data = response.json()
  49. if data.get("msg") == "合成成功":
  50. return data.get("audio_url")
  51. else:
  52. return "获取失败"
  53. def get_gpu_tts(text, text_lang="ja",
  54. file_path="/home/gxx/git/GPT-SoVITS-main/vioce/Future Samples_Anime Vocals Vol. 2_Vocal 35.wav",
  55. prompt="お願い、もう少しここにいてもいいかな"):
  56. """
  57. 使用gpu进行v2推理,默认霓虹文
  58. """
  59. url = "http://127.0.0.1:9880/tts"
  60. # url = "https://api.gxx12138.space/vioce/tts"
  61. paload = {
  62. "text": text,
  63. "text_lang": text_lang,
  64. "ref_audio_path": file_path,
  65. "aux_ref_audio_paths": [],
  66. "prompt_text": prompt,
  67. "prompt_lang": text_lang,
  68. "top_k": 5,
  69. "top_p": 1,
  70. "temperature": 1,
  71. "text_split_method": "cut0",
  72. "batch_size": 1,
  73. "batch_threshold": 0.75,
  74. "split_bucket": True,
  75. "speed_factor":1.0,
  76. "streaming_mode": False,
  77. "seed": -1,
  78. "parallel_infer": True,
  79. "repetition_penalty": 1.35,
  80. "sample_steps": 32,
  81. "super_sampling": False
  82. }
  83. # api返回wav文件,转为base64编码返回
  84. response = requests.post(url, json=paload)
  85. if response.status_code != 200:
  86. return "获取失败"
  87. bs64 = base64.b64encode(response.content).decode('utf-8')
  88. return bs64
  89. if __name__ == "__main__":
  90. print(get_gpu_tts("おやすみにゃ~。みんな素敵な夢を見られますようににゃ。"))