|
|
| from typing import Literal, Optional, Dict, ClassVar
|
| from pydantic import ValidationInfo, Field, model_validator
|
| from .i18n import I18nMixin, Description
|
|
|
|
|
|
|
|
|
| class DeepLXConfig(I18nMixin):
|
| """Configuration for DeepLX translation service."""
|
|
|
| deeplx_target_lang: str = Field(..., alias="deeplx_target_lang")
|
| deeplx_api_endpoint: str = Field(..., alias="deeplx_api_endpoint")
|
|
|
| DESCRIPTIONS: ClassVar[Dict[str, Description]] = {
|
| "deeplx_target_lang": Description(
|
| en="Target language code for DeepLX translation",
|
| zh="DeepLX 翻译的目标语言代码",
|
| ),
|
| "deeplx_api_endpoint": Description(
|
| en="API endpoint URL for DeepLX service", zh="DeepLX 服务的 API 端点 URL"
|
| ),
|
| }
|
|
|
|
|
| class TencentConfig(I18nMixin):
|
| """Configuration for tencent translation service."""
|
|
|
| secret_id: str = Field(..., description="Tencent Secret ID")
|
| secret_key: str = Field(..., description="Tencent Secret Key")
|
| region: str = Field(..., description="Region for Tencent Service")
|
| source_lang: str = Field(
|
| ..., description="Source language code for tencent translation"
|
| )
|
| target_lang: str = Field(
|
| ..., description="Target language code for tencent translation"
|
| )
|
|
|
| DESCRIPTIONS: ClassVar[Dict[str, Description]] = {
|
| "secret_id": Description(en="Tencent Secret ID", zh="腾讯服务的Secret ID"),
|
| "secret_key": Description(en="Tencent Secret Key", zh="腾讯服务的Secret Key"),
|
| "region": Description(en="Region for Tencent Service", zh="腾讯服务使用的区域"),
|
| "source_lang": Description(
|
| en="Source language code for tencent translation", zh="腾讯翻译的源语言代码"
|
| ),
|
| "target_lang": Description(
|
| en="Target language code for tencent translation",
|
| zh="腾讯翻译的目标语言代码",
|
| ),
|
| }
|
|
|
|
|
|
|
|
|
|
|
| class TranslatorConfig(I18nMixin):
|
| """Configuration for translation services."""
|
|
|
| translate_audio: bool = Field(..., alias="translate_audio")
|
| translate_provider: Literal["deeplx", "tencent"] = Field(
|
| ..., alias="translate_provider"
|
| )
|
| deeplx: Optional[DeepLXConfig] = Field(None, alias="deeplx")
|
| tencent: Optional[TencentConfig] = Field(None, alias="tencent")
|
|
|
| DESCRIPTIONS: ClassVar[Dict[str, Description]] = {
|
| "translate_audio": Description(
|
| en="Enable audio translation (requires DeepLX deployment)",
|
| zh="启用音频翻译(需要部署 DeepLX)",
|
| ),
|
| "translate_provider": Description(
|
| en="Translation service provider to use", zh="要使用的翻译服务提供者"
|
| ),
|
| "deeplx": Description(
|
| en="Configuration for DeepLX translation service", zh="DeepLX 翻译服务配置"
|
| ),
|
| "tencent": Description(
|
| en="Configuration for TenCent translation service", zh="腾讯 翻译服务配置"
|
| ),
|
| }
|
|
|
| @model_validator(mode="after")
|
| def check_translator_config(cls, values: "TranslatorConfig", info: ValidationInfo):
|
| translate_audio = values.translate_audio
|
| translate_provider = values.translate_provider
|
|
|
| if translate_audio:
|
| if translate_provider == "deeplx" and values.deeplx is None:
|
| raise ValueError(
|
| "DeepLX configuration must be provided when translate_audio is True and translate_provider is 'deeplx'"
|
| )
|
| elif translate_provider == "tencent" and values.tencent is None:
|
| raise ValueError(
|
| "Tencent configuration must be provided when translate_audio is True and translate_provider is 'tencent'"
|
| )
|
|
|
| return values
|
|
|
|
|
| class TTSPreprocessorConfig(I18nMixin):
|
| """Configuration for TTS preprocessor."""
|
|
|
| remove_special_char: bool = Field(..., alias="remove_special_char")
|
| ignore_brackets: bool = Field(default=True, alias="ignore_brackets")
|
| ignore_parentheses: bool = Field(default=True, alias="ignore_parentheses")
|
| ignore_asterisks: bool = Field(default=True, alias="ignore_asterisks")
|
| ignore_angle_brackets: bool = Field(default=True, alias="ignore_angle_brackets")
|
| translator_config: TranslatorConfig = Field(..., alias="translator_config")
|
|
|
| DESCRIPTIONS: ClassVar[Dict[str, Description]] = {
|
| "remove_special_char": Description(
|
| en="Remove special characters from the input text",
|
| zh="从输入文本中删除特殊字符",
|
| ),
|
| "translator_config": Description(
|
| en="Configuration for translation services", zh="翻译服务的配置"
|
| ),
|
| }
|
|
|