
    qiv                         d Z ddl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)z@Groq speech-to-text service implementation using Whisper models.    )	dataclass)Optional)_warn_deprecated_param)GROQ_TTFS_P99)BaseWhisperSTTServiceBaseWhisperSTTSettingsTranscription)Languagec                       e Zd ZdZy)GroqSTTSettingsz{Settings for the Groq STT service.

    Parameters:
        prompt: Optional prompt text to guide transcription style.
    N)__name__
__module____qualname____doc__     K/opt/pipecat/venv/lib/python3.12/site-packages/pipecat/services/groq/stt.pyr   r      s     	r   r   c                        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ZdedefdZ x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                   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)
a,  Initialize Groq STT service.

        Args:
            model: Whisper model to use.

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

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

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

            temperature: Optional sampling temperature between 0 and 1.

                .. deprecated:: 0.0.105
                    Use ``settings=GroqSTTSettings(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   )r   language_to_service_languager
   ENr   r   r   r   r   apply_updatesuper__init__)selfr   r   r   r   r   r   r   r   kwargsdefault_settings	__class__s              r   r$   zGroqSTTService.__init__+   s    Z +*66x{{C	
 "7OWE%*"":
K(,(I(I((S%"8_hG&,#""=/=Q+6(
 ))(3 	
%-		

 	
r   audioreturnc                   K   | j                   j                  J d|df| j                   j                  | j                  rdnd| j                   j                  d}| j                   j                  | j                   j                  |d<   | j                   j
                  | j                   j
                  |d<    | j                  j                  j                  j                  di | d {   S 7 w)	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&   s      r   _transcribezGroqSTTService._transcribe{   s     ~~&&222 !%5^^))151K1K~QW//
 >>  ,#~~44F8>>%%1$(NN$>$>F=!=T\\''66==GGGGGs   C*C3,C1-C3)r   r   r   r   r   Settings__annotations__r   r   strr
   floatr$   bytesr	   r4   __classcell__)r(   s   @r   r   r   !   s     H
  $!%8'+ $'+.2,9N
 }N
 #	N

 N
 8$N
 N
 e_N
 ?+N
 #5/N
`Hu H Hr   r   N)r   dataclassesr   typingr   pipecat.services.settingsr   pipecat.services.stt_latencyr   !pipecat.services.whisper.base_sttr   r   r	   pipecat.transcriptions.languager
   r   r   r   r   r   <module>rA      sS    G !  < 6 
 5 	, 	 	lH* lHr   