OpenAITTSService: Add warning about changing sample_rate
This commit is contained in:
@@ -28,6 +28,7 @@ from pipecat.frames.frames import (
|
|||||||
LLMTextFrame,
|
LLMTextFrame,
|
||||||
LLMUpdateSettingsFrame,
|
LLMUpdateSettingsFrame,
|
||||||
OpenAILLMContextAssistantTimestampFrame,
|
OpenAILLMContextAssistantTimestampFrame,
|
||||||
|
StartFrame,
|
||||||
StartInterruptionFrame,
|
StartInterruptionFrame,
|
||||||
TTSAudioRawFrame,
|
TTSAudioRawFrame,
|
||||||
TTSStartedFrame,
|
TTSStartedFrame,
|
||||||
@@ -412,6 +413,8 @@ class OpenAITTSService(TTSService):
|
|||||||
The service returns PCM-encoded audio at the specified sample rate.
|
The service returns PCM-encoded audio at the specified sample rate.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
OPENAI_SAMPLE_RATE = 24000 # OpenAI TTS always outputs at 24kHz
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
@@ -421,6 +424,11 @@ class OpenAITTSService(TTSService):
|
|||||||
sample_rate: Optional[int] = None,
|
sample_rate: Optional[int] = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
):
|
):
|
||||||
|
if sample_rate and sample_rate != self.OPENAI_SAMPLE_RATE:
|
||||||
|
logger.warning(
|
||||||
|
f"OpenAI TTS only supports {self.OPENAI_SAMPLE_RATE}Hz sample rate. "
|
||||||
|
f"Current rate of {self.sample_rate}Hz may cause issues."
|
||||||
|
)
|
||||||
super().__init__(sample_rate=sample_rate, **kwargs)
|
super().__init__(sample_rate=sample_rate, **kwargs)
|
||||||
|
|
||||||
self.set_model_name(model)
|
self.set_model_name(model)
|
||||||
@@ -435,6 +443,14 @@ class OpenAITTSService(TTSService):
|
|||||||
logger.info(f"Switching TTS model to: [{model}]")
|
logger.info(f"Switching TTS model to: [{model}]")
|
||||||
self.set_model_name(model)
|
self.set_model_name(model)
|
||||||
|
|
||||||
|
async def start(self, frame: StartFrame):
|
||||||
|
await super().start(frame)
|
||||||
|
if self.sample_rate != self.OPENAI_SAMPLE_RATE:
|
||||||
|
logger.warning(
|
||||||
|
f"OpenAI TTS requires {self.OPENAI_SAMPLE_RATE}Hz sample rate. "
|
||||||
|
f"Current rate of {self.sample_rate}Hz may cause issues."
|
||||||
|
)
|
||||||
|
|
||||||
async def run_tts(self, text: str) -> AsyncGenerator[Frame, None]:
|
async def run_tts(self, text: str) -> AsyncGenerator[Frame, None]:
|
||||||
logger.debug(f"Generating TTS: [{text}]")
|
logger.debug(f"Generating TTS: [{text}]")
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user