Ë
    uPêjV  ã                   ó¢   — d Z ddlmZ ddlmZmZ ddl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mZ d
dlmZmZ ddlmZ  G d„ de«      Zy)zZ
Translates from OpenAI's `/v1/audio/transcriptions` to ElevenLabs's `/v1/speech-to-text`
é    )ÚFinal)ÚHeadersÚResponseN)Úprocess_audio_file)ÚBaseLLMException)Úget_secret_str)ÚAllMessageValuesÚ&OpenAIAudioTranscriptionOptionalParams)Ú	FileTypesÚTranscriptionResponseé   )ÚAudioTranscriptionRequestDataÚBaseAudioTranscriptionConfigé   ©ÚElevenLabsExceptionc                   ó  — e Zd Zedefd„«       Zdedee   fd„Zde	de	dede
de	f
d„Zd	ed
ede	ez  defd„Zdedede	de	def
d„Zdedefd„Z	 ddedz  dedz  dede	de	de
dz  defd„Z	 	 dde	dedee   de	de	dedz  dedz  de	fd„Zy)Ú"ElevenLabsAudioTranscriptionConfigÚreturnc                 óJ   — t         j                  j                  j                  S ©N)ÚlitellmÚLlmProvidersÚ
ELEVENLABSÚvalue)Úselfs    ú/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/elevenlabs/audio_transcription/transformation.pyÚcustom_llm_providerz6ElevenLabsAudioTranscriptionConfig.custom_llm_provider   s   € ä×#Ñ#×.Ñ.×4Ñ4Ð4ó    Úmodelc                 ó
   — ddgS )NÚlanguageÚtemperature© )r   r    s     r   Úget_supported_openai_paramsz>ElevenLabsAudioTranscriptionConfig.get_supported_openai_params   s   € Ø˜MÐ*Ð*r   Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 ó‚   — | j                  |«      }|j                  «       D ]  \  }}||v sŒ|dk(  r||d<   Œ|||<   Œ |S )Nr"   Úlanguage_code)r%   Úitems)r   r&   r'   r    r(   Úsupported_paramsÚkÚvs           r   Úmap_openai_paramsz4ElevenLabsAudioTranscriptionConfig.map_openai_params"   s]   € ð #'×"BÑ"BÀ5Ó"IÐØ&×,Ñ,Ó.ò 	+‰DˆAˆqØÐ$Ò$Ø˜
’?à78�O OÒ4à)*�O AÒ&ð	+ð Ðr   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )N)Úmessager1   r2   r   )r   r0   r1   r2   s       r   Úget_error_classz2ElevenLabsAudioTranscriptionConfig.get_error_class3   s   € Ü"¨=ÀkÐ[bÔcÐcr   Ú
audio_fileÚlitellm_paramsc                 ó�  — t        |«      }d|i}|j                  «       D ]*  \  }}|| j                  |«      v sŒ|€Œt        |«      ||<   Œ, | j	                  ||| j                  |«      ¬«      }	|	j                  «       D ]  \  }}t        |«      ||<   Œ d|j
                  |j                  |j                  fi}
t        ||
¬«      S )a  
        Transforms the audio transcription request for ElevenLabs API.

        Returns AudioTranscriptionRequestData with both form data and files.

        Returns:
            AudioTranscriptionRequestData: Structured data with form data and files
        Úmodel_id)r    r'   Úopenai_paramsÚfile)ÚdataÚfiles)	r   r+   r%   ÚstrÚget_provider_specific_paramsÚfilenameÚfile_contentÚcontent_typer   )r   r    r6   r'   r7   Úprocessed_audioÚ	form_dataÚkeyr   Úprovider_specific_paramsr=   s              r   Ú%transform_audio_transcription_requestzHElevenLabsAudioTranscriptionConfig.transform_audio_transcription_request6   sð   € ô" "4°JÓ!?ˆð '¨Ð.ˆ	ð
 *×/Ñ/Ó1ò 	,‰JˆC�Ø�d×6Ñ6°uÓ=Ò=À%ÑBSä!$ U£�	˜#’ð	,ð +/×*KÑ*KØØ+Ø×:Ñ:¸5ÓAð +Ló +
