Remove SambaNovaSTTService
SambaNova no longer offers speech-to-text audio models.
This commit is contained in:
@@ -5,4 +5,3 @@
|
||||
#
|
||||
|
||||
from .llm import *
|
||||
from .stt import *
|
||||
|
||||
@@ -1,143 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2024-2026, Daily
|
||||
#
|
||||
# SPDX-License-Identifier: BSD 2-Clause License
|
||||
#
|
||||
|
||||
"""SambaNova's Speech-to-Text service implementation for real-time transcription."""
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Optional
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from pipecat.services.stt_latency import SAMBANOVA_TTFS_P99
|
||||
from pipecat.services.whisper.base_stt import (
|
||||
BaseWhisperSTTService,
|
||||
Transcription,
|
||||
)
|
||||
from pipecat.transcriptions.language import Language
|
||||
|
||||
|
||||
@dataclass
|
||||
class SambaNovaSTTSettings(BaseWhisperSTTService.Settings):
|
||||
"""Settings for the SambaNova STT service."""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class SambaNovaSTTService(BaseWhisperSTTService): # type: ignore
|
||||
"""SambaNova Whisper speech-to-text service.
|
||||
|
||||
Uses SambaNova's Whisper API to convert audio to text.
|
||||
Requires a SambaNova API key set via the api_key parameter or SAMBANOVA_API_KEY environment variable.
|
||||
"""
|
||||
|
||||
Settings = SambaNovaSTTSettings
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
model: Optional[str] = None,
|
||||
api_key: Optional[str] = None,
|
||||
base_url: str = "https://api.sambanova.ai/v1",
|
||||
language: Optional[Language] = None,
|
||||
prompt: Optional[str] = None,
|
||||
temperature: Optional[float] = None,
|
||||
settings: Optional[Settings] = None,
|
||||
ttfs_p99_latency: Optional[float] = SAMBANOVA_TTFS_P99,
|
||||
**kwargs: Any,
|
||||
) -> None:
|
||||
"""Initialize SambaNova STT service.
|
||||
|
||||
Args:
|
||||
model: Whisper model to use.
|
||||
|
||||
.. deprecated:: 0.0.105
|
||||
Use ``settings=SambaNovaSTTService.Settings(model=...)`` instead.
|
||||
|
||||
api_key: SambaNova API key. Defaults to None.
|
||||
base_url: API base URL. Defaults to "https://api.sambanova.ai/v1".
|
||||
language: Language of the audio input.
|
||||
|
||||
.. deprecated:: 0.0.105
|
||||
Use ``settings=SambaNovaSTTService.Settings(language=...)`` instead.
|
||||
|
||||
prompt: Optional text to guide the model's style or continue a previous segment.
|
||||
|
||||
.. deprecated:: 0.0.105
|
||||
Use ``settings=SambaNovaSTTService.Settings(prompt=...)`` instead.
|
||||
|
||||
temperature: Optional sampling temperature between 0 and 1.
|
||||
|
||||
.. deprecated:: 0.0.105
|
||||
Use ``settings=SambaNovaSTTService.Settings(temperature=...)`` instead.
|
||||
|
||||
settings: Runtime-updatable settings. When provided alongside deprecated
|
||||
parameters, ``settings`` values take precedence.
|
||||
ttfs_p99_latency: P99 latency from speech end to final transcript in seconds.
|
||||
Override for your deployment. See https://github.com/pipecat-ai/stt-benchmark
|
||||
**kwargs: Additional arguments passed to `pipecat.services.whisper.base_stt.BaseWhisperSTTService`.
|
||||
"""
|
||||
# --- 1. Hardcoded defaults ---
|
||||
default_settings = self.Settings(
|
||||
model="Whisper-Large-v3",
|
||||
language=Language.EN,
|
||||
prompt=None,
|
||||
temperature=None,
|
||||
)
|
||||
|
||||
# --- 2. Deprecated direct-arg overrides ---
|
||||
if model is not None:
|
||||
self._warn_init_param_moved_to_settings("model", "model")
|
||||
default_settings.model = model
|
||||
if language is not None:
|
||||
self._warn_init_param_moved_to_settings("language", "language")
|
||||
default_settings.language = language
|
||||
if prompt is not None:
|
||||
self._warn_init_param_moved_to_settings("prompt", "prompt")
|
||||
default_settings.prompt = prompt
|
||||
if temperature is not None:
|
||||
self._warn_init_param_moved_to_settings("temperature", "temperature")
|
||||
default_settings.temperature = temperature
|
||||
|
||||
# --- 3. (no params object for this service) ---
|
||||
|
||||
# --- 4. Settings delta (canonical API, always wins) ---
|
||||
if settings is not None:
|
||||
default_settings.apply_update(settings)
|
||||
|
||||
super().__init__(
|
||||
api_key=api_key,
|
||||
base_url=base_url,
|
||||
settings=default_settings,
|
||||
ttfs_p99_latency=ttfs_p99_latency,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
async def _transcribe(self, audio: bytes) -> Transcription:
|
||||
assert self._settings.language is not None
|
||||
|
||||
if self._include_prob_metrics:
|
||||
# https://docs.sambanova.ai/docs/en/features/audio#request-parameters
|
||||
logger.warning(
|
||||
"SambaNova STT does not support probability metrics "
|
||||
"(include_prob_metrics parameter has no effect). "
|
||||
"Check their docs: https://docs.sambanova.ai/docs/en/features/audio#request-parameters for more details."
|
||||
)
|
||||
|
||||
# Build kwargs dict with only set parameters
|
||||
kwargs = {
|
||||
"file": ("audio.wav", audio, "audio/wav"),
|
||||
"model": self._settings.model,
|
||||
"response_format": "json",
|
||||
"language": self._settings.language,
|
||||
}
|
||||
|
||||
if self._settings.prompt is not None:
|
||||
kwargs["prompt"] = self._settings.prompt
|
||||
|
||||
if self._settings.temperature is not None:
|
||||
kwargs["temperature"] = self._settings.temperature
|
||||
|
||||
return await self._client.audio.transcriptions.create(**kwargs)
|
||||
@@ -46,7 +46,6 @@ GRADIUM_TTFS_P99: float = 1.61
|
||||
GROQ_TTFS_P99: float = 1.54
|
||||
OPENAI_TTFS_P99: float = 2.01
|
||||
OPENAI_REALTIME_TTFS_P99: float = 1.66
|
||||
SAMBANOVA_TTFS_P99: float = 2.20
|
||||
SARVAM_TTFS_P99: float = 1.17
|
||||
SONIOX_TTFS_P99: float = 0.35
|
||||
SPEECHMATICS_TTFS_P99: float = 0.74
|
||||
|
||||
Reference in New Issue
Block a user