mirror of
https://github.com/ijaric/voice_assistant.git
synced 2025-05-24 22:43:26 +00:00
feat: [#28] add base service
This commit is contained in:
parent
741a470d89
commit
0ef28afa22
|
@ -1,16 +1,39 @@
|
||||||
import abc
|
|
||||||
|
|
||||||
import lib.app.settings as app_settings
|
import lib.app.settings as app_settings
|
||||||
|
import lib.models as models
|
||||||
import lib.tts.models as tts_models
|
import lib.tts.models as tts_models
|
||||||
|
|
||||||
|
|
||||||
class BaseTTSService(abc.ABC):
|
class TTSService:
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
settings: app_settings.Settings,
|
settings: app_settings.Settings,
|
||||||
|
tts_repositories: list[tts_models.TTSRepositoryProtocol],
|
||||||
):
|
):
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
|
self.tts_repositories = tts_repositories
|
||||||
|
|
||||||
@abc.abstractmethod
|
def get_audio_as_bytes_from_text(self, tts_request: models.TTSCreateRequestModel) -> models.TTSCreateResponseModel:
|
||||||
def get_tts(self, tts_request: tts_models.TTSRequestModel) -> tts_models.TTSResponseModel:
|
for repository in self.tts_repositories:
|
||||||
raise NotImplementedError()
|
voice_model = repository.get_voice_model_by_name(tts_request.voice_model_name)
|
||||||
|
if voice_model:
|
||||||
|
audio_response = repository.get_audio_as_bytes_from_text(tts_request.text)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Voice model {tts_request.voice_model_name} not found")
|
||||||
|
return audio_response
|
||||||
|
|
||||||
|
def get_voice_model_by_name(self, voice_model_name: str) -> models.BaseVoiceModel | None:
|
||||||
|
for repository in self.tts_repositories:
|
||||||
|
voice_model = repository.get_voice_model_by_name(voice_model_name)
|
||||||
|
if voice_model:
|
||||||
|
return voice_model
|
||||||
|
|
||||||
|
def get_list_voice_models_by_fields(
|
||||||
|
self, fields: models.TTSSearchVoiceRequestModel
|
||||||
|
) -> list[tts_models.VOICE_MODELS_TYPE]:
|
||||||
|
response_models: list[tts_models.VOICE_MODELS_TYPE] = []
|
||||||
|
for repository in self.tts_repositories:
|
||||||
|
voice_models = repository.get_voice_models_by_fields(fields)
|
||||||
|
if voice_models.models:
|
||||||
|
response_models.extend(voice_models.models)
|
||||||
|
return response_models
|
||||||
|
|
Loading…
Reference in New Issue
Block a user