o
    㥵ic                     @   s>   d dl mZ d dlZd dlmZ d dlmZ G dd dZdS )    )CallableN)logger)DACc                   @   s$   e Zd Zdd Zdd Zdd ZdS )	VQManagerc                 C   s   |  |  d S )N )selfr   r   [/home/ubuntu/.local/lib/python3.10/site-packages/fish_speech/inference_engine/vq_manager.py__init__   s   zVQManager.__init__c                 C   sh   t j|jd g| jjd}td|j  t| jtr*| jj	|d  |dd 
 S tdt| j )N   )devicezVQ features: )indicesfeature_lengthsr   Unknown model type: )torchtensorshapedecoder_modelr   r   info
isinstancer   decodesqueeze
ValueErrortype)r   codesr   r   r   r   decode_vq_tokens   s   zVQManager.decode_vq_tokensc                 C   s   |rq|d urqt | jdr| jjj}n| jj}| ||}t|| jjd d d d f }tj	|j
d g| jjtjd}td|j
d | dd t| jtrg| j||d d }td|j
  |S td	t| j d }td
 |S )Nspec_transform   )r   dtypezLoaded audio with z.2fz secondsr   zEncoded prompt: r   zNo reference audio provided)hasattrr   r   sample_rate
load_audior   
from_numpytor   r   r   longr   r   r   r   encoder   r   )r   reference_audioenable_reference_audior   reference_audio_contentaudiosaudio_lengthsprompt_tokensr   r   r   encode_reference   s0   

zVQManager.encode_referenceN)__name__
__module____qualname__r	   r   r+   r   r   r   r   r   	   s    r   )typingr   r   logurur   !fish_speech.models.dac.modded_dacr   r   r   r   r   r   <module>   s
    