Przeglądaj źródła

更新GPU推理TTS功能

关习习 3 miesięcy temu
rodzic
commit
f337b3cfa4
4 zmienionych plików z 76 dodań i 3 usunięć
  1. 22 0
      chat_model.py
  2. 10 0
      config.py
  3. 6 2
      main.py
  4. 38 1
      tts.py

+ 22 - 0
chat_model.py

@@ -182,6 +182,28 @@ def AI_lora_getpic_prompt(word):
     ans = siliflow_chat(messages).replace(", ", ",")
     return ans.strip().replace("\n", "") + ","
 
+def get_ja_trans(group_id):
+    """
+    返回该群中猫猫说的最后一句话的日语翻译,如果此群中还没说过话则返回失败
+    """
+    # 加载聊天记录
+    folder_path = '群聊记录'
+    file_path = os.path.join(folder_path, str(group_id) + '.csv')
+    df = pd.read_csv(file_path)
+    # 获取最后一条猫猫发送的消息
+    cat_msg = ""
+    for i in range(len(df) - 1, -1, -1):
+        if df.loc[i, 'user_name'] == "猫猫":
+            cat_msg = df.loc[i, 'message']
+    if cat_msg == "":
+        return "失败"
+    # 开始进行翻译
+    prompt = config_get('pro_trans') + cat_msg
+    messages = [{'role': 'user', 'content': prompt}]
+    ans = siliflow_chat(messages)
+    return ans.strip().replace("\n", "")
+
+
 def detect_tool(message):
     """
     新方法,编写中

+ 10 - 0
config.py

@@ -105,6 +105,16 @@ robot_config ={
     # 瑟瑟专用
     "pro_bad_sese": """group of people,multiple characters,two or more figures,out of focus,low quality,bad anatomy,extra_arms,extra_legs,extra_heads""",
 
+    # 翻译专用
+    "pro_trans": """
+    接下来我将给你一段动漫对话中的中文,我需要你将它合乎情景地翻译为日文,并去掉没有意义的场景描述,只给出对话的翻译,比如括号中的动作之类。请你直接给出日文翻译,不要做任何多余地解释和说明:
+    例子:
+    原文:(轻轻眯起眼睛)晚安喵希望大家都有个美好的梦喵。
+    处理后中文:晚安喵希望大家都有个美好的梦喵。
+    翻译后日文:おやすみにゃ~。みんな素敵な夢を見られますようににゃ。
+    
+    中文:
+    """
 }
 
 def config_get(key_word):

+ 6 - 2
main.py

@@ -8,9 +8,9 @@ from wakeonlan import send_magic_packet
 from ai_pic import story_start, story_start_p2p, story_start_p2p_sese
 from msg_send_save import (send_private_message_word,save_group_message,send_group_message_pic,send_group_message_word,
                            send_group_poke,del_group_message,send_group_vioce)
-from chat_model import AI_chat,AI_get_picprompt,AI_lora_getpic_prompt,AI_sendphoto_ornot
+from chat_model import AI_chat,AI_get_picprompt,AI_lora_getpic_prompt,AI_sendphoto_ornot,get_ja_trans
 from special_date import get_week,get_v50,get_holidays
-from tts import get_free_tts
+from tts import get_free_tts,get_gpu_tts
 from config import config_get
 import random
 import os
@@ -269,6 +269,10 @@ def chat():
                 send_group_message_word(group_id,"本群该功能已被禁用!")
             else:
                 change2setu(raw_message, group_id, user_id)
+        elif str(raw_message) == "看不懂中文":
+            ja_text = get_ja_trans(group_id)
+            bs64 = get_gpu_tts(ja_text)
+            send_group_vioce(group_id, "base64://"+bs64)
         elif my_name in raw_message:
             on_my_message(group_id, user_id, user_name, raw_message, message)
             print(

+ 38 - 1
tts.py

@@ -3,6 +3,7 @@ import datetime
 import os
 import requests
 from config import key_get
+import base64
 
 free_map = {
     "诺艾尔": "原神-中文-诺艾尔_ZH",
@@ -51,5 +52,41 @@ def get_free_tts(name, text):
     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)
+    bs64 = base64.b64encode(response.content).decode('utf-8')
+    return bs64
+
+
 if __name__ == "__main__":
-    print(get_free_tts("诺艾尔111", "你好"))
+    print(get_gpu_tts("おやすみにゃ~。みんな素敵な夢を見られますようににゃ。"))