Add TTS update settings options
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from typing import Any, List, Optional, Tuple
|
from typing import Any, List, Optional, Tuple, Union
|
||||||
|
|
||||||
from pipecat.clocks.base_clock import BaseClock
|
from pipecat.clocks.base_clock import BaseClock
|
||||||
from pipecat.metrics.metrics import MetricsData
|
from pipecat.metrics.metrics import MetricsData
|
||||||
@@ -548,6 +548,16 @@ class TTSUpdateSettingsFrame(ControlFrame):
|
|||||||
model: Optional[str] = None
|
model: Optional[str] = None
|
||||||
voice: Optional[str] = None
|
voice: Optional[str] = None
|
||||||
language: Optional[Language] = None
|
language: Optional[Language] = None
|
||||||
|
speed: Optional[Union[str, float]] = None
|
||||||
|
emotion: Optional[List[str]] = None
|
||||||
|
engine: Optional[str] = None
|
||||||
|
pitch: Optional[str] = None
|
||||||
|
rate: Optional[str] = None
|
||||||
|
volume: Optional[str] = None
|
||||||
|
emphasis: Optional[str] = None
|
||||||
|
style: Optional[str] = None
|
||||||
|
style_degree: Optional[str] = None
|
||||||
|
role: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import asyncio
|
|||||||
import io
|
import io
|
||||||
import wave
|
import wave
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
from typing import AsyncGenerator, List, Optional, Tuple
|
from typing import AsyncGenerator, List, Optional, Tuple, Union
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
@@ -170,6 +170,46 @@ class TTSService(AIService):
|
|||||||
async def set_language(self, language: Language):
|
async def set_language(self, language: Language):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_speed(self, speed: Union[str, float]):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_emotion(self, emotion: List[str]):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_engine(self, engine: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_pitch(self, pitch: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_rate(self, rate: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_volume(self, volume: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_emphasis(self, emphasis: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_style(self, style: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_style_degree(self, style_degree: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def set_role(self, role: str):
|
||||||
|
pass
|
||||||
|
|
||||||
# Converts the text to audio.
|
# Converts the text to audio.
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def run_tts(self, text: str) -> AsyncGenerator[Frame, None]:
|
async def run_tts(self, text: str) -> AsyncGenerator[Frame, None]:
|
||||||
@@ -233,6 +273,26 @@ class TTSService(AIService):
|
|||||||
await self.set_voice(frame.voice)
|
await self.set_voice(frame.voice)
|
||||||
if frame.language is not None:
|
if frame.language is not None:
|
||||||
await self.set_language(frame.language)
|
await self.set_language(frame.language)
|
||||||
|
if frame.speed is not None:
|
||||||
|
await self.set_speed(frame.speed)
|
||||||
|
if frame.emotion is not None:
|
||||||
|
await self.set_emotion(frame.emotion)
|
||||||
|
if frame.engine is not None:
|
||||||
|
await self.set_engine(frame.engine)
|
||||||
|
if frame.pitch is not None:
|
||||||
|
await self.set_pitch(frame.pitch)
|
||||||
|
if frame.rate is not None:
|
||||||
|
await self.set_rate(frame.rate)
|
||||||
|
if frame.volume is not None:
|
||||||
|
await self.set_volume(frame.volume)
|
||||||
|
if frame.emphasis is not None:
|
||||||
|
await self.set_emphasis(frame.emphasis)
|
||||||
|
if frame.style is not None:
|
||||||
|
await self.set_style(frame.style)
|
||||||
|
if frame.style_degree is not None:
|
||||||
|
await self.set_style_degree(frame.style_degree)
|
||||||
|
if frame.role is not None:
|
||||||
|
await self.set_role(frame.role)
|
||||||
else:
|
else:
|
||||||
await self.push_frame(frame, direction)
|
await self.push_frame(frame, direction)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user