mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 15:38:19 +08:00
优化 OpenAIVoiceProvider 逻辑,简化凭证与 provider 解析方法并调整最大转录文件大小限制
This commit is contained in:
+9
-13
@@ -13,7 +13,7 @@ from app.log import logger
|
|||||||
class VoiceProvider(ABC):
|
class VoiceProvider(ABC):
|
||||||
"""语音 provider 抽象层。"""
|
"""语音 provider 抽象层。"""
|
||||||
|
|
||||||
MAX_TRANSCRIBE_BYTES = 25 * 1024 * 1024
|
MAX_TRANSCRIBE_BYTES = 10 * 1024 * 1024
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
@@ -49,10 +49,8 @@ class OpenAIVoiceProvider(VoiceProvider):
|
|||||||
provider = settings.AI_VOICE_PROVIDER or "openai"
|
provider = settings.AI_VOICE_PROVIDER or "openai"
|
||||||
return provider.strip().lower()
|
return provider.strip().lower()
|
||||||
|
|
||||||
@staticmethod
|
def _resolve_credentials(self) -> tuple[Optional[str], Optional[str]]:
|
||||||
def _resolve_credentials(mode: str) -> tuple[Optional[str], Optional[str]]:
|
provider = self._resolve_provider_name()
|
||||||
mode = mode.lower()
|
|
||||||
provider = OpenAIVoiceProvider._resolve_provider_name()
|
|
||||||
api_key = settings.AI_VOICE_API_KEY
|
api_key = settings.AI_VOICE_API_KEY
|
||||||
base_url = settings.AI_VOICE_BASE_URL
|
base_url = settings.AI_VOICE_BASE_URL
|
||||||
|
|
||||||
@@ -69,17 +67,17 @@ class OpenAIVoiceProvider(VoiceProvider):
|
|||||||
def _get_client(self, mode: str):
|
def _get_client(self, mode: str):
|
||||||
from openai import OpenAI
|
from openai import OpenAI
|
||||||
|
|
||||||
api_key, base_url = self._resolve_credentials(mode)
|
api_key, base_url = self._resolve_credentials()
|
||||||
if not api_key:
|
if not api_key:
|
||||||
raise ValueError(f"{mode.upper()} provider 未配置 API Key")
|
raise ValueError(f"{mode.upper()} provider 未配置 API Key")
|
||||||
return OpenAI(api_key=api_key, base_url=base_url, max_retries=3)
|
return OpenAI(api_key=api_key, base_url=base_url, max_retries=3)
|
||||||
|
|
||||||
def is_available_for_stt(self) -> bool:
|
def is_available_for_stt(self) -> bool:
|
||||||
api_key, _ = self._resolve_credentials("stt")
|
api_key, _ = self._resolve_credentials()
|
||||||
return bool(api_key)
|
return bool(api_key)
|
||||||
|
|
||||||
def is_available_for_tts(self) -> bool:
|
def is_available_for_tts(self) -> bool:
|
||||||
api_key, _ = self._resolve_credentials("tts")
|
api_key, _ = self._resolve_credentials()
|
||||||
return bool(api_key)
|
return bool(api_key)
|
||||||
|
|
||||||
def transcribe_bytes(self, content: bytes, filename: str = "input.ogg") -> Optional[str]:
|
def transcribe_bytes(self, content: bytes, filename: str = "input.ogg") -> Optional[str]:
|
||||||
@@ -144,14 +142,12 @@ class VoiceHelper:
|
|||||||
"""音频输入输出总开关,以显式配置为准。"""
|
"""音频输入输出总开关,以显式配置为准。"""
|
||||||
return bool(settings.LLM_SUPPORT_AUDIO_INPUT_OUTPUT)
|
return bool(settings.LLM_SUPPORT_AUDIO_INPUT_OUTPUT)
|
||||||
|
|
||||||
@staticmethod
|
def _resolve_provider_name(self) -> str:
|
||||||
def _resolve_provider_name(mode: str) -> str:
|
return self._resolve_provider_name()
|
||||||
del mode
|
|
||||||
return OpenAIVoiceProvider._resolve_provider_name()
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_provider(cls, mode: str) -> Optional[VoiceProvider]:
|
def get_provider(cls, mode: str) -> Optional[VoiceProvider]:
|
||||||
provider_name = cls._resolve_provider_name(mode)
|
provider_name = cls._resolve_provider_name()
|
||||||
provider = cls._providers.get(provider_name)
|
provider = cls._providers.get(provider_name)
|
||||||
if provider:
|
if provider:
|
||||||
return provider
|
return provider
|
||||||
|
|||||||
Reference in New Issue
Block a user