o
    i                     @   sn   d Z ddl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 )z@Groq speech-to-text service implementation using Whisper models.    )	dataclass)Optional)GROQ_TTFS_P99)BaseWhisperSTTServiceTranscription)Languagec                   @   s   e Zd ZdZdS )GroqSTTSettingsz{Settings for the Groq STT service.

    Parameters:
        prompt: Optional prompt text to guide transcription style.
    N)__name__
__module____qualname____doc__ r   r   M/home/ubuntu/.local/lib/python3.10/site-packages/pipecat/services/groq/stt.pyr      s    r   c                       s   e Zd ZU dZeZeed< 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 f fddZdedefddZ  ZS )GroqSTTServicezGroq Whisper speech-to-text service.

    Uses Groq's Whisper API to convert audio to text. Requires a Groq API key
    set via the api_key parameter or GROQ_API_KEY environment variable.
    	_settingsNzhttps://api.groq.com/openai/v1)modelapi_keybase_urllanguageprompttemperaturesettingsttfs_p99_latencyr   r   r   r   r   r   r   r   c                   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 )
aL  Initialize Groq STT service.

        Args:
            model: Whisper model to use.

                .. deprecated:: 0.0.105
                    Use ``settings=GroqSTTService.Settings(model=...)`` instead.

            api_key: Groq API key. Defaults to None.
            base_url: API base URL. Defaults to "https://api.groq.com/openai/v1".
            language: Language of the audio input.

                .. deprecated:: 0.0.105
                    Use ``settings=GroqSTTService.Settings(language=...)`` instead.

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

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

            temperature: Optional sampling temperature between 0 and 1.

                .. deprecated:: 0.0.105
                    Use ``settings=GroqSTTService.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 BaseWhisperSTTService.
        zwhisper-large-v3-turboN)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   kwargsdefault_settings	__class__r   r   r   )   s8   -

zGroqSTTService.__init__audioreturnc                    s   | j jd us	J d|df| j j| jrdnd| j jd}| j jd ur(| j j|d< | j jd ur4| j j|d< | jjjj	di |I d H S )	Nz	audio.wavz	audio/wavverbose_jsonjson)filer   response_formatr   r   r   r   )
r   r   r   _include_prob_metricsr   r   _clientr$   transcriptionscreate)r   r$   r    r   r   r   _transcribey   s   zGroqSTTService._transcribe)r	   r
   r   r   r   r   __annotations__r   r   strr   floatr   bytesr   r.   __classcell__r   r   r"   r   r      s<   
 	
Pr   N)r   dataclassesr   typingr   pipecat.services.stt_latencyr   !pipecat.services.whisper.base_sttr   r   pipecat.transcriptions.languager   r   r   r   r   r   r   r   <module>   s   
