refactor: use Pydantic BaseModel for GenerationConfig and simplify model_dump()
- Change GenerationConfig from dataclass to Pydantic BaseModel for consistency - Simplify _build_msg() to use model_dump(exclude_none=True) instead of manual field extraction - Simplify HTTP run_tts() to use model_dump(exclude_none=True) instead of manual field extraction This addresses feedback from code review and reduces code duplication.
This commit is contained in:
@@ -10,7 +10,6 @@ import base64
|
||||
import json
|
||||
import uuid
|
||||
import warnings
|
||||
from dataclasses import dataclass
|
||||
from typing import AsyncGenerator, List, Literal, Optional, Union
|
||||
|
||||
from loguru import logger
|
||||
@@ -49,8 +48,7 @@ except ModuleNotFoundError as e:
|
||||
raise Exception(f"Missing module: {e}")
|
||||
|
||||
|
||||
@dataclass
|
||||
class GenerationConfig:
|
||||
class GenerationConfig(BaseModel):
|
||||
"""Configuration for Cartesia Sonic-3 generation parameters.
|
||||
|
||||
Sonic-3 interprets these parameters as guidance to ensure natural speech.
|
||||
@@ -324,15 +322,7 @@ class CartesiaTTSService(AudioContextWordTTSService):
|
||||
msg["speed"] = self._settings["speed"]
|
||||
|
||||
if self._settings["generation_config"]:
|
||||
gen_config = {}
|
||||
if self._settings["generation_config"].volume is not None:
|
||||
gen_config["volume"] = self._settings["generation_config"].volume
|
||||
if self._settings["generation_config"].speed is not None:
|
||||
gen_config["speed"] = self._settings["generation_config"].speed
|
||||
if self._settings["generation_config"].emotion is not None:
|
||||
gen_config["emotion"] = self._settings["generation_config"].emotion
|
||||
if gen_config:
|
||||
msg["generation_config"] = gen_config
|
||||
msg["generation_config"] = self._settings["generation_config"].model_dump(exclude_none=True)
|
||||
|
||||
return json.dumps(msg)
|
||||
|
||||
@@ -674,15 +664,7 @@ class CartesiaHttpTTSService(TTSService):
|
||||
payload["speed"] = self._settings["speed"]
|
||||
|
||||
if self._settings["generation_config"]:
|
||||
gen_config = {}
|
||||
if self._settings["generation_config"].volume is not None:
|
||||
gen_config["volume"] = self._settings["generation_config"].volume
|
||||
if self._settings["generation_config"].speed is not None:
|
||||
gen_config["speed"] = self._settings["generation_config"].speed
|
||||
if self._settings["generation_config"].emotion is not None:
|
||||
gen_config["emotion"] = self._settings["generation_config"].emotion
|
||||
if gen_config:
|
||||
payload["generation_config"] = gen_config
|
||||
payload["generation_config"] = self._settings["generation_config"].model_dump(exclude_none=True)
|
||||
|
||||
yield TTSStartedFrame()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user