add tracking headers to Hume service

This commit is contained in:
ivaaan
2025-12-05 19:00:47 +01:00
parent fed6a8b669
commit 0ffaa09c95

View File

@@ -8,9 +8,11 @@ import base64
import os import os
from typing import Any, AsyncGenerator, Optional from typing import Any, AsyncGenerator, Optional
import httpx
from loguru import logger from loguru import logger
from pydantic import BaseModel from pydantic import BaseModel
from pipecat import __version__
from pipecat.frames.frames import ( from pipecat.frames.frames import (
ErrorFrame, ErrorFrame,
Frame, Frame,
@@ -26,11 +28,7 @@ from pipecat.utils.tracing.service_decorators import traced_tts
try: try:
from hume import AsyncHumeClient from hume import AsyncHumeClient
from hume.tts import ( from hume.tts import FormatPcm, PostedUtterance, PostedUtteranceVoiceWithId
FormatPcm,
PostedUtterance,
PostedUtteranceVoiceWithId,
)
from hume.tts.types import TimestampMessage from hume.tts.types import TimestampMessage
except ModuleNotFoundError as e: # pragma: no cover - import-time guidance except ModuleNotFoundError as e: # pragma: no cover - import-time guidance
logger.error(f"Exception: {e}") logger.error(f"Exception: {e}")
@@ -40,6 +38,12 @@ except ModuleNotFoundError as e: # pragma: no cover - import-time guidance
HUME_SAMPLE_RATE = 48_000 # Hume TTS streams at 48 kHz HUME_SAMPLE_RATE = 48_000 # Hume TTS streams at 48 kHz
# Tracking headers for Hume API requests
DEFAULT_HEADERS = {
"X-Hume-Client-Name": "pipecat",
"X-Hume-Client-Version": __version__,
}
class HumeTTSService(WordTTSService): class HumeTTSService(WordTTSService):
"""Hume Octave Text-to-Speech service. """Hume Octave Text-to-Speech service.
@@ -104,7 +108,11 @@ class HumeTTSService(WordTTSService):
**kwargs, **kwargs,
) )
self._client = AsyncHumeClient(api_key=api_key) # Create a custom httpx.AsyncClient with tracking headers
# Headers are included in all requests made by the Hume SDK
custom_http_client = httpx.AsyncClient(headers=DEFAULT_HEADERS)
self._client = AsyncHumeClient(api_key=api_key, httpx_client=custom_http_client)
self._params = params or HumeTTSService.InputParams() self._params = params or HumeTTSService.InputParams()
# Store voice in the base class (mirrors other services) # Store voice in the base class (mirrors other services)