From 38c48fa4ce0f31e551f01c2f32a1ec76b7ef935c Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 29 Apr 2026 18:32:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20OpenAIVoiceProvider=20?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E7=AE=80=E5=8C=96=E5=87=AD=E8=AF=81?= =?UTF-8?q?=E4=B8=8E=20provider=20=E8=A7=A3=E6=9E=90=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=B9=B6=E8=B0=83=E6=95=B4=E6=9C=80=E5=A4=A7=E8=BD=AC=E5=BD=95?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=A7=E5=B0=8F=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helper/voice.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/app/helper/voice.py b/app/helper/voice.py index 59b132e6..af633eb1 100644 --- a/app/helper/voice.py +++ b/app/helper/voice.py @@ -13,7 +13,7 @@ from app.log import logger class VoiceProvider(ABC): """语音 provider 抽象层。""" - MAX_TRANSCRIBE_BYTES = 25 * 1024 * 1024 + MAX_TRANSCRIBE_BYTES = 10 * 1024 * 1024 @property @abstractmethod @@ -49,10 +49,8 @@ class OpenAIVoiceProvider(VoiceProvider): provider = settings.AI_VOICE_PROVIDER or "openai" return provider.strip().lower() - @staticmethod - def _resolve_credentials(mode: str) -> tuple[Optional[str], Optional[str]]: - mode = mode.lower() - provider = OpenAIVoiceProvider._resolve_provider_name() + def _resolve_credentials(self) -> tuple[Optional[str], Optional[str]]: + provider = self._resolve_provider_name() api_key = settings.AI_VOICE_API_KEY base_url = settings.AI_VOICE_BASE_URL @@ -69,17 +67,17 @@ class OpenAIVoiceProvider(VoiceProvider): def _get_client(self, mode: str): from openai import OpenAI - api_key, base_url = self._resolve_credentials(mode) + api_key, base_url = self._resolve_credentials() if not api_key: raise ValueError(f"{mode.upper()} provider 未配置 API Key") return OpenAI(api_key=api_key, base_url=base_url, max_retries=3) def is_available_for_stt(self) -> bool: - api_key, _ = self._resolve_credentials("stt") + api_key, _ = self._resolve_credentials() return bool(api_key) def is_available_for_tts(self) -> bool: - api_key, _ = self._resolve_credentials("tts") + api_key, _ = self._resolve_credentials() return bool(api_key) 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) - @staticmethod - def _resolve_provider_name(mode: str) -> str: - del mode - return OpenAIVoiceProvider._resolve_provider_name() + def _resolve_provider_name(self) -> str: + return self._resolve_provider_name() @classmethod 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) if provider: return provider