o
    il                     @   s~   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mZ ddlmZ eG dd	 d	ejZG d
d deZdS )zNSambaNova's Speech-to-Text service implementation for real-time transcription.    )	dataclass)AnyOptional)logger)SAMBANOVA_TTFS_P99)BaseWhisperSTTServiceTranscription)Languagec                   @   s   e Zd ZdZdS )SambaNovaSTTSettingsz'Settings for the SambaNova STT service.N)__name__
__module____qualname____doc__ r   r   R/home/ubuntu/.local/lib/python3.10/site-packages/pipecat/services/sambanova/stt.pyr
      s    r
   c                       s   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dZdedefddZ  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                   s   | j dtjddd}
|dur| dd ||
_|dur$| dd ||
_|dur1| dd ||
_|dur>| dd ||
_|durG|
| t	 j
d	|||
|d|	 dS )
a  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`.
        zWhisper-Large-v3N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )Settingsr	   EN"_warn_init_param_moved_to_settingsr   r   r   r   apply_updatesuper__init__)selfr   r   r   r   r   r   r   r   r   default_settings	__class__r   r   r!   &   s8   -

zSambaNovaSTTService.__init__audioc                    s   | j jd us	J | jrtd d|df| j jd| j jd}| j jd ur+| j j|d< | j jd ur7| j j|d< | jj	j
jdi |I d H S )	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   r   r   r   _transcribev   s    zSambaNovaSTTService._transcribe)r   r   r   r   r
   r   r   r   strr	   floatr   r!   bytesr   r0   __classcell__r   r   r$   r   r      sB    	
Pr   N)r   dataclassesr   typingr   r   logurur   pipecat.services.stt_latencyr   !pipecat.services.whisper.base_sttr   r   pipecat.transcriptions.languager	   r   r
   r   r   r   r   r   <module>   s   