services(elevenlabs): allow specifying output_format

This commit is contained in:
Aleix Conchillo Flaqué
2024-08-08 22:29:40 -07:00
parent 6a7ab6b8ac
commit d255e954d6
2 changed files with 11 additions and 3 deletions

View File

@@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- `ElevenLabsTTSService` can now specify ElevenLabs input parameters such as
`output_format`.
- `TwilioFrameSerializer` can now specify Twilio's and Pipecat's desired sample
rates to use.

View File

@@ -6,7 +6,8 @@
import aiohttp
from typing import AsyncGenerator
from typing import AsyncGenerator, Literal
from pydantic import BaseModel
from pipecat.frames.frames import AudioRawFrame, ErrorFrame, Frame, MetricsFrame
from pipecat.services.ai_services import TTSService
@@ -15,6 +16,8 @@ from loguru import logger
class ElevenLabsTTSService(TTSService):
class InputParams(BaseModel):
output_format: Literal["pcm_16000", "pcm_22050", "pcm_24000", "pcm_44100"] = "pcm_16000"
def __init__(
self,
@@ -23,12 +26,14 @@ class ElevenLabsTTSService(TTSService):
voice_id: str,
aiohttp_session: aiohttp.ClientSession,
model: str = "eleven_turbo_v2_5",
params: InputParams = InputParams(),
**kwargs):
super().__init__(**kwargs)
self._api_key = api_key
self._voice_id = voice_id
self._model = model
self._params = params
self._aiohttp_session = aiohttp_session
def can_generate_metrics(self) -> bool:
@@ -46,8 +51,8 @@ class ElevenLabsTTSService(TTSService):
payload = {"text": text, "model_id": self._model}
querystring = {
"output_format": "pcm_16000",
"optimize_streaming_latency": 2}
"output_format": self._params.output_format
}
headers = {
"xi-api-key": self._api_key,