Integraciones

Texto a voz de KugelAudio para Pipecat

KugelAudio ofrece un servicio oficial de TTS para Pipecat. Coloca KugelAudioTTSService en la etapa de TTS de tu pipeline y el resto del bot queda igual.

Cómo funciona

Qué hace la integración

  • Un TTSService listo para usar

    Emite los frames estándar de Pipecat, así que encaja en cualquier pipeline basado en Pipecat 0.x o 1.x.

  • Reutilización de la conexión

    Llama a prewarm() en tu configuración asíncrona y el servicio reutiliza un mismo WebSocket en todos los turnos, y se reconecta si se corta.

  • Métricas incluidas

    El TTFB de Pipecat y el uso de caracteres se registran automáticamente. KugelAudioEnhanceFilter elimina el ruido de fondo en la entrada.

Código

Un bot de voz local

Micrófono de entrada, STT de Deepgram, LLM de OpenAI, TTS de KugelAudio y altavoz de salida. Define KUGELAUDIO_API_KEY, DEEPGRAM_API_KEY y OPENAI_API_KEY y ejecuta python bot.py.

Install
pip install "kugelaudio[pipecat]" "pipecat-ai[deepgram,local,openai,silero]"
bot.py
import asyncio
import os

from pipecat.audio.vad.silero import SileroVADAnalyzer
from pipecat.frames.frames import TTSSpeakFrame
from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.runner import PipelineRunner
from pipecat.pipeline.task import PipelineTask
from pipecat.processors.aggregators.llm_context import LLMContext
from pipecat.processors.aggregators.llm_response_universal import (
    LLMContextAggregatorPair,
)
from pipecat.services.deepgram.stt import DeepgramSTTService
from pipecat.services.openai.llm import OpenAILLMService
from pipecat.transports.local.audio import (
    LocalAudioTransport,
    LocalAudioTransportParams,
)

from kugelaudio.pipecat import KugelAudioTTSService


async def main():
    transport = LocalAudioTransport(
        LocalAudioTransportParams(
            audio_in_enabled=True,
            audio_out_enabled=True,
            audio_out_sample_rate=24000,
            vad_enabled=True,
            vad_analyzer=SileroVADAnalyzer(),
        )
    )
    stt = DeepgramSTTService(api_key=os.environ["DEEPGRAM_API_KEY"])
    llm = OpenAILLMService(
        api_key=os.environ["OPENAI_API_KEY"],
        settings=OpenAILLMService.Settings(
            model="gpt-4o-mini",
            system_instruction="You are a helpful voice assistant. Keep answers short.",
        ),
    )
    tts = KugelAudioTTSService(
        model="kugel-3.5",
        voice_id=1071,
        sample_rate=24000,  # must match the transport's output rate
        language="en",      # normalization language (default: the voice's)
    )
    tts.prewarm()  # needs the running event loop, so call it inside main()

    context_aggregator = LLMContextAggregatorPair(LLMContext())
    pipeline = Pipeline(
        [
            transport.input(),
            stt,
            context_aggregator.user(),
            llm,
            tts,
            transport.output(),
            context_aggregator.assistant(),
        ]
    )

    task = PipelineTask(pipeline)
    await task.queue_frames([TTSSpeakFrame("Hi! How can I help you?")])
    await PipelineRunner().run(task)


if __name__ == "__main__":
    asyncio.run(main())

Copiado de la documentación en docs.kugelaudio.com/integrations/pipecat. Leer la guía completa

Dale a tu agente una voz de KugelAudio

Crea una cuenta, copia una clave de API en el panel y elige una voz. Todas las integraciones de esta página funcionan con la misma API.