Merge pull request #653 from pipecat-ai/mb/align-tts-constructors

Align TTSService constructors
This commit is contained in:
Mark Backman
2024-10-24 13:52:43 -04:00
committed by GitHub
2 changed files with 16 additions and 17 deletions

View File

@@ -68,9 +68,6 @@ def language_to_cartesia_language(language: Language) -> str | None:
class CartesiaTTSService(WordTTSService): class CartesiaTTSService(WordTTSService):
class InputParams(BaseModel): class InputParams(BaseModel):
encoding: Optional[str] = "pcm_s16le"
sample_rate: Optional[int] = 16000
container: Optional[str] = "raw"
language: Optional[Language] = Language.EN language: Optional[Language] = Language.EN
speed: Optional[Union[str, float]] = "" speed: Optional[Union[str, float]] = ""
emotion: Optional[List[str]] = [] emotion: Optional[List[str]] = []
@@ -83,6 +80,9 @@ class CartesiaTTSService(WordTTSService):
cartesia_version: str = "2024-06-10", cartesia_version: str = "2024-06-10",
url: str = "wss://api.cartesia.ai/tts/websocket", url: str = "wss://api.cartesia.ai/tts/websocket",
model: str = "sonic-english", model: str = "sonic-english",
sample_rate: int = 16000,
encoding: str = "pcm_s16le",
container: str = "raw",
params: InputParams = InputParams(), params: InputParams = InputParams(),
**kwargs, **kwargs,
): ):
@@ -99,7 +99,6 @@ class CartesiaTTSService(WordTTSService):
super().__init__( super().__init__(
aggregate_sentences=True, aggregate_sentences=True,
push_text_frames=False, push_text_frames=False,
sample_rate=params.sample_rate,
**kwargs, **kwargs,
) )
@@ -108,9 +107,9 @@ class CartesiaTTSService(WordTTSService):
self._url = url self._url = url
self._settings = { self._settings = {
"output_format": { "output_format": {
"container": params.container, "container": container,
"encoding": params.encoding, "encoding": encoding,
"sample_rate": params.sample_rate, "sample_rate": sample_rate,
}, },
"language": self.language_to_service_language(params.language) "language": self.language_to_service_language(params.language)
if params.language if params.language
@@ -288,9 +287,6 @@ class CartesiaTTSService(WordTTSService):
class CartesiaHttpTTSService(TTSService): class CartesiaHttpTTSService(TTSService):
class InputParams(BaseModel): class InputParams(BaseModel):
encoding: Optional[str] = "pcm_s16le"
sample_rate: Optional[int] = 16000
container: Optional[str] = "raw"
language: Optional[Language] = Language.EN language: Optional[Language] = Language.EN
speed: Optional[Union[str, float]] = "" speed: Optional[Union[str, float]] = ""
emotion: Optional[List[str]] = [] emotion: Optional[List[str]] = []
@@ -302,6 +298,9 @@ class CartesiaHttpTTSService(TTSService):
voice_id: str, voice_id: str,
model: str = "sonic-english", model: str = "sonic-english",
base_url: str = "https://api.cartesia.ai", base_url: str = "https://api.cartesia.ai",
sample_rate: int = 16000,
encoding: str = "pcm_s16le",
container: str = "raw",
params: InputParams = InputParams(), params: InputParams = InputParams(),
**kwargs, **kwargs,
): ):
@@ -310,9 +309,9 @@ class CartesiaHttpTTSService(TTSService):
self._api_key = api_key self._api_key = api_key
self._settings = { self._settings = {
"output_format": { "output_format": {
"container": params.container, "container": container,
"encoding": params.encoding, "encoding": encoding,
"sample_rate": params.sample_rate, "sample_rate": sample_rate,
}, },
"language": self.language_to_service_language(params.language) "language": self.language_to_service_language(params.language)
if params.language if params.language

View File

@@ -74,7 +74,6 @@ def calculate_word_times(
class ElevenLabsTTSService(WordTTSService): class ElevenLabsTTSService(WordTTSService):
class InputParams(BaseModel): class InputParams(BaseModel):
language: Optional[Language] = Language.EN language: Optional[Language] = Language.EN
output_format: Literal["pcm_16000", "pcm_22050", "pcm_24000", "pcm_44100"] = "pcm_16000"
optimize_streaming_latency: Optional[str] = None optimize_streaming_latency: Optional[str] = None
stability: Optional[float] = None stability: Optional[float] = None
similarity_boost: Optional[float] = None similarity_boost: Optional[float] = None
@@ -98,6 +97,7 @@ class ElevenLabsTTSService(WordTTSService):
voice_id: str, voice_id: str,
model: str = "eleven_turbo_v2_5", model: str = "eleven_turbo_v2_5",
url: str = "wss://api.elevenlabs.io", url: str = "wss://api.elevenlabs.io",
output_format: Literal["pcm_16000", "pcm_22050", "pcm_24000", "pcm_44100"] = "pcm_16000",
params: InputParams = InputParams(), params: InputParams = InputParams(),
**kwargs, **kwargs,
): ):
@@ -120,18 +120,18 @@ class ElevenLabsTTSService(WordTTSService):
push_text_frames=False, push_text_frames=False,
push_stop_frames=True, push_stop_frames=True,
stop_frame_timeout_s=2.0, stop_frame_timeout_s=2.0,
sample_rate=sample_rate_from_output_format(params.output_format), sample_rate=sample_rate_from_output_format(output_format),
**kwargs, **kwargs,
) )
self._api_key = api_key self._api_key = api_key
self._url = url self._url = url
self._settings = { self._settings = {
"sample_rate": sample_rate_from_output_format(params.output_format), "sample_rate": sample_rate_from_output_format(output_format),
"language": self.language_to_service_language(params.language) "language": self.language_to_service_language(params.language)
if params.language if params.language
else Language.EN, else Language.EN,
"output_format": params.output_format, "output_format": output_format,
"optimize_streaming_latency": params.optimize_streaming_latency, "optimize_streaming_latency": params.optimize_streaming_latency,
"stability": params.stability, "stability": params.stability,
"similarity_boost": params.similarity_boost, "similarity_boost": params.similarity_boost,