feat: 后端封装tts,可以通过配置文件切换openvoice和vits
This commit is contained in:
1 parent
e2f3decfae
commit
ce033dca2b
6 files changed
+49
-62
No files matched your search
@@ -11,6 +11,7 @@ from datetime import datetime
|
||||
from utils.xf_asr_utils import generate_xf_asr_url
|
||||
from config import get_config
|
||||
import numpy as np
|
||||
import struct
|
||||
import uuid
|
||||
import json
|
||||
import asyncio
|
||||
@@ -319,20 +320,11 @@ async def sct_llm_handler(ws,session_id,response_type,llm_info,tts_info,db,redis
|
||||
response_message = {"type": "text", "code":200, "msg": sentence}
|
||||
await ws.send_text(json.dumps(response_message, ensure_ascii=False)) #返回文本信息
|
||||
elif response_type == RESPONSE_AUDIO:
|
||||
if target_se.size == 0:
|
||||
audio,sr = tts._base_tts(text=sentence,
|
||||
noise_scale=tts_info["noise_scale"],
|
||||
noise_scale_w=tts_info["noise_scale_w"],
|
||||
speed=tts_info["speed"])
|
||||
else:
|
||||
audio,sr = tts.synthesize(text=sentence,
|
||||
noise_scale=tts_info["noise_scale"],
|
||||
noise_scale_w=tts_info["noise_scale_w"],
|
||||
speed=tts_info["speed"],
|
||||
target_se=target_se)
|
||||
audio,sr = tts.synthesize(text=sentence,tts_info=tts_info,target_se=target_se)
|
||||
response_message = {"type": "text", "code":200, "msg": sentence}
|
||||
await ws.send_bytes(audio) #返回音频数据
|
||||
await ws.send_text(json.dumps(response_message, ensure_ascii=False)) #返回文本信息
|
||||
response_bytes = json.dumps(response_message, ensure_ascii=False).encode('utf-8')
|
||||
header = struct.pack('!II',len(response_bytes),len(audio))
|
||||
message_bytes = header + response_bytes + audio
|
||||
logger.debug(f"websocket返回: {sentence}")
|
||||
if is_end:
|
||||
logger.debug(f"llm返回结果: {llm_response}")
|
||||
@@ -500,17 +492,7 @@ async def scl_llm_handler(ws,session_id,response_type,llm_info,tts_info,db,redis
|
||||
response_message = {"type": "text", "code":200, "msg": sentence}
|
||||
await ws.send_text(json.dumps(response_message, ensure_ascii=False))
|
||||
elif response_type == RESPONSE_AUDIO:
|
||||
if target_se.size == 0:
|
||||
audio,sr = tts._base_tts(text=sentence,
|
||||
noise_scale=tts_info["noise_scale"],
|
||||
noise_scale_w=tts_info["noise_scale_w"],
|
||||
speed=tts_info["speed"])
|
||||
else:
|
||||
audio,sr = tts.synthesize(text=sentence,
|
||||
noise_scale=tts_info["noise_scale"],
|
||||
noise_scale_w=tts_info["noise_scale_w"],
|
||||
speed=tts_info["speed"],
|
||||
target_se=target_se)
|
||||
audio,sr = tts.synthesize(text=sentence,tts_info=tts_info,target_se=target_se)
|
||||
response_message = {"type": "text", "code":200, "msg": sentence}
|
||||
await ws.send_bytes(audio)
|
||||
await ws.send_text(json.dumps(response_message, ensure_ascii=False))
|
||||
@@ -684,17 +666,7 @@ async def voice_call_llm_handler(ws,session_id,llm_info,tts_info,db,redis,asr_re
|
||||
llm_response += chunk_data
|
||||
sentences,current_sentence,is_first = split_string_with_punctuation(current_sentence,chunk_data,is_first,is_end)
|
||||
for sentence in sentences:
|
||||
if target_se.size == 0:
|
||||
audio,sr = tts._base_tts(text=sentence,
|
||||
noise_scale=tts_info["noise_scale"],
|
||||
noise_scale_w=tts_info["noise_scale_w"],
|
||||
speed=tts_info["speed"])
|
||||
else:
|
||||
audio,sr = tts.synthesize(text=sentence,
|
||||
noise_scale=tts_info["noise_scale"],
|
||||
noise_scale_w=tts_info["noise_scale_w"],
|
||||
speed=tts_info["speed"],
|
||||
target_se=target_se)
|
||||
audio,sr = tts.synthesize(text=sentence,tts_info=tts_info,target_se=target_se)
|
||||
text_response = {"type": "llm_text", "code": 200, "msg": sentence}
|
||||
await ws.send_bytes(audio) #返回音频二进制流数据
|
||||
await ws.send_text(json.dumps(text_response, ensure_ascii=False)) #返回文本数据
|
||||
|
||||
Reference in new issue
Block a user