add tracking headers to Hume service
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user