mirror of
https://github.com/ijaric/voice_assistant.git
synced 2025-05-24 14:33:26 +00:00
feat: [#28] models update
This commit is contained in:
parent
d70375956c
commit
61e968c33b
|
@ -1,4 +1,18 @@
|
||||||
from .orm import Base, IdCreatedUpdatedBaseMixin
|
from .orm import Base, IdCreatedUpdatedBaseMixin
|
||||||
from .token import Token
|
from .token import Token
|
||||||
|
from .tts import *
|
||||||
|
|
||||||
__all__ = ["Base", "IdCreatedUpdatedBaseMixin", "Token"]
|
__all__ = [
|
||||||
|
"Base",
|
||||||
|
"BaseLanguageCodesEnum",
|
||||||
|
"BaseVoiceModel",
|
||||||
|
"BaseVoiceModel",
|
||||||
|
"ElevenLabsLanguageCodesEnum",
|
||||||
|
"IdCreatedUpdatedBaseMixin",
|
||||||
|
"LANGUAGE_CODES_ENUM_TYPE",
|
||||||
|
"TTSCreateRequestModel",
|
||||||
|
"TTSCreateResponseModel",
|
||||||
|
"TTSSearchVoiceRequestModel",
|
||||||
|
"Token",
|
||||||
|
"YandexLanguageCodesEnum",
|
||||||
|
]
|
||||||
|
|
13
src/assistant/lib/models/tts/__init__.py
Normal file
13
src/assistant/lib/models/tts/__init__.py
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
from .base import *
|
||||||
|
from .languages import *
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"BaseLanguageCodesEnum",
|
||||||
|
"BaseVoiceModel",
|
||||||
|
"ElevenLabsLanguageCodesEnum",
|
||||||
|
"LANGUAGE_CODES_ENUM_TYPE",
|
||||||
|
"TTSCreateRequestModel",
|
||||||
|
"TTSCreateResponseModel",
|
||||||
|
"TTSSearchVoiceRequestModel",
|
||||||
|
"YandexLanguageCodesEnum",
|
||||||
|
]
|
45
src/assistant/lib/models/tts/base.py
Normal file
45
src/assistant/lib/models/tts/base.py
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
import typing
|
||||||
|
|
||||||
|
import pydantic
|
||||||
|
|
||||||
|
import lib.models.tts.languages as models_tts_languages
|
||||||
|
|
||||||
|
|
||||||
|
class TTSCreateRequestModel(pydantic.BaseModel):
|
||||||
|
model_config = pydantic.ConfigDict(use_enum_values=True)
|
||||||
|
|
||||||
|
voice_model_name: str
|
||||||
|
text: str
|
||||||
|
|
||||||
|
|
||||||
|
class TTSCreateResponseModel(pydantic.BaseModel):
|
||||||
|
audio_content: bytes
|
||||||
|
|
||||||
|
|
||||||
|
class BaseVoiceModel(pydantic.BaseModel):
|
||||||
|
voice_id: str
|
||||||
|
voice_name: str | None = None
|
||||||
|
languages: list[models_tts_languages.LANGUAGE_CODES_ENUM_TYPE]
|
||||||
|
company_name: str
|
||||||
|
|
||||||
|
@pydantic.model_validator(mode="before")
|
||||||
|
@classmethod
|
||||||
|
def check_voice_name_exists(cls, data: typing.Any) -> typing.Any:
|
||||||
|
voice_id = data.get("voice_id")
|
||||||
|
voice_name = data.get("voice_name")
|
||||||
|
if not voice_name and voice_id:
|
||||||
|
data["voice_name"] = voice_id
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
class TTSSearchVoiceRequestModel(pydantic.BaseModel):
|
||||||
|
voice_id: str | None = None
|
||||||
|
voice_name: str | None = None
|
||||||
|
languages: list[models_tts_languages.LANGUAGE_CODES_ENUM_TYPE] | None = None
|
||||||
|
company_name: str | None = None
|
||||||
|
|
||||||
|
@pydantic.model_validator(mode="after")
|
||||||
|
def check_at_least_one_field(self):
|
||||||
|
if not any((self.voice_name, self.languages, self.company_name)):
|
||||||
|
raise ValueError("At least one field required")
|
||||||
|
return self
|
83
src/assistant/lib/models/tts/languages.py
Normal file
83
src/assistant/lib/models/tts/languages.py
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
import enum
|
||||||
|
|
||||||
|
|
||||||
|
class BaseLanguageCodesEnum(enum.Enum):
|
||||||
|
RUSSIAN = "ru"
|
||||||
|
ENGLISH = "en"
|
||||||
|
KAZAKH = "kk"
|
||||||
|
GERMAN = "de"
|
||||||
|
HEBREW = "he"
|
||||||
|
UZBEK = "uz"
|
||||||
|
JAPANESE = "ja"
|
||||||
|
CHINESE = "zh"
|
||||||
|
HINDI = "hi"
|
||||||
|
FRENCH = "fr"
|
||||||
|
KOREAN = "ko"
|
||||||
|
PORTUGUESE = "pt"
|
||||||
|
ITALIAN = "it"
|
||||||
|
SPANISH = "es"
|
||||||
|
INDONESIAN = "id"
|
||||||
|
DUTCH = "nl"
|
||||||
|
TURKISH = "tr"
|
||||||
|
FILIPINO = "fil"
|
||||||
|
POLISH = "pl"
|
||||||
|
SWEDISH = "sv"
|
||||||
|
BULGARIAN = "bg"
|
||||||
|
ROMANIAN = "ro"
|
||||||
|
ARABIC = "ar"
|
||||||
|
CZECH = "cs"
|
||||||
|
GREEK = "el"
|
||||||
|
FINNISH = "fi"
|
||||||
|
CROATIAN = "hr"
|
||||||
|
MALAY = "ms"
|
||||||
|
SLOVAK = "sk"
|
||||||
|
DANISH = "da"
|
||||||
|
TAMIL = "ta"
|
||||||
|
UKRAINIAN = "uk"
|
||||||
|
|
||||||
|
|
||||||
|
class ElevenLabsLanguageCodesEnum(enum.Enum):
|
||||||
|
RUSSIAN = "ru"
|
||||||
|
ENGLISH = "en"
|
||||||
|
KAZAKH = "kk"
|
||||||
|
GERMAN = "de"
|
||||||
|
HEBREW = "he"
|
||||||
|
UZBEK = "uz"
|
||||||
|
JAPANESE = "ja"
|
||||||
|
CHINESE = "zh"
|
||||||
|
HINDI = "hi"
|
||||||
|
FRENCH = "fr"
|
||||||
|
KOREAN = "ko"
|
||||||
|
PORTUGUESE = "pt"
|
||||||
|
ITALIAN = "it"
|
||||||
|
SPANISH = "es"
|
||||||
|
INDONESIAN = "id"
|
||||||
|
DUTCH = "nl"
|
||||||
|
TURKISH = "tr"
|
||||||
|
FILIPINO = "fil"
|
||||||
|
POLISH = "pl"
|
||||||
|
SWEDISH = "sv"
|
||||||
|
BULGARIAN = "bg"
|
||||||
|
ROMANIAN = "ro"
|
||||||
|
ARABIC = "ar"
|
||||||
|
CZECH = "cs"
|
||||||
|
GREEK = "el"
|
||||||
|
FINNISH = "fi"
|
||||||
|
CROATIAN = "hr"
|
||||||
|
MALAY = "ms"
|
||||||
|
SLOVAK = "sk"
|
||||||
|
DANISH = "da"
|
||||||
|
TAMIL = "ta"
|
||||||
|
UKRAINIAN = "uk"
|
||||||
|
|
||||||
|
|
||||||
|
class YandexLanguageCodesEnum(enum.Enum):
|
||||||
|
RUSSIAN = "ru-RU"
|
||||||
|
ENGLISH = "en-US"
|
||||||
|
KAZAKH = "kk-KK"
|
||||||
|
GERMAN = "de-DE"
|
||||||
|
HEBREW = "he-IL"
|
||||||
|
UZBEK = "uz-UZ"
|
||||||
|
|
||||||
|
|
||||||
|
LANGUAGE_CODES_ENUM_TYPE = BaseLanguageCodesEnum | ElevenLabsLanguageCodesEnum | YandexLanguageCodesEnum
|
|
@ -1,11 +1,17 @@
|
||||||
from .models import *
|
from .repository import *
|
||||||
|
from .service import *
|
||||||
|
from .utils import *
|
||||||
from .voice import *
|
from .voice import *
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"LanguageCodes",
|
"ElevenLabsListVoiceModelsModel",
|
||||||
"TTSRequestModel",
|
"ElevenLabsVoiceModel",
|
||||||
"TTSResponseModel",
|
"LIST_VOICE_MODELS_TYPE",
|
||||||
"VoiceModel",
|
"LIST_VOICE_MODELS_TYPE",
|
||||||
"YandexVoiceModelNamesString",
|
"TTSCreateRequestServiceModel",
|
||||||
"YandexVoiceModels",
|
"TTSCreateResponseServiceModel",
|
||||||
|
"TTSRepositoryProtocol",
|
||||||
|
"VOICE_MODELS_TYPE",
|
||||||
|
"YandexListVoiceModelsModel",
|
||||||
|
"YandexVoiceModel",
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
import pydantic
|
|
||||||
|
|
||||||
import lib.tts.models.voice as tts_models_voice
|
|
||||||
|
|
||||||
|
|
||||||
class TTSRequestModel(pydantic.BaseModel):
|
|
||||||
model_config = pydantic.ConfigDict(use_enum_values=True)
|
|
||||||
|
|
||||||
voice_model_name: tts_models_voice.YandexVoiceModelNamesString
|
|
||||||
text: str
|
|
||||||
|
|
||||||
|
|
||||||
class TTSResponseModel(pydantic.BaseModel):
|
|
||||||
audio_content: bytes
|
|
17
src/assistant/lib/tts/models/repository.py
Normal file
17
src/assistant/lib/tts/models/repository.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import typing
|
||||||
|
|
||||||
|
import lib.models as models
|
||||||
|
import lib.tts.models.utils as tts_models_utils
|
||||||
|
|
||||||
|
|
||||||
|
class TTSRepositoryProtocol(typing.Protocol):
|
||||||
|
def get_audio_as_bytes_from_text(self, text: str) -> models.TTSCreateResponseModel:
|
||||||
|
...
|
||||||
|
|
||||||
|
def get_voice_model_by_name(self, voice_model_name: str) -> models.BaseVoiceModel | None:
|
||||||
|
...
|
||||||
|
|
||||||
|
def get_voice_models_by_fields(
|
||||||
|
self, fields: models.TTSSearchVoiceRequestModel
|
||||||
|
) -> tts_models_utils.LIST_VOICE_MODELS_TYPE:
|
||||||
|
...
|
9
src/assistant/lib/tts/models/service.py
Normal file
9
src/assistant/lib/tts/models/service.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import lib.models as models
|
||||||
|
|
||||||
|
|
||||||
|
class TTSCreateRequestServiceModel(models.TTSCreateRequestModel):
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
class TTSCreateResponseServiceModel(models.TTSCreateResponseModel):
|
||||||
|
...
|
4
src/assistant/lib/tts/models/utils.py
Normal file
4
src/assistant/lib/tts/models/utils.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
import lib.tts.models.voice as tts_models_voice
|
||||||
|
|
||||||
|
VOICE_MODELS_TYPE = tts_models_voice.YandexVoiceModel | tts_models_voice.ElevenLabsVoiceModel
|
||||||
|
LIST_VOICE_MODELS_TYPE = tts_models_voice.YandexListVoiceModelsModel | tts_models_voice.ElevenLabsListVoiceModelsModel
|
|
@ -1,9 +1,9 @@
|
||||||
from .base import *
|
from .eleven_labs import *
|
||||||
from .yandex import *
|
from .yandex import *
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"LanguageCodes",
|
"ElevenLabsListVoiceModelsModel",
|
||||||
"VoiceModel",
|
"ElevenLabsVoiceModel",
|
||||||
"YandexVoiceModelNamesString",
|
"YandexListVoiceModelsModel",
|
||||||
"YandexVoiceModels",
|
"YandexVoiceModel",
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
import enum
|
|
||||||
|
|
||||||
import pydantic
|
|
||||||
|
|
||||||
|
|
||||||
class LanguageCodes(enum.Enum):
|
|
||||||
RUSSIAN = "ru-RU"
|
|
||||||
ENGLISH = "en-US"
|
|
||||||
KAZAKH = "kk-KK"
|
|
||||||
GERMAN = "de-DE"
|
|
||||||
HEBREW = "he-IL"
|
|
||||||
UZBEK = "uz-UZ"
|
|
||||||
|
|
||||||
|
|
||||||
class VoiceModel(pydantic.BaseModel):
|
|
||||||
model_config = pydantic.ConfigDict(use_enum_values=True)
|
|
||||||
|
|
||||||
voice_name: str
|
|
||||||
role: str | None = None
|
|
||||||
lang: LanguageCodes
|
|
73
src/assistant/lib/tts/models/voice/eleven_labs.py
Normal file
73
src/assistant/lib/tts/models/voice/eleven_labs.py
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
import typing
|
||||||
|
|
||||||
|
import pydantic
|
||||||
|
|
||||||
|
import lib.models as models
|
||||||
|
|
||||||
|
|
||||||
|
class ElevenLabsVoiceModel(models.BaseVoiceModel):
|
||||||
|
voice_id: str
|
||||||
|
voice_name: str | None = None
|
||||||
|
languages: list[models.LANGUAGE_CODES_ENUM_TYPE]
|
||||||
|
company_name: str = "eleven labs"
|
||||||
|
|
||||||
|
|
||||||
|
class ElevenLabsListVoiceModelsModel(pydantic.BaseModel):
|
||||||
|
models: list[ElevenLabsVoiceModel] = [
|
||||||
|
ElevenLabsVoiceModel(
|
||||||
|
voice_id="eleven_multilingual_v1",
|
||||||
|
languages=[
|
||||||
|
models.ElevenLabsLanguageCodesEnum.ENGLISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.GERMAN,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.POLISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.SPANISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.ITALIAN,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.FRENCH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.PORTUGUESE,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.HINDI,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.ARABIC,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
ElevenLabsVoiceModel(
|
||||||
|
voice_id="eleven_multilingual_v2",
|
||||||
|
languages=[
|
||||||
|
models.ElevenLabsLanguageCodesEnum.ENGLISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.JAPANESE,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.CHINESE,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.GERMAN,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.HINDI,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.FRENCH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.KOREAN,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.PORTUGUESE,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.ITALIAN,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.SPANISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.INDONESIAN,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.DUTCH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.TURKISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.FILIPINO,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.POLISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.SWEDISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.BULGARIAN,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.ROMANIAN,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.ARABIC,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.CZECH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.GREEK,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.FINNISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.CROATIAN,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.MALAY,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.SLOVAK,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.DANISH,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.TAMIL,
|
||||||
|
models.ElevenLabsLanguageCodesEnum.UKRAINIAN,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
ElevenLabsVoiceModel(
|
||||||
|
voice_id="eleven_multilingual_v2",
|
||||||
|
languages=[models.ElevenLabsLanguageCodesEnum.ENGLISH],
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_api(cls, voice_models_from_api: list[dict[str, typing.Any]]) -> typing.Self:
|
||||||
|
voice_models = [ElevenLabsVoiceModel.model_validate(voice_model) for voice_model in voice_models_from_api]
|
||||||
|
return ElevenLabsListVoiceModelsModel(models=voice_models)
|
|
@ -1,126 +1,60 @@
|
||||||
import enum
|
import typing
|
||||||
|
|
||||||
import lib.tts.models.voice.base as tts_models_voice_base
|
import pydantic
|
||||||
|
|
||||||
|
import lib.models as models
|
||||||
|
|
||||||
|
|
||||||
class YandexVoiceModelNamesString(enum.Enum):
|
class YandexVoiceModel(models.BaseVoiceModel):
|
||||||
ERMIL_NEUTRAL = "ermil neutral"
|
voice_id: str
|
||||||
ERMIL_GOOD = "ermil good"
|
voice_name: str | None = None
|
||||||
ALENA_NEUTRAL = "alena neutral"
|
languages: list[models.LANGUAGE_CODES_ENUM_TYPE]
|
||||||
ALENA_GOOD = "alena good"
|
company_name: str = "yandex"
|
||||||
JANE_NEUTRAL = "jane neutral"
|
role: str | None = None
|
||||||
JANE_GOOD = "jane good"
|
|
||||||
JANE_EVIL = "jane evil"
|
@pydantic.model_validator(mode="before")
|
||||||
OMAZH_NEUTRAL = "omazh neutral"
|
@classmethod
|
||||||
OMAZH_EVIL = "omazh evil"
|
def check_voice_name_exists(cls, data: typing.Any) -> typing.Any:
|
||||||
ZAHAR_NEUTRAL = "zahar neutral"
|
voice_id = data.get("voice_id")
|
||||||
ZAHAR_GOOD = "zahar good"
|
voice_name = data.get("voice_name")
|
||||||
FILIPP = "filipp"
|
role = data.get("role")
|
||||||
MADIRUS = "madirus"
|
if not voice_name and voice_id:
|
||||||
DASHA = "dasha"
|
data["voice_name"] = f"{voice_id} {role}" if role else voice_id
|
||||||
JULIA = "julia"
|
return data
|
||||||
LERA = "lera"
|
|
||||||
MARINA = "marina"
|
|
||||||
ALEXANDER = "alexander"
|
|
||||||
KIRILL = "kirill"
|
|
||||||
ANTON = "anton"
|
|
||||||
# English
|
|
||||||
JOHN = "john"
|
|
||||||
# Kazakh
|
|
||||||
AMIRA = "amira"
|
|
||||||
MADI = "madi"
|
|
||||||
# German
|
|
||||||
LEA = "lea"
|
|
||||||
# HEBREW
|
|
||||||
NAOMI_MODERN = "naomi modern"
|
|
||||||
NAOMI_CLASSIC = "naomi classic"
|
|
||||||
# Uzbek
|
|
||||||
NIGORA = "nigora"
|
|
||||||
|
|
||||||
|
|
||||||
class YandexVoiceModels(enum.Enum):
|
class YandexListVoiceModelsModel(pydantic.BaseModel):
|
||||||
# Russian
|
models: list[YandexVoiceModel] = [
|
||||||
ERMIL_NEUTRAL = tts_models_voice_base.VoiceModel(
|
YandexVoiceModel(voice_id="ermil", role="neutral", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
voice_name="ermil", role="neutral", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
YandexVoiceModel(voice_id="ermil", role="good", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
)
|
YandexVoiceModel(voice_id="alena", role="neutral", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
ERMIL_GOOD = tts_models_voice_base.VoiceModel(
|
YandexVoiceModel(voice_id="alena", role="good", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
voice_name="ermil", role="good", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
YandexVoiceModel(voice_id="jane", role="neutral", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
)
|
YandexVoiceModel(voice_id="jane", role="good", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
ALENA_NEUTRAL = tts_models_voice_base.VoiceModel(
|
YandexVoiceModel(voice_id="jane", role="evil", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
voice_name="alena", role="neutral", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
YandexVoiceModel(voice_id="omazh", role="neutral", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
)
|
YandexVoiceModel(voice_id="omazh", role="evil", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
ALENA_GOOD = tts_models_voice_base.VoiceModel(
|
YandexVoiceModel(voice_id="zahar", role="neutral", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
voice_name="alena", role="good", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
YandexVoiceModel(voice_id="zahar", role="good", languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
)
|
YandexVoiceModel(voice_id="filipp", role=None, languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
JANE_NEUTRAL = tts_models_voice_base.VoiceModel(
|
YandexVoiceModel(voice_id="madirus", role=None, languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
voice_name="jane", role="neutral", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
YandexVoiceModel(voice_id="dasha", role=None, languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
)
|
YandexVoiceModel(voice_id="julia", role=None, languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
JANE_GOOD = tts_models_voice_base.VoiceModel(
|
YandexVoiceModel(voice_id="lera", role=None, languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
voice_name="jane", role="good", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
YandexVoiceModel(voice_id="marina", role=None, languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
)
|
YandexVoiceModel(voice_id="alexander", role=None, languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
JANE_EVIL = tts_models_voice_base.VoiceModel(
|
YandexVoiceModel(voice_id="kirill", role=None, languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
voice_name="jane", role="evil", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
YandexVoiceModel(voice_id="anton", role=None, languages=[models.YandexLanguageCodesEnum.RUSSIAN]),
|
||||||
)
|
YandexVoiceModel(voice_id="john", role=None, languages=[models.YandexLanguageCodesEnum.ENGLISH]),
|
||||||
OMAZH_NEUTRAL = tts_models_voice_base.VoiceModel(
|
YandexVoiceModel(voice_id="amira", role=None, languages=[models.YandexLanguageCodesEnum.KAZAKH]),
|
||||||
voice_name="omazh", role="neutral", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
YandexVoiceModel(voice_id="madi", role=None, languages=[models.YandexLanguageCodesEnum.KAZAKH]),
|
||||||
)
|
YandexVoiceModel(voice_id="lea", role=None, languages=[models.YandexLanguageCodesEnum.GERMAN]),
|
||||||
OMAZH_EVIL = tts_models_voice_base.VoiceModel(
|
YandexVoiceModel(voice_id="naomi", role="modern", languages=[models.YandexLanguageCodesEnum.HEBREW]),
|
||||||
voice_name="omazh", role="evil", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
YandexVoiceModel(voice_id="naomi", role="classic", languages=[models.YandexLanguageCodesEnum.HEBREW]),
|
||||||
)
|
YandexVoiceModel(voice_id="nigora", role=None, languages=[models.YandexLanguageCodesEnum.UZBEK]),
|
||||||
ZAHAR_NEUTRAL = tts_models_voice_base.VoiceModel(
|
]
|
||||||
voice_name="zahar", role="neutral", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
@classmethod
|
||||||
ZAHAR_GOOD = tts_models_voice_base.VoiceModel(
|
def from_api(cls, voice_models_from_api: list[dict[str, typing.Any]]) -> typing.Self:
|
||||||
voice_name="zahar", role="good", lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
voice_models = [YandexVoiceModel.model_validate(voice_model) for voice_model in voice_models_from_api]
|
||||||
)
|
return YandexListVoiceModelsModel(models=voice_models)
|
||||||
FILIPP = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="filipp", role=None, lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
|
||||||
MADIRUS = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="madirus", role=None, lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
|
||||||
DASHA = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="dasha", role=None, lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
|
||||||
JULIA = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="julia", role=None, lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
|
||||||
LERA = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="lera", role=None, lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
|
||||||
MARINA = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="marina", role=None, lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
|
||||||
ALEXANDER = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="alexander", role=None, lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
|
||||||
KIRILL = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="kirill", role=None, lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
|
||||||
ANTON = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="anton", role=None, lang=tts_models_voice_base.LanguageCodes.RUSSIAN
|
|
||||||
)
|
|
||||||
# English
|
|
||||||
JOHN = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="john", role=None, lang=tts_models_voice_base.LanguageCodes.ENGLISH
|
|
||||||
)
|
|
||||||
# Kazakh
|
|
||||||
AMIRA = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="amira", role=None, lang=tts_models_voice_base.LanguageCodes.KAZAKH
|
|
||||||
)
|
|
||||||
MADI = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="madi", role=None, lang=tts_models_voice_base.LanguageCodes.KAZAKH
|
|
||||||
)
|
|
||||||
# German
|
|
||||||
LEA = tts_models_voice_base.VoiceModel(voice_name="lea", role=None, lang=tts_models_voice_base.LanguageCodes.GERMAN)
|
|
||||||
# HEBREW
|
|
||||||
NAOMI_MODERN = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="naomi", role="modern", lang=tts_models_voice_base.LanguageCodes.HEBREW
|
|
||||||
)
|
|
||||||
NAOMI_CLASSIC = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="naomi", role="classic", lang=tts_models_voice_base.LanguageCodes.HEBREW
|
|
||||||
)
|
|
||||||
# Uzbek
|
|
||||||
NIGORA = tts_models_voice_base.VoiceModel(
|
|
||||||
voice_name="nigora", role=None, lang=tts_models_voice_base.LanguageCodes.UZBEK
|
|
||||||
)
|
|
||||||
|
|
5
src/assistant/lib/tts/repositories/__init__.py
Normal file
5
src/assistant/lib/tts/repositories/__init__.py
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
from .base import *
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"TTSBaseRepository",
|
||||||
|
]
|
Loading…
Reference in New Issue
Block a user