o
    㥵iQ                     @   s  d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZ G dd	 d	e	ZG d
d de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZdS )    N)	dataclass)Literal)	BaseModelFieldconintmodel_validator)SkipValidation)	Annotated)TextPartVQPartc                   @   s2   e Zd ZU dZed ed< eeee   ed< dS )ServeVQPartvqtypecodesN)	__name__
__module____qualname__r   r   __annotations__r   listint r   r   L/home/ubuntu/.local/lib/python3.10/site-packages/fish_speech/utils/schema.pyr      s   
 r   c                   @   &   e Zd ZU dZed ed< eed< dS )ServeTextParttextr   N)r   r   r   r   r   r   strr   r   r   r   r         
 r   c                   @   r   )ServeAudioPartaudior   N)r   r   r   r   r   r   bytesr   r   r   r   r      r   r   c                   @   sj   e Zd ZU eed< dZeed< dZeed< dZ	eed< dZ
eed< d	Zeed
< dZeed< dZeed< dS )ServeRequestcontentiX  max_new_tokensgffffff?top_pg333333?repetition_penaltytemperatureF	streaming   num_samples      ?early_stop_thresholdN)r   r   r   dictr   r"   r   r#   floatr$   r%   r&   boolr(   r*   r   r   r   r   r       s   
 r    c                   @      e Zd ZU ee ed< dS )ServeVQGANEncodeRequestaudiosNr   r   r   r   r   r   r   r   r   r   r/   *      
 r/   c                   @   &   e Zd ZU eeeee    ed< dS )ServeVQGANEncodeResponsetokensNr   r   r   r   r   r   r   r   r   r   r   r4   /      
 r4   c                   @   r3   )ServeVQGANDecodeRequestr5   Nr6   r   r   r   r   r8   3   r7   r8   c                   @   r.   )ServeVQGANDecodeResponser0   Nr1   r   r   r   r   r9   7   r2   r9   c                   @   s>   e Zd ZU eed< eed< edddd Zdefdd	Zd
S )ServeReferenceAudior   r   before)modec              
   C   s`   | d}t|tr.t|dkr.z
t||d< W |S  ty- } zW Y d }~|S d }~ww |S )Nr      )get
isinstancer   lenbase64	b64decode	Exception)clsvaluesr   er   r   r   decode_audio@   s   

z ServeReferenceAudio.decode_audioreturnc                 C   s   d| j dt| j dS )NzServeReferenceAudio(text=z, audio_size=))r   r@   r   )selfr   r   r   __repr__M   s   zServeReferenceAudio.__repr__N)	r   r   r   r   r   r   r   rG   rK   r   r   r   r   r:   <   s   
 
r:   c                   @   s  e Zd ZU eed< dZeeeddddf ed< dZ	e
d	 ed
< g Zee ed< dZedB ed< dZedB ed< dZe
d ed< dZeed< dZeed< dZeed< dZeeeddddf ed< dZeeeddddf ed< dZeeeddddf ed< G d d! d!ZdS )"ServeTTSRequestr      d   i,  T)gelestrictchunk_lengthwav)rS   pcmmp3format
referencesNreference_idseedoff)onrZ   use_memory_cache	normalizeFr&   i   r"   g?g?r)   r#   g?g?g       @r$   r%   c                   @   s   e Zd ZdZdS )zServeTTSRequest.ConfigTN)r   r   r   arbitrary_types_allowedr   r   r   r   Configg   s    r_   )r   r   r   r   r   rR   r	   r   r   rV   r   rW   r   r:   rX   rY   r\   r]   r-   r&   r"   r#   r,   r   r$   r%   r_   r   r   r   r   rL   Q   s   
 rL   )rA   osqueuedataclassesr   typingr   torchpydanticr   r   r   r   pydantic.functional_validatorsr   typing_extensionsr	   fish_speech.content_sequencer
   r   r   r   r   r    r/   r4   r8   r9   r:   rL   r   r   r   r   <module>   s(    