Ë
    uPêjÞ   ã                   ó¾   — d dl mZmZmZmZ d dlZd dlmZmZ d dl	m
Z
 d dlZer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 d d
lmZmZmZ ddlmZ  G d„ de«      Zy)é    )ÚTYPE_CHECKINGÚFinalÚOptionalÚcastN)ÚAsyncOpenAIÚOpenAI)Ú	BaseModel)ÚClientSession)Úget_audio_file_name)ÚLogging)ÚBaseAudioTranscriptionConfig)Ú	FileTypes)ÚTranscriptionResponseÚ convert_to_model_response_objectÚ extract_duration_from_srt_or_vtté   )ÚOpenAIChatCompletionc                   ó  — e Zd Zdededeej                  z  fd„Zde	dedeej                  z  fd„Z
	 	 	 	 dded	ed
edededededededz  dedz  dededz  ded   defd„Z	 	 	 	 	 dd	ededededededz  dedz  ded   fd„Zy)ÚOpenAIAudioTranscriptionÚopenai_aclientÚdataÚtimeoutc              ƒ   ó   K  — 	  |j                   j                  j                  j                  di |¤d|i¤Žƒ d{  –—† }t	        |j
                  «      }|j                  «       }||fS 7 Œ-# t        $ r}|‚d}~ww xY w­w)úÓ
        Helper to:
        - call openai_aclient.audio.transcriptions.with_raw_response when litellm.return_response_headers is True
        - call openai_aclient.audio.transcriptions.create by default
        r   N© )ÚaudioÚtranscriptionsÚwith_raw_responseÚcreateÚdictÚheadersÚparseÚ	Exception)Úselfr   r   r   Úraw_responser!   ÚresponseÚes           úo/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/openai/transcriptions/handler.pyÚ(make_openai_audio_transcriptions_requestzAOpenAIAudioTranscription.make_openai_audio_transcriptions_request   s�   è ø€ ð	Ø!] ×!5Ñ!5×!DÑ!D×!VÑ!V×!]Ñ!]Ñ!vÐ`dÑ!vÐnuÒ!v×vˆLÜ! ,×"6Ñ"6Ó7ˆGØ*×0Ñ0Ó2ˆHà˜HÐ$Ð$ð	 wùô
 ò 	ØˆGûð	üs8   ‚A>„7A+ »A)¼,A+ Á(A>Á)A+ Á+	A;Á4A6Á6A;Á;A>Úopenai_clientc                 ód  — 	 t         j                  du r] |j                  j                  j                  j
                  di |¤d|i¤Ž}t        |j                  «      }|j                  «       }||fS  |j                  j                  j
                  di |¤d|i¤Ž}d|fS # t        $ r}|‚d}~ww xY w)r   Tr   Nr   )
ÚlitellmÚreturn_response_headersr   r   r   r   r    r!   r"   r#   )r$   r*   r   r   r%   r!   r&   r'   s           r(   Ú-make_sync_openai_audio_transcriptions_requestzFOpenAIAudioTranscription.make_sync_openai_audio_transcriptions_request0   s²   € ð
	Ü×.Ñ.°$Ñ6ØZ˜}×2Ñ2×AÑA×SÑS×ZÑZÑsÐ]aÑsÐkrÒs�Ü!% l×&:Ñ&:Ó!;�Ø'×-Ñ-Ó/�Ø Ð(Ð(àD˜=×.Ñ.×=Ñ=×DÑDÑ]ÀtÑ]ÐU\Ò]�Ø˜X�~Ð%øÜò 	ØˆGûð	ús   ‚A.B Á1-B Â	B/Â(B*Â*B/NÚmodelÚ
audio_fileÚoptional_paramsÚlitellm_paramsÚmodel_responseÚmax_retriesÚlogging_objÚapi_keyÚapi_baseÚatranscriptionÚprovider_configÚshared_sessionr
   Úreturnc                 ó\  — |�0|j                  ||||¬«      }t        t        |j                  «      }n||dœ|¥}|du r| j	                  |||||	|
||||¬«
      S | j                  d|	|
|||¬«      }|j                  d|j                  |j                  j                  d|dœ¬	«       | j                  |||¬
«      \  }}t        |t        «      r|j                  «       }nt        |¬«      j                  «       }|j                  t!        |«      |	d|i|¬«       |ddœ}t#        |||d¬«      }|S )z4
        Handle audio transcription request
        N)r/   r0   r1   r2   )r/   ÚfileT)
r0   r   r3   r   r6   r7   Úclientr4   r5   r:   F)Úis_asyncr6   r7   r   r4   r>   ©r7   r8   Úcomplete_input_dict©Úinputr6   Úadditional_args)r*   r   r   ©ÚtextrA   ©rC   r6   rD   Úoriginal_responseÚopenai©r/   Úcustom_llm_providerÚaudio_transcription©Úresponse_objectÚmodel_response_objectÚhidden_paramsÚresponse_type)Ú%transform_audio_transcription_requestr   r    r   Úasync_audio_transcriptionsÚ_get_openai_clientÚpre_callr6   Ú	_base_urlÚ_uri_referencer.   Ú
isinstancer	   Ú
model_dumpr   Ú	post_callr   r   )r$   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r>   r8   r9   r:   Útransformed_datar   r*   Ú_r&   Ústringified_responserP   Úfinal_responses                          r(   Úaudio_transcriptionsz-OpenAIAudioTranscription.audio_transcriptionsG   sœ  € ð( Ð&Ø&5×&[Ñ&[ØØ%Ø /Ø-ð	 '\ó 'Ðô œÐ.×3Ñ3Ó4‰Dà"¨JÑJ¸/ÐJˆDà˜TÑ!Ø×2Ñ2Ø%ØØ-ØØØ!ØØ'Ø'Ø-ð 3ó ð ð (,×'>Ñ'>ØØØØØ#Øð (?ó (
ˆð 	×ÑØØ!×)Ñ)à)×3Ñ3×BÑBØ"&Ø'+ñð 	ô 	
ð ×HÑHØ'ØØð Ió 
‰ˆˆ8ô �h¤	Ô*Ø#+×#6Ñ#6Ó#8Ñ ä#8¸hÔ#G×#RÑ#RÓ#TÐ ð 	×ÑÜ% jÓ1ØØ2°DÐ9Ø2ð	 	ô 	
ð */ÀxÑPˆÜ7WØ0Ø"0Ø'Ø/ô	8
ˆð Ðó    c           	   ƒ   ó’  K  — 	 | j                  d||||	||
¬«      }|j                  d |j                  |j                  j                  d|dœ¬«       | j                  |||¬«      ƒ d {  –—† \  }}||j                  d<   t        |t        «      r|j                  «       }n*t        |«      }t        |¬«      j                  «       }||d<   |j                  t        |«      |d	|i|¬
«       |j                  dd«      }|ddœ}t        |||d¬«      S 7 Œ§# t         $ r(}|j                  t"        |t%        |«      ¬«       |‚d }~ww xY w­w)NT)r?   r6   r7   r   r4   r>   r:   r@   rB   )r   r   r   Úresponse_headersrE   Ú_audio_transcription_durationrA   rG   r/   z	whisper-1rI   rJ   rL   rM   )rC   r6   rH   )rT   rU   r6   rV   rW   r)   Úmodel_call_detailsrX   r	   rY   r   r   rZ   r   Úgetr   r#   rC   Ústr)r$   r0   r   r3   r   r5   r6   r7   r>   r4   r:   r   r!   r&   r]   ÚdurationÚactual_modelrP   r'   s                      r(   rS   z3OpenAIAudioTranscription.async_audio_transcriptions£   s�  è ø€ ð9	Ø15×1HÑ1HØØØ!ØØ'ØØ-ð 2Ió 2ˆNð × Ñ ØØ&×.Ñ.à .× 8Ñ 8× GÑ GØ&*Ø+/ñ!ð !ô ð '+×&SÑ&SØ-ØØð 'Tó '÷ !ÑˆG�Xð
 BIˆK×*Ñ*Ð+=Ñ>Ü˜(¤IÔ.Ø'/×':Ñ':Ó'<Ñ$ä"BÀ8Ó"L�Ü'<À(Ô'K×'VÑ'VÓ'XÐ$ØHPÐ$Ð%DÑEà×!Ñ!Ü)¨*Ó5ØØ!6¸Ð =Ø"6ð	 "ô ð #'§(¡(¨7°KÓ"@ˆLØ-9ÐRZÑ#[ˆMä3Ø 4Ø&4Ø+Ø3ô	ð ð/!ùô: ò 	à×!Ñ!ÜØÜ"% a£&ð "ô ð
 ˆGûð	üs<   ‚E„A%D Á)DÁ*B&D ÄEÄD Ä	EÄ#D?Ä?EÅE)NFNN)NNNNN)Ú__name__Ú
__module__Ú__qualname__r   r    ÚfloatÚhttpxÚTimeoutr)   r   r.   rf   r   r   ÚintÚLiteLLMLoggingObjÚboolr   r   r_   rS   r   r`   r(   r   r      s�  „ ðà#ðð ðð ˜Ÿ™Ñ&ó	ð(àðð ðð ˜Ÿ™Ñ&ó	ðF Ø$Ø?CØ48ñZàðZð ðZð ð	Zð
 ðZð .ðZð ðZð ðZð 'ðZð �t‘ðZð ˜‘*ðZð ðZð 6¸Ñ<ðZð ! Ñ1ðZð  
ó!ZðF #Ø#ØØØ48ñFàðFð ðFð .ð	Fð
 ðFð 'ðFð �t‘ðFð ˜‘*ðFð ! Ñ1ôFr`   r   )Útypingr   r   r   r   rm   rI   r   r   Úpydanticr	   r,   Úaiohttpr
   Ú,litellm.litellm_core_utils.audio_utils.utilsr   Ú*litellm.litellm_core_utils.litellm_loggingr   rp   Ú8litellm.llms.base_llm.audio_transcription.transformationr   Úlitellm.types.utilsr   Úlitellm.utilsr   r   r   r   r   r   r`   r(   ú<module>rz      sK   ðß 7Ó 7ã ß &Ý ã áÝ%Ý LÝ Sõõ *÷ñ õ *ôOÐ3õ Or`   