
    qi
                         d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ ddlmZ e G d	 d
e             Z G d de      Zy)zNSambaNova's Speech-to-Text service implementation for real-time transcription.    )	dataclass)AnyOptional)logger)_warn_deprecated_param)SAMBANOVA_TTFS_P99)BaseWhisperSTTServiceBaseWhisperSTTSettingsTranscription)Languagec                       e Zd ZdZy)SambaNovaSTTSettingsz'Settings for the SambaNova STT service.N)__name__
__module____qualname____doc__     P/opt/pipecat/venv/lib/python3.12/site-packages/pipecat/services/sambanova/stt.pyr   r      s    1r   r   c                        e Zd ZdZeZdddddddeddee   dee   dedee	   d	ee   d
ee
   dee   dee
   deddf fdZdedefdZ xZS )SambaNovaSTTServicezSambaNova 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.
    Nzhttps://api.sambanova.ai/v1)modelapi_keybase_urllanguageprompttemperaturesettingsttfs_p99_latencyr   r   r   r   r   r   r   r   kwargsreturnc                   t        d| j                  t        j                        dd      }
|t	        dt         d       ||
_        |'t	        dt         d       | j                  |      |
_        |t	        dt         d       ||
_        |t	        dt         d       ||
_        ||
j                  |       t        | ,  d	|||
|d|	 y)
ak  Initialize SambaNova STT service.

        Args:
            model: Whisper model to use.

                .. deprecated:: 0.0.105
                    Use ``settings=SambaNovaSTTSettings(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=SambaNovaSTTSettings(language=...)`` instead.

            prompt: Optional text to guide the model's style or continue a previous segment.

                .. deprecated:: 0.0.105
                    Use ``settings=SambaNovaSTTSettings(prompt=...)`` instead.

            temperature: Optional sampling temperature between 0 and 1.

                .. deprecated:: 0.0.105
                    Use ``settings=SambaNovaSTTSettings(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`.
        zWhisper-Large-v3N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   language_to_service_languager   ENr   r   r   r   r   apply_updatesuper__init__)selfr   r   r   r   r   r   r   r   r    default_settings	__class__s              r   r'   zSambaNovaSTTService.__init__(   s    Z 0$66x{{C	
 "7,@'J%*"":/CZP(,(I(I((S%"8-A8L&,#""=2FV+6(
 ))(3 	
%-		

 	
r   audioc                   K   | j                   j                  J | j                  rt        j                  d       d|df| j                   j
                  d| j                   j                  d}| j                   j                  | j                   j                  |d<   | j                   j                  | j                   j                  |d<    | j                  j                  j                  j                  di | d {   S 7 w)	NzSambaNova 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.z	audio.wavz	audio/wavjson)filer   response_formatr   r   r   r   )	_settingsr   _include_prob_metricsr   warningr   r   r   _clientr+   transcriptionscreate)r(   r+   r    s      r   _transcribezSambaNovaSTTService._transcribex   s     ~~&&222%%NNz !%5^^))%//	
 >>  ,#~~44F8>>%%1$(NN$>$>F=!=T\\''66==GGGGGs   C=D?D D)r   r   r   r   r   Settingsr   r   strr   floatr   r'   bytesr   r6   __classcell__)r*   s   @r   r   r      s     $H
  $!%5'+ $'+37,>N
 }N
 #	N

 N
 8$N
 N
 e_N
 /0N
 #5/N
 N
 
N
`Hu H Hr   r   N)r   dataclassesr   typingr   r   logurur   pipecat.services.settingsr   pipecat.services.stt_latencyr   !pipecat.services.whisper.base_sttr	   r
   r   pipecat.transcriptions.languager   r   r   r   r   r   <module>rC      sV    U !    < ; 
 5 	1 	 	rH/ rHr   