51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
from interfaces.asr import ASR
|
|
from interfaces.llm import LLM
|
|
from interfaces.tts import TTS
|
|
from services.registry import get_service
|
|
from config import settings
|
|
from utils.logger import session_logger
|
|
from services.config_manager import config_manager
|
|
from implementations.aliyun_asr import AliyunASR
|
|
from implementations.volcano_llm import VolcanoLLM
|
|
from implementations.minimax_tts import MiniMaxTTS
|
|
|
|
async def get_asr(selected_role: dict = None) -> ASR:
|
|
"""获取ASR服务实例 - 固定使用阿里云"""
|
|
session_logger.info(
|
|
"system",
|
|
"factory",
|
|
f"ASR提供商: Aliyun (固定)"
|
|
)
|
|
return AliyunASR(selected_role=selected_role)
|
|
|
|
async def get_llm(selected_role: dict = None) -> LLM:
|
|
"""获取LLM服务实例 - 固定使用火山引擎"""
|
|
role_selected_language = selected_role.get('_selected_language') if selected_role else None
|
|
session_logger.info(
|
|
"system",
|
|
"factory",
|
|
f"LLM提供商: Volcano (固定)" +
|
|
(f", 语言: {role_selected_language}" if role_selected_language else "")
|
|
)
|
|
instance = VolcanoLLM(selected_role=selected_role)
|
|
if selected_role and "role_key" not in selected_role:
|
|
selected_role["role_key"] = "Volcano" # 使用provider作为默认值
|
|
if hasattr(instance, "current_language"):
|
|
instance.current_language = role_selected_language
|
|
return instance
|
|
|
|
async def get_tts(selected_role: dict = None, language: str = None) -> TTS:
|
|
"""获取TTS服务实例 - 固定使用MiniMax"""
|
|
role_selected_language = selected_role.get('_selected_language') if selected_role else None
|
|
effective_language = language or role_selected_language
|
|
session_logger.info(
|
|
"system",
|
|
"factory",
|
|
f"TTS提供商: MiniMax (固定)" +
|
|
(f", 语言: {effective_language}" if effective_language else "")
|
|
)
|
|
instance = MiniMaxTTS(selected_role=selected_role)
|
|
if hasattr(instance, "current_language"):
|
|
instance.current_language = effective_language
|
|
return instance
|