Ð ð 3×8Ñ8Ó:ò 	(‰JˆC�Ü  ›ZˆI�cŠNð	(ð Ø×(Ñ(Ø×,Ñ,Ø×,Ñ,ðð
ˆô -°)À5ÔIÐIr   Úraw_responsec           	      óÞ  — 	 |j                  «       }|j                  dd«      }t        |¬«      }d|d<   |j                  dd«      |d<   d	|v rlg |d	<   |d	   D ]_  }|j                  d
«      dk(  sŒ|d	   j                  |j                  dd«      |j                  dd«      |j                  dd«      dœ«       Œa ||_        |S # t
        $ r }t        d|› d|j                  › �«      ‚d}~ww xY w)za
        Transforms the raw response from ElevenLabs to the TranscriptionResponse format
        ÚtextÚ )rJ   Ú
transcribeÚtaskr*   Úunknownr"   ÚwordsÚtypeÚwordÚstartr   Úend)rQ   rR   rS   z(Error transforming ElevenLabs response: z
Response: N)ÚjsonÚgetr   ÚappendÚ_hidden_paramsÚ	ExceptionÚ
ValueErrorrJ   )r   rH   Úresponse_jsonrJ   ÚresponseÚ	word_dataÚes          r   Ú&transform_audio_transcription_responsezIElevenLabsAudioTranscriptionConfig.transform_audio_transcription_responsem   s  € ð!	lØ#/×#4Ñ#4Ó#6ˆMð (×+Ñ+¨F°BÓ7ˆDô 4¸Ô>ˆHð  ,ˆH�VÑØ#0×#4Ñ#4°_ÀiÓ#PˆH�ZÑ ð ˜-Ñ'Ø$&�˜Ñ!Ø!.¨wÑ!7ò 	�Ià —}‘} VÓ,°Ó6Ø  Ñ)×0Ñ0à(1¯©°f¸bÓ(AØ)2¯©°wÀÓ)BØ'0§}¡}°U¸AÓ'>ñõð	ð '4ˆHÔ#àˆOøäò 	lÜÐGÈÀsÈ,ÐWc×WhÑWhÐViÐjÓkÐkûð	lús   ‚A-C Á0AC Ã	C,ÃC'Ã'C,NÚapi_baseÚapi_keyÚstreamc                 óT   — |€t        d«      xs d}|j                  d«      }|› d�}|S )NÚELEVENLABS_API_BASEzhttps://api.elevenlabs.ioú/z/v1/speech-to-text)r   Úrstrip)r   r_   r`   r    r'   r7   ra   Úurls           r   Úget_complete_urlz3ElevenLabsAudioTranscriptionConfig.get_complete_url—   s=   € ð ÐÜ%Ð&;Ó<Ò[Ð@[ˆHØ—?‘? 3Ó'ˆð !�zÐ!3Ð4ˆàˆ
r   Úmessagesc                 óh   — |xs t        d«      }|€t        d«      ‚d|i}|j                  |«       |S )NÚELEVENLABS_API_KEYzLElevenLabs API key is required. Set ELEVENLABS_API_KEY environment variable.z
xi-api-key)r   rY   Úupdate)	r   r2   r    rh   r'   r7   r`   r_   Úauth_headers	            r   Úvalidate_environmentz7ElevenLabsAudioTranscriptionConfig.validate_environment©   sF   € ð ÒAœ^Ð,@ÓAˆØˆ?ÜÐkÓlÐlð ˜'ð
ˆð 	�‰�{Ô#Øˆr   r   )NN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr>   r   Úlistr
   r%   ÚdictÚboolr/   Úintr   r   r5   r   r   rG   r   r   r^   rg   r	   rm   r$   r   r   r   r      s¯  „ Øð5 Sò 5ó ð5ð+°ð +¸Ð>dÑ9eó +ðà ðð ðð ð	ð
 ðð 
óð"d¨Sð d¸sð dÈTÐT[É^ð dÐ`pó dð5Jàð5Jð ð5Jð ð	5Jð
 ð5Jð 
'ó5Jðn(làð(lð 
ó(lðb #ñà˜‘*ðð �t‘ðð ð	ð
 ðð ðð �t‘ðð 
óð2 #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
ôr   r   )Ú__doc__Útypingr   Úhttpxr   r   r   Ú,litellm.litellm_core_utils.audio_utils.utilsr   Ú)litellm.llms.base_llm.chat.transformationr   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.openair	   r
   Úlitellm.types.utilsr   r   Ú+base_llm.audio_transcription.transformationr   r   Úcommon_utilsr   r   r$   r   r   ú<module>r€      sB   ðñõ ç #ã Ý KÝ FÝ 7÷÷ A÷õ /ôbÐ)Eõ br   