From d6c45ef4119452e2a8eb998e356aa7809cd3383e Mon Sep 17 00:00:00 2001 From: BobRandomNumber Date: Tue, 29 Apr 2025 21:50:33 -0400 Subject: [PATCH] add audio_prompt --- README.md | 95 +++++++----- dia_lib/audio.py | 124 ++++++++-------- dia_lib/model.py | 266 ++++++++++++++++++++++++---------- example_workflows/DiaTTS.json | 12 +- example_workflows/DiaTTS.png | Bin 112838 -> 110827 bytes nodes.py | 128 +++++++++++++--- 6 files changed, 415 insertions(+), 210 deletions(-) diff --git a/README.md b/README.md index 6f94b6d..250e30e 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,8 @@ # ComfyUI Dia TTS Nodes -This node pack partially integrates the [Nari-Labs Dia](https://github.com/nari-labs/dia) 1.6b text-to-speech model into ComfyUI using the safetensors file nari-labs provided. -This node pack does not have audio prompt yet, on to do list. +This is an experimental WIP node pack that integrates the [Nari-Labs Dia](https://github.com/nari-labs/dia) 1.6b text-to-speech model into ComfyUI using safetensors. -Dia allows generating dialogue with speaker tags (`[S1]`, `[S2]`) and non-verbal sounds (`(laughs)`, etc.). +Dia allows generating dialogue with speaker tags (`[S1]`, `[S2]`) and non-verbal sounds (`(laughs)`, etc.). It also supports **audio prompting** for voice cloning or style transfer. It **requires a CUDA-enabled GPU**. @@ -15,9 +14,10 @@ It **requires a CUDA-enabled GPU**. 1. Ensure you have a CUDA-enabled GPU and the necessary NVIDIA drivers installed. 2. Download the Dia-1.6B model safetensors file from Hugging Face: - * **Direct Download URL:** [https://huggingface.co/nari-labs/Dia-1.6B/blob/main/model.safetensors](https://huggingface.co/nari-labs/Dia-1.6B/resolve/main/model.safetensors?download=true) -3. Place the downloaded `.safetensors` file into the `diffusion_models` directory (e.g., `ComfyUI/models/diffusion_models/`). -4. You might want to rename it to `Dia-1.6B.safetensors` for clarity. + * **Model Page:** [https://huggingface.co/nari-labs/Dia-1.6B](https://huggingface.co/nari-labs/Dia-1.6B) + * **Direct Download URL:** [https://huggingface.co/nari-labs/Dia-1.6B/resolve/main/model.safetensors?download=true](https://huggingface.co/nari-labs/Dia-1.6B/resolve/main/model.safetensors?download=true) +3. Place the downloaded `.safetensors` file into your ComfyUI `diffusion_models` directory (e.g., `ComfyUI/models/diffusion_models/`). +4. You might want to rename the file to `Dia-1.6B.safetensors` for clarity. 5. Navigate to your `ComfyUI/custom_nodes/` directory. 6. Clone this repository: ```bash @@ -25,8 +25,8 @@ It **requires a CUDA-enabled GPU**. ``` Alternatively, download the ZIP and extract it into `custom_nodes`. 7. Install the required dependencies: - * Activate ComfyUI's Python environment (e.g., `source ./venv/bin/activate`). - * Navigate to the node directory: `cd ComfyUI/custom_nodes/ComfyUI-DiaTest` + * Activate ComfyUI's Python environment (e.g., `source ./venv/bin/activate` or `.\venv\Scripts\activate` on Windows). + * Navigate to the node directory: `cd ComfyUI/custom_nodes/ComfyUI-DiaTTS` * Install requirements: `pip install -r requirements.txt` 8. Restart ComfyUI. @@ -34,7 +34,7 @@ It **requires a CUDA-enabled GPU**. ### Dia 1.6b Loader (`DiaLoader`) -Loads the Dia-1.6B TTS model from a local `.safetensors` file located in your `diffusion_models` directory. Loads the model weights and the required DAC codec onto the GPU. +Loads the Dia-1.6B TTS model from a local `.safetensors` file located in your `diffusion_models` directory. Loads the model weights and the required DAC codec onto the GPU. Caches the loaded model to speed up subsequent runs with the same checkpoint. **Inputs:** @@ -46,50 +46,65 @@ Loads the Dia-1.6B TTS model from a local `.safetensors` file located in your `d ### Dia TTS Generate (`DiaGenerate`) -Generates audio using a pre-loaded Dia model provided by the `DiaLoader` node. Displays a progress bar during generation. +Generates audio using a pre-loaded Dia model provided by the `DiaLoader` node. Displays a progress bar during generation. Supports optional audio prompting. **Inputs:** * `dia_model`: The `DIA_MODEL` output from the `DiaLoader` node. -* `text`: The main text transcript to generate audio for. Use `[S1]`, `[S2]` for speaker turns and parentheses for non-verbals like `(laughs)`. -* `max_tokens`: Maximum number of audio tokens to generate (controls length). -* `cfg_scale`: Classifier-Free Guidance scale. -* `temperature`: Sampling temperature. -* `top_p`: Nucleus sampling probability. -* `cfg_filter_top_k`: Top-K filtering applied during CFG. -* `speed_factor`: Adjusts the speed of the generated audio (1.0 = original speed). +* `text`: The main text transcript to generate audio for. Use `[S1]`, `[S2]` for speaker turns and parentheses for non-verbals like `(laughs)`. **If using `audio_prompt`, this input MUST contain the transcript of the audio prompt first, followed by the text you want to generate.** +* `max_tokens`: Maximum number of audio tokens to generate (controls length). Default is 1720. Max usable is 3072. +* `cfg_scale`: Classifier-Free Guidance scale. Higher values increase adherence to the text. (Default: 3.0) +* `temperature`: Sampling temperature. Lower values are more deterministic, higher values increase randomness. (Default: 1.3) +* `top_p`: Nucleus sampling probability. Filters vocabulary to most likely tokens. (Default: 0.95) +* `cfg_filter_top_k`: Top-K filtering applied during CFG. (Default: 35) +* `speed_factor`: Adjusts the speed of the generated audio (1.0 = original speed). (Default: 0.94) * `seed`: Random seed for reproducibility. +* `audio_prompt` (Optional): An `AUDIO` input (e.g., from a `LoadAudio` node) to condition the generation, enabling voice cloning or style transfer. **Outputs:** -* `audio`: The generated audio (`AUDIO` format: `{'waveform': tensor[B,C,T], 'sample_rate': sr}`), ready to be saved or previewed. Sample rate is 44100 Hz. +* `audio`: The generated audio (`AUDIO` format: `{'waveform': tensor[B, C, T], 'sample_rate': sr}`), ready to be saved or previewed. Sample rate is always 44100 Hz. ## Usage Example -1. Add the `Dia 1.6b Loader` node from the `audio/DiaTTS` category. -2. Select your Dia model file (e.g., `dia-1.6B.safetensors`) from the `ckpt_name` dropdown. -3. Add the `Dia TTS Generate` node (also from `audio/DiaTTS`). -4. Connect the `dia_model` output of the Loader node to the `dia_model` input of the Generate node. -5. Enter your dialogue script into the `text` input on the Generate node. - - Control speaker dialogue via `[S1]` and `[S2]` ect., tags. - - Add tags like `(laughs)`, `(clears throat)`, `(sighs)`, `(gasps)`, `(coughs)`, `(singing)`, `(sings)`, `(mumbles)`, `(beep)`, `(groans)`, `(sniffs)`, `(claps)`, `(screams)`, `(inhales)`, `(exhales)`, `(applause)`, `(burps)`, `(humming)`, `(sneezes)`, `(chuckle)`, `(whistles)` +### Basic Generation - These verbal tags will be recognized, but may result in unexpected output. - -7. Adjust generation parameters on the Generate node as needed. -8. Connect the `audio` output of the Generate node to a `SaveAudio` or `PreviewAudio` node. -9. Queue the prompt. +1. Add the `Dia 1.6b Loader` node (`audio/DiaTTS`). +2. Select your Dia model file (e.g., `Dia-1.6B.safetensors`) from the `ckpt_name` dropdown. +3. Add the `Dia TTS Generate` node (`audio/DiaTTS`). +4. Connect the `dia_model` output of the Loader to the `dia_model` input of the Generate node. +5. Enter your dialogue script into the `text` input on the Generate node (e.g., `[S1] Hello ComfyUI! [S2] This is Dia speaking. (laughs)`). +6. Adjust generation parameters as needed. +7. Connect the `audio` output of the Generate node to a `SaveAudio` or `PreviewAudio` node. +8. Queue the prompt. + +### Generation with Audio Prompt (Voice Cloning) + +1. Set up the `DiaLoader` as above. +2. Add a `LoadAudio` node and load the `.wav` or `.mp3` file containing the voice you want to clone. +3. Add the `Dia TTS Generate` node. +4. Connect `dia_model` from Loader to Generate node. +5. Connect the `AUDIO` output of `LoadAudio` to the `audio_prompt` input of the Generate node. +6. **Crucially:** In the `text` input of the `Dia TTS Generate` node, you **must** provide the transcript of the audio prompt *first*, followed by the new text you want generated in that voice. + * Example `text` input: + ``` + [S1] This is the exact transcript of the audio file I loaded into LoadAudio. [S2] It has the voice characteristics I want. (clears throat) [S1] Now generate this new sentence using that voice. [S2] This part will be synthesized. + ``` +7. Adjust other generation parameters. Note that `cfg_scale`, `temperature`, etc., will affect how closely the generation follows the *style* of the prompt vs the *text* content. +8. Connect the `audio` output to `SaveAudio` or `PreviewAudio`. +9. Queue the prompt. The output audio should only contain the synthesized part (the text *after* the prompt transcript). + +## Features + +* Generate dialogue via `[S1]`, `[S2]` tags. +* Generate non-verbal sounds like `(laughs)`, `(coughs)`, etc. + * Supported tags: `(laughs), (clears throat), (sighs), (gasps), (coughs), (singing), (sings), (mumbles), (beep), (groans), (sniffs), (claps), (screams), (inhales), (exhales), (applause), (burps), (humming), (sneezes), (chuckle), (whistles)`. Recognition may vary. +* **Audio Prompting:** Use an audio file and its transcript to guide voice style/cloning for new text generation. ## Notes * This node pack **requires a CUDA-enabled GPU**. -* Only the `.safetensors` weights file is required. -* The first run of the nodes descript-audio-codec may take slightly longer. Subsequent runs will be faster. -* Dependencies `descript-audio-codec` must be installed via `requirements.txt`. - -## To Do - -- [x] Remove huggingface download and add safetensor support -- [ ] add audio propmpt support +* The `.safetensors` weights file for Dia-1.6B is required. +* The first time you run the node, the `descript-audio-codec` model will be downloaded automatically. Subsequent runs will be faster. +* Dependency `descript-audio-codec` must be installed via `requirements.txt`. +* When using `audio_prompt`, ensure the provided `text` input correctly includes the prompt's transcript first. The model uses this text alignment to understand the audio prompt. diff --git a/dia_lib/audio.py b/dia_lib/audio.py index 58c4107..dae89fb 100644 --- a/dia_lib/audio.py +++ b/dia_lib/audio.py @@ -1,33 +1,36 @@ +# ComfyUI-DiaTTS/dia_lib/audio.py + import typing as tp import torch -def build_delay_indices(B: int, T: int, C: int, delay_pattern: tp.List[int]) -> tp.Tuple[torch.Tensor, torch.Tensor]: +def build_delay_indices(B: int, T: int, C: int, delay_pattern: tp.List[int], device: torch.device | None = None) -> tp.Tuple[torch.Tensor, torch.Tensor]: """ Precompute (t_idx_BxTxC, indices_BTCx3) so that out[t, c] = in[t - delay[c], c]. Negative t_idx => BOS; t_idx >= T => PAD. + Creates tensors directly on the specified device. """ - delay_arr = torch.tensor(delay_pattern, dtype=torch.int32) + delay_arr = torch.tensor(delay_pattern, dtype=torch.int32, device=device) t_idx_BxT = torch.broadcast_to( - torch.arange(T, dtype=torch.int32)[None, :], + torch.arange(T, dtype=torch.int32, device=device)[None, :], [B, T], ) t_idx_BxTx1 = t_idx_BxT[..., None] - t_idx_BxTxC = t_idx_BxTx1 - delay_arr.view(1, 1, C) + t_idx_BxTxC = t_idx_BxTx1 - delay_arr.view(1, 1, C) # Result inherits device b_idx_BxTxC = torch.broadcast_to( - torch.arange(B, dtype=torch.int32).view(B, 1, 1), + torch.arange(B, dtype=torch.int32, device=device).view(B, 1, 1), [B, T, C], ) c_idx_BxTxC = torch.broadcast_to( - torch.arange(C, dtype=torch.int32).view(1, 1, C), + torch.arange(C, dtype=torch.int32, device=device).view(1, 1, C), [B, T, C], ) # We must clamp time indices to [0..T-1] so gather_nd equivalent won't fail - t_clamped_BxTxC = torch.clamp(t_idx_BxTxC, 0, T - 1) + t_clamped_BxTxC = torch.clamp(t_idx_BxTxC, 0, T - 1) # Inherits device indices_BTCx3 = torch.stack( [ @@ -36,7 +39,7 @@ def build_delay_indices(B: int, T: int, C: int, delay_pattern: tp.List[int]) -> c_idx_BxTxC.reshape(-1), ], dim=1, - ).long() # Ensure indices are long type for indexing + ).long() # Ensure indices are long type, inherits device return t_idx_BxTxC, indices_BTCx3 @@ -50,65 +53,51 @@ def apply_audio_delay( """ Applies the delay pattern to batched audio tokens using precomputed indices, inserting BOS where t_idx < 0 and PAD where t_idx >= T. - - Args: - audio_BxTxC: [B, T, C] int16 audio tokens (or int32/float) - pad_value: the padding token - bos_value: the BOS token - precomp: (t_idx_BxTxC, indices_BTCx3) from build_delay_indices - - Returns: - result_BxTxC: [B, T, C] delayed audio tokens + Assumes precomp tensors are already on the correct device. """ - device = audio_BxTxC.device # Get device from input tensor + device = audio_BxTxC.device t_idx_BxTxC, indices_BTCx3 = precomp - t_idx_BxTxC = t_idx_BxTxC.to(device) # Move precomputed indices to device - indices_BTCx3 = indices_BTCx3.to(device) + + # Verify devices just in case, but ideally they match 'device' + if t_idx_BxTxC.device != device: t_idx_BxTxC = t_idx_BxTxC.to(device) + if indices_BTCx3.device != device: indices_BTCx3 = indices_BTCx3.to(device) # Equivalent of tf.gather_nd using advanced indexing - # Ensure indices are long type if not already (build_delay_indices should handle this) gathered_flat = audio_BxTxC[indices_BTCx3[:, 0], indices_BTCx3[:, 1], indices_BTCx3[:, 2]] gathered_BxTxC = gathered_flat.view(audio_BxTxC.shape) # Create masks on the correct device - mask_bos = t_idx_BxTxC < 0 # => place bos_value - mask_pad = t_idx_BxTxC >= audio_BxTxC.shape[1] # => place pad_value + mask_bos = t_idx_BxTxC < 0 + mask_pad = t_idx_BxTxC >= audio_BxTxC.shape[1] # Create scalar tensors on the correct device bos_tensor = torch.tensor(bos_value, dtype=audio_BxTxC.dtype, device=device) pad_tensor = torch.tensor(pad_value, dtype=audio_BxTxC.dtype, device=device) # If mask_bos, BOS; else if mask_pad, PAD; else original gather - # All tensors should now be on the same device result_BxTxC = torch.where(mask_bos, bos_tensor, torch.where(mask_pad, pad_tensor, gathered_BxTxC)) return result_BxTxC -def build_revert_indices(B: int, T: int, C: int, delay_pattern: tp.List[int]) -> tp.Tuple[torch.Tensor, torch.Tensor]: +def build_revert_indices(B: int, T: int, C: int, delay_pattern: tp.List[int], device: torch.device | None = None) -> tp.Tuple[torch.Tensor, torch.Tensor]: """ Precompute indices for the revert operation using PyTorch. - - Returns: - A tuple (t_idx_BxTxC, indices_BTCx3) where: - - t_idx_BxTxC is a tensor of shape [B, T, C] computed as time indices plus the delay. - - indices_BTCx3 is a tensor of shape [B*T*C, 3] used for gathering, computed from: - batch indices, clamped time indices, and channel indices. + Creates tensors directly on the specified device. """ - # Use default device unless specified otherwise; assumes inputs might define device later - device = None # Or determine dynamically if needed, e.g., from a model parameter - delay_arr = torch.tensor(delay_pattern, dtype=torch.int32, device=device) - t_idx_BT1 = torch.broadcast_to(torch.arange(T, device=device).unsqueeze(0), [B, T]) + t_idx_BT1 = torch.broadcast_to(torch.arange(T, dtype=torch.int32, device=device).unsqueeze(0), [B, T]) t_idx_BT1 = t_idx_BT1.unsqueeze(-1) + # Use torch.tensor for T-1 to ensure it's on the correct device + T_minus_1_tensor = torch.tensor(T - 1, dtype=torch.int32, device=device) t_idx_BxTxC = torch.minimum( t_idx_BT1 + delay_arr.view(1, 1, C), - torch.tensor(T - 1, device=device), + T_minus_1_tensor, # Use tensor here ) - b_idx_BxTxC = torch.broadcast_to(torch.arange(B, device=device).view(B, 1, 1), [B, T, C]) - c_idx_BxTxC = torch.broadcast_to(torch.arange(C, device=device).view(1, 1, C), [B, T, C]) + b_idx_BxTxC = torch.broadcast_to(torch.arange(B, dtype=torch.int32, device=device).view(B, 1, 1), [B, T, C]) + c_idx_BxTxC = torch.broadcast_to(torch.arange(C, dtype=torch.int32, device=device).view(1, 1, C), [B, T, C]) indices_BTCx3 = torch.stack( [ @@ -117,7 +106,7 @@ def build_revert_indices(B: int, T: int, C: int, delay_pattern: tp.List[int]) -> c_idx_BxTxC.reshape(-1), ], axis=1, - ).long() # Ensure indices are long type + ).long() # Ensure indices are long type return t_idx_BxTxC, indices_BTCx3 @@ -125,40 +114,30 @@ def build_revert_indices(B: int, T: int, C: int, delay_pattern: tp.List[int]) -> def revert_audio_delay( audio_BxTxC: torch.Tensor, pad_value: int, - precomp: tp.Tuple[torch.Tensor, torch.Tensor], + precomp: tp.Tuple[torch.Tensor, torch.Tensor], # Assumes already on correct device T: int, ) -> torch.Tensor: """ Reverts a delay pattern from batched audio tokens using precomputed indices (PyTorch version). - - Args: - audio_BxTxC: Input delayed audio tensor - pad_value: Padding value for out-of-bounds indices - precomp: Precomputed revert indices tuple containing: - - t_idx_BxTxC: Time offset indices tensor - - indices_BTCx3: Gather indices tensor for original audio - T: Original sequence length before padding - - Returns: - Reverted audio tensor with same shape as input + Assumes precomp tensors are already on the correct device. """ t_idx_BxTxC, indices_BTCx3 = precomp - device = audio_BxTxC.device # Get device from input tensor + device = audio_BxTxC.device - # Move precomputed indices to the same device as audio_BxTxC if they aren't already - t_idx_BxTxC = t_idx_BxTxC.to(device) - indices_BTCx3 = indices_BTCx3.to(device) + # Verify devices just in case, but ideally they match 'device' + if t_idx_BxTxC.device != device: t_idx_BxTxC = t_idx_BxTxC.to(device) + if indices_BTCx3.device != device: indices_BTCx3 = indices_BTCx3.to(device) - # Using PyTorch advanced indexing (equivalent to tf.gather_nd or np equivalent) + # Using PyTorch advanced indexing gathered_flat = audio_BxTxC[indices_BTCx3[:, 0], indices_BTCx3[:, 1], indices_BTCx3[:, 2]] - gathered_BxTxC = gathered_flat.view(audio_BxTxC.size()) # Use .size() for robust reshaping + gathered_BxTxC = gathered_flat.view(audio_BxTxC.size()) - # Create pad_tensor on the correct device + # Create pad_tensor and T_tensor on the correct device pad_tensor = torch.tensor(pad_value, dtype=audio_BxTxC.dtype, device=device) - # Create T tensor on the correct device for comparison - T_tensor = torch.tensor(T, device=device) + # Use T_idx_BxTxC's dtype for comparison tensor + T_tensor = torch.tensor(T, dtype=t_idx_BxTxC.dtype, device=device) - result_BxTxC = torch.where(t_idx_BxTxC >= T_tensor, pad_tensor, gathered_BxTxC) # Changed np.where to torch.where + result_BxTxC = torch.where(t_idx_BxTxC >= T_tensor, pad_tensor, gathered_BxTxC) return result_BxTxC @@ -166,8 +145,8 @@ def revert_audio_delay( @torch.no_grad() @torch.inference_mode() def decode( - model, - audio_codes, + model, # DAC model + audio_codes, # Input codes tensor ): """ Decodes the given frames into an output audio waveform @@ -175,11 +154,24 @@ def decode( if len(audio_codes) != 1: raise ValueError(f"Expected one frame, got {len(audio_codes)}") + # Ensure model and codes are on the same device before calling internal methods + model_device = next(model.parameters()).device + if audio_codes.device != model_device: + print(f"Decode function: Moving audio_codes from {audio_codes.device} to model device {model_device}") + audio_codes = audio_codes.to(model_device) + try: + # Now call internal DAC methods, expecting inputs to be on model_device audio_values = model.quantizer.from_codes(audio_codes) - audio_values = model.decode(audio_values[0]) + audio_values = model.decode(audio_values[0]) # model.decode expects [1, T_audio]? Check DAC source if needed. + # The original call was model.decode(audio_values[0]), assuming audio_values was [B, D, T_z] + # And decode expects [D, T_z]. Let's stick to that for now. return audio_values except Exception as e: - print(f"Error in decode method: {str(e)}") - raise + # Print the error with more context + print(f"Error in decode method (dac): {str(e)}") + # Check devices right before the failing call if possible (difficult without modifying DAC lib) + print(f" - DAC model device: {model_device}") + print(f" - audio_codes device: {audio_codes.device}") + raise \ No newline at end of file diff --git a/dia_lib/model.py b/dia_lib/model.py index 128da92..d085762 100644 --- a/dia_lib/model.py +++ b/dia_lib/model.py @@ -1,4 +1,4 @@ -# ComfyUI-DiaTest/dia_lib/model.py +# ComfyUI-DiaTTS/dia_lib/model.py import time from enum import Enum @@ -7,8 +7,7 @@ import dac import numpy as np import torch import torchaudio -from huggingface_hub import hf_hub_download -from tqdm.auto import tqdm # Import tqdm for command-line progress +from tqdm.auto import tqdm from .audio import apply_audio_delay, build_delay_indices, build_revert_indices, decode, revert_audio_delay from .config import DiaConfig @@ -32,10 +31,12 @@ def _sample_next_token(logits_BCxV, temperature, top_p, cfg_filter_top_k=None) - logits_BCxV = logits_BCxV / temperature if cfg_filter_top_k is not None: - _, top_k_indices_BCxV = torch.topk(logits_BCxV, k=cfg_filter_top_k, dim=-1) - mask = torch.ones_like(logits_BCxV, dtype=torch.bool, device=exec_device) - mask.scatter_(dim=-1, index=top_k_indices_BCxV, value=False) - logits_BCxV = logits_BCxV.masked_fill(mask, -torch.inf) + cfg_filter_top_k = min(cfg_filter_top_k, logits_BCxV.shape[-1]) + if cfg_filter_top_k > 0: + _, top_k_indices_BCxV = torch.topk(logits_BCxV, k=cfg_filter_top_k, dim=-1) + mask = torch.ones_like(logits_BCxV, dtype=torch.bool, device=exec_device) + mask.scatter_(dim=-1, index=top_k_indices_BCxV, value=False) + logits_BCxV = logits_BCxV.masked_fill(mask, -torch.inf) if top_p < 1.0: probs_BCxV = torch.softmax(logits_BCxV, dim=-1) @@ -49,6 +50,11 @@ def _sample_next_token(logits_BCxV, temperature, top_p, cfg_filter_top_k=None) - logits_BCxV = logits_BCxV.masked_fill(indices_to_remove_BCxV, -torch.inf) final_probs_BCxV = torch.softmax(logits_BCxV, dim=-1) + final_probs_BCxV = torch.nan_to_num(final_probs_BCxV) + if torch.sum(final_probs_BCxV) == 0: + final_probs_BCxV.fill_(1.0) + final_probs_BCxV = final_probs_BCxV / final_probs_BCxV.shape[-1] + sampled_indices_BC = torch.multinomial(final_probs_BCxV, num_samples=1) return sampled_indices_BC.squeeze(-1) @@ -76,25 +82,44 @@ class Dia: def _devices_equal(self, device1: torch.device, device2: torch.device) -> bool: """Robustly compares two torch.device objects.""" + if device1 is None or device2 is None: return False if device1.type != device2.type: return False if device1.type == 'cuda': - index1 = device1.index if device1.index is not None else 0 - index2 = device2.index if device2.index is not None else 0 + index1 = device1.index if device1.index is not None else torch.cuda.current_device() + index2 = device2.index if device2.index is not None else torch.cuda.current_device() return index1 == index2 return True def _load_dac_model(self): """Loads the Descript Audio Codec model to the instance's device.""" if self.dac_model is not None: - if not self._devices_equal(self.dac_model.device, self.device): - self.dac_model.to(self.device) - return + try: + dac_device = next(self.dac_model.parameters()).device + if not self._devices_equal(dac_device, self.device): + print(f"Moving existing DAC model from {dac_device} to {self.device}...") + self.dac_model.to(self.device) + except StopIteration: + print("DAC model has no parameters, forcing reload.") + self.dac_model = None + except Exception as e: + print(f"Error checking/moving DAC model device: {e}. Reloading.") + self.dac_model = None + if self.dac_model is not None: return + try: print(f"Loading DAC model to {self.device}...") dac_model_path = dac.utils.download() - self.dac_model = dac.DAC.load(dac_model_path).to(self.device) + self.dac_model = dac.DAC.load(dac_model_path) + self.dac_model.to(self.device) self.dac_model.eval() - print(f"DAC model loaded successfully on {self.dac_model.device}.") + dac_device_check = next(self.dac_model.parameters()).device + if not self._devices_equal(dac_device_check, self.device): + print(f"Warning: DAC model loaded to {dac_device_check} instead of requested {self.device}. Retrying move.") + self.dac_model.to(self.device) + dac_device_check_retry = next(self.dac_model.parameters()).device + if not self._devices_equal(dac_device_check_retry, self.device): + raise RuntimeError(f"Failed to move DAC model to {self.device}") + print(f"DAC model loaded successfully on {self.device}.") except Exception as e: self.dac_model = None raise RuntimeError("Failed to load DAC model") from e @@ -102,100 +127,179 @@ class Dia: def _prepare_text_input(self, text: str) -> torch.Tensor: """Encodes text prompt, pads, and creates tensor on the model's device.""" text_pad_value = self.config.data.text_pad_value; max_len = self.config.data.text_length - byte_text = text.encode("utf-8") - replaced_bytes = byte_text.replace(b"[S1]", b"\x01").replace(b"[S2]", b"\x02") - text_tokens = list(replaced_bytes) + try: + byte_text = text.encode("utf-8") + replaced_bytes = byte_text.replace(b"[S1]", b"\x01").replace(b"[S2]", b"\x02") + text_tokens = list(replaced_bytes) + except Exception as e: + print(f"Error encoding text: {e}") + raise ValueError("Failed to encode input text.") from e + current_len = len(text_tokens) padding_needed = max_len - current_len - if padding_needed <= 0: + if padding_needed < 0: + print(f"Warning: Input text truncated from {current_len} to {max_len} bytes.") text_tokens = text_tokens[:max_len] padded_text_np = np.array(text_tokens, dtype=np.uint8) + elif padding_needed == 0: + padded_text_np = np.array(text_tokens, dtype=np.uint8) else: padded_text_np = np.pad(text_tokens, (0, padding_needed), 'constant', constant_values=text_pad_value).astype(np.uint8) return torch.from_numpy(padded_text_np).to(dtype=torch.long, device=self.device).unsqueeze(0) - def _prepare_audio_prompt(self, audio_prompt: torch.Tensor | None) -> tuple[torch.Tensor, int]: - """Prepares the initial audio tokens (BOS and optional prompt) on the model's device.""" + def encode_audio_prompt(self, waveform: torch.Tensor, sample_rate: int) -> torch.Tensor: + """Encodes a raw waveform tensor into DAC codes for use as an audio prompt.""" + if self.dac_model is None: self._load_dac_model() + + if waveform.device != self.device: waveform = waveform.to(self.device) + if waveform.dtype != torch.float32: + original_dtype = waveform.dtype + waveform = waveform.to(torch.float32) + if not torch.is_floating_point(original_dtype): + max_val = torch.iinfo(original_dtype).max + waveform = waveform / max_val + + if waveform.ndim == 2 and waveform.shape[0] == 1: waveform = waveform.unsqueeze(1) + elif waveform.ndim == 1: waveform = waveform.unsqueeze(0).unsqueeze(0) + elif waveform.ndim == 3 and waveform.shape[0] == 1 and waveform.shape[1] > 1: + print(f"Dia.encode_audio_prompt: Input prompt has {waveform.shape[1]} channels. Averaging to mono.") + waveform = torch.mean(waveform, dim=1, keepdim=True) + elif not (waveform.ndim == 3 and waveform.shape[0] == 1 and waveform.shape[1] == 1): + raise ValueError(f"Unsupported waveform shape for audio prompt: {waveform.shape}.") + + if sample_rate != DEFAULT_SAMPLE_RATE: + print(f"Dia.encode_audio_prompt: Resampling prompt from {sample_rate} Hz to {DEFAULT_SAMPLE_RATE} Hz.") + waveform = torchaudio.functional.resample(waveform, orig_freq=sample_rate, new_freq=DEFAULT_SAMPLE_RATE) + waveform = torch.clamp(waveform, -1.0, 1.0) + + try: + audio_data = self.dac_model.preprocess(waveform, DEFAULT_SAMPLE_RATE) + _, codes, _, _, _ = self.dac_model.encode(audio_data) + prompt_codes = codes.squeeze(0).transpose(0, 1).contiguous() + return prompt_codes.to(torch.int) + except Exception as e: + print(f"Error during DAC encoding of prompt: {e}") + import traceback + traceback.print_exc() + raise RuntimeError("Failed to encode audio prompt using DAC.") from e + + def _prepare_audio_prompt(self, audio_prompt_codes: torch.Tensor | None) -> tuple[torch.Tensor, int]: + """Prepares the initial audio tokens (BOS and optional prompt codes) on the model's device.""" num_channels = self.config.data.channels; audio_bos_value = self.config.data.audio_bos_value audio_pad_value = self.config.data.audio_pad_value; delay_pattern = self.config.data.delay_pattern max_delay_pattern = max(delay_pattern) + prefill = torch.full((1, num_channels), fill_value=audio_bos_value, dtype=torch.int, device=self.device) prefill_step = 1 - if audio_prompt is not None: - audio_prompt = audio_prompt.to(self.device) - prefill_step += audio_prompt.shape[0] - prefill = torch.cat([prefill, audio_prompt], dim=0) + + if audio_prompt_codes is not None: + if audio_prompt_codes.device != self.device: audio_prompt_codes = audio_prompt_codes.to(self.device) + if not torch.is_tensor(audio_prompt_codes) or audio_prompt_codes.dtype not in [torch.int, torch.long]: + audio_prompt_codes = audio_prompt_codes.to(torch.int) + if audio_prompt_codes.ndim != 2 or audio_prompt_codes.shape[1] != num_channels: + raise ValueError(f"Audio prompt codes have unexpected shape {audio_prompt_codes.shape}.") + prompt_len = audio_prompt_codes.shape[0] + prefill_step += prompt_len + prefill = torch.cat([prefill, audio_prompt_codes], dim=0) + print(f"Prepared audio prompt with {prompt_len} timesteps.") + delay_pad_tensor = torch.full((max_delay_pattern, num_channels), fill_value=-1, dtype=torch.int, device=self.device) prefill = torch.cat([prefill, delay_pad_tensor], dim=0) - delay_precomp = build_delay_indices(B=1, T=prefill.shape[0], C=num_channels, delay_pattern=delay_pattern) - prefill = apply_audio_delay(prefill.unsqueeze(0), audio_pad_value, audio_bos_value, delay_precomp).squeeze(0) - return prefill, prefill_step - def _prepare_generation(self, text: str, audio_prompt: str | torch.Tensor | None, verbose: bool): + # Pass device to build_delay_indices + delay_precomp = build_delay_indices(B=1, T=prefill.shape[0], C=num_channels, delay_pattern=delay_pattern, device=self.device) + prefill_delayed = apply_audio_delay(prefill.unsqueeze(0), audio_pad_value, audio_bos_value, delay_precomp).squeeze(0) + return prefill_delayed, prefill_step + + def _prepare_generation(self, text: str, audio_prompt_codes: torch.Tensor | None, verbose: bool): """Prepares encoder/decoder states and initial inputs, ensuring device consistency.""" - param_device = next(self.model.parameters()).device - if not self._devices_equal(param_device, self.device): - raise RuntimeError(f"Model parameters on {param_device}, expected {self.device}. Device move failed?") + try: + param_device = next(self.model.parameters()).device + if not self._devices_equal(param_device, self.device): + print(f"Warning: Model parameters on {param_device}, but expected {self.device}. Moving...") + self.model.to(self.device) + if not self._devices_equal(next(self.model.parameters()).device, self.device): + raise RuntimeError(f"Failed to move model parameters to {self.device}") + except StopIteration: raise RuntimeError("Model has no parameters!") + enc_input_cond = self._prepare_text_input(text) enc_input_uncond = torch.zeros_like(enc_input_cond) enc_input = torch.cat([enc_input_uncond, enc_input_cond], dim=0) - if isinstance(audio_prompt, str): audio_prompt = self.load_audio(audio_prompt) - prefill, prefill_step = self._prepare_audio_prompt(audio_prompt) + prefill, prefill_step = self._prepare_audio_prompt(audio_prompt_codes) + if verbose: print(f"generate: data loaded. Prefill steps: {prefill_step}. Prefill tensor shape: {prefill.shape}") + enc_state = EncoderInferenceState.new(self.config, enc_input_cond) encoder_out = self.model.encoder(enc_input, enc_state) dec_cross_attn_cache = self.model.decoder.precompute_cross_attn_cache(encoder_out, enc_state.positions) dec_state = DecoderInferenceState.new(self.config, enc_state, encoder_out, dec_cross_attn_cache, self.compute_dtype) dec_output = DecoderOutput.new(self.config, self.device) dec_output.prefill(prefill, prefill_step) + dec_step = prefill_step - 1 if dec_step > 0: + if verbose: print(f"generate: Prefilling decoder state for {dec_step} steps...") dec_state.prepare_step(0, dec_step) tokens_BxTxC = dec_output.get_tokens_at(0, dec_step).unsqueeze(0).expand(2, -1, -1) - self.model.decoder.forward(tokens_BxTxC, dec_state) + _ = self.model.decoder.forward(tokens_BxTxC, dec_state) + if verbose: print("generate: Decoder prefill complete.") return dec_state, dec_output def _decoder_step(self, tokens_Bx1xC, dec_state, cfg_scale, temperature, top_p, cfg_filter_top_k) -> torch.Tensor: """Performs a single autoregressive decoding step.""" audio_eos_value = self.config.data.audio_eos_value logits_Bx1xCxV = self.model.decoder.decode_step(tokens_Bx1xC, dec_state) - logits_last_BxCxV = logits_Bx1xCxV[:, -1, :, :]; uncond_logits_CxV = logits_last_BxCxV[0, :, :]; cond_logits_CxV = logits_last_BxCxV[1, :, :] + logits_last_BxCxV = logits_Bx1xCxV[:, -1, :, :] + uncond_logits_CxV = logits_last_BxCxV[0, :, :] + cond_logits_CxV = logits_last_BxCxV[1, :, :] logits_CxV = cond_logits_CxV + cfg_scale * (cond_logits_CxV - uncond_logits_CxV) - logits_CxV[:, audio_eos_value + 1 :] = -torch.inf; logits_CxV[1:, audio_eos_value:] = -torch.inf + logits_CxV[:, audio_eos_value + 1 :] = -torch.inf + logits_CxV[1:, audio_eos_value:] = -torch.inf return _sample_next_token(logits_CxV.float(), temperature, top_p, cfg_filter_top_k) def _generate_output(self, generated_codes: torch.Tensor) -> np.ndarray: """Reverts delay pattern and decodes audio codes using DAC.""" if self.dac_model is None: self._load_dac_model() - if not self._devices_equal(self.dac_model.device, self.device): self.dac_model.to(self.device) + try: + dac_device = next(self.dac_model.parameters()).device + if not self._devices_equal(dac_device, self.device): self.dac_model.to(self.device) + except StopIteration: raise RuntimeError("DAC model has no parameters after load attempt.") + num_channels = self.config.data.channels; seq_length = generated_codes.shape[0] delay_pattern = self.config.data.delay_pattern; audio_pad_value = self.config.data.audio_pad_value max_delay_pattern = max(delay_pattern) - revert_precomp = build_revert_indices(B=1, T=seq_length, C=num_channels, delay_pattern=delay_pattern) - codebook = revert_audio_delay(generated_codes.unsqueeze(0), audio_pad_value, revert_precomp, seq_length)[:, :-max_delay_pattern, :] - min_valid_index = 0; max_valid_index = 1023 - invalid_mask = (codebook < min_valid_index) | (codebook > max_valid_index) - codebook[invalid_mask] = 0 - audio = decode(self.dac_model, codebook.transpose(1, 2)) - return audio.squeeze().cpu().numpy() - def load_audio(self, audio_path: str) -> torch.Tensor: - """Loads and preprocesses audio prompt file.""" - if self.dac_model is None: self._load_dac_model() - if not self._devices_equal(self.dac_model.device, self.device): self.dac_model.to(self.device) - audio, sr = torchaudio.load(audio_path, channels_first=True) - if sr != DEFAULT_SAMPLE_RATE: audio = torchaudio.functional.resample(audio, sr, DEFAULT_SAMPLE_RATE) - audio = audio.to(self.device).unsqueeze(0) - audio_data = self.dac_model.preprocess(audio, DEFAULT_SAMPLE_RATE) - _, encoded_frame, _, _, _ = self.dac_model.encode(audio_data) - return encoded_frame.squeeze(0).transpose(0, 1).to(self.device) + # Pass the device of generated_codes to build_revert_indices + codes_device = generated_codes.device + revert_precomp = build_revert_indices(B=1, T=seq_length, C=num_channels, delay_pattern=delay_pattern, device=codes_device) + + codebook_delayed = generated_codes.unsqueeze(0) + # Ensure generated codes are on the same device as precomputed indices + # This shouldn't be necessary if build_revert_indices uses codes_device, but belts and braces + if codebook_delayed.device != codes_device: codebook_delayed = codebook_delayed.to(codes_device) + + codebook_reverted = revert_audio_delay(codebook_delayed, audio_pad_value, revert_precomp, seq_length) + codebook_trimmed = codebook_reverted[:, :-max_delay_pattern, :] + + min_valid_index = 0; max_valid_index = 1023 + invalid_mask = (codebook_trimmed < min_valid_index) | (codebook_trimmed > max_valid_index) + if torch.any(invalid_mask): + print(f"Warning: Clamping {torch.sum(invalid_mask)} invalid codebook indices to 0.") + codebook_trimmed[invalid_mask] = 0 + + # codebook_for_dac should now be on the correct device (codes_device) + codebook_for_dac = codebook_trimmed.transpose(1, 2) + + # decode function will handle moving codes to dac_model's device if necessary + audio_tensor = decode(self.dac_model, codebook_for_dac) + return audio_tensor.squeeze().cpu().numpy() + @torch.inference_mode() def generate(self, text: str, max_tokens=None, cfg_scale=3.0, temperature=1.3, top_p=0.95, use_torch_compile=False, cfg_filter_top_k=35, audio_prompt=None, verbose=False, - pbar=None, # ComfyUI progress bar object - **kwargs) -> np.ndarray | None: + pbar=None + ) -> np.ndarray | None: """Generates audio waveform from text input, updating progress bars.""" - if 'audio_prompt_path' in kwargs: audio_prompt = kwargs['audio_prompt_path'] audio_eos_value = self.config.data.audio_eos_value; audio_pad_value = self.config.data.audio_pad_value delay_pattern = self.config.data.delay_pattern clamped_max_tokens = self.config.data.audio_length if max_tokens is None else min(max_tokens, self.config.data.audio_length) @@ -208,23 +312,26 @@ class Dia: bos_countdown = max_delay_pattern; eos_detected = False; eos_countdown = -1 step_fn = torch.compile(self._decoder_step, mode="default") if use_torch_compile else self._decoder_step - # --- Setup Command Line Progress Bar (only if verbose) --- tqdm_pbar = None if verbose: - tqdm_pbar = tqdm(total=clamped_max_tokens, desc="Dia Generating Tokens", unit="token") - # If there was a prefill step, update tqdm to reflect that progress - if dec_step >= 0: - tqdm_pbar.update(dec_step + 1) # +1 because dec_step is 0-indexed + tqdm_total = clamped_max_tokens - (dec_step + 1) if clamped_max_tokens > dec_step + 1 else 0 + tqdm_pbar = tqdm(total=tqdm_total, desc="Dia Generating Tokens", unit="token", initial=0) - # --- Generation Loop --- - while dec_step < clamped_max_tokens: + while dec_step < clamped_max_tokens -1 : dec_state.prepare_step(dec_step) tokens_Bx1xC = dec_output.get_tokens_at(dec_step).unsqueeze(0).expand(2, -1, -1) pred_C = step_fn(tokens_Bx1xC, dec_state, cfg_scale, temperature, top_p, cfg_filter_top_k) - # EOS handling - if (not eos_detected and pred_C[0] == audio_eos_value) or dec_step == clamped_max_tokens - max_delay_pattern - 1: - eos_detected = True; eos_countdown = max_delay_pattern + is_last_generatable_step = (dec_step == clamped_max_tokens - max_delay_pattern - 1) + if (not eos_detected and pred_C[0] == audio_eos_value) or is_last_generatable_step: + if not eos_detected: + if verbose: print(f"\nEOS detected at step {dec_step + 1}.") + eos_detected = True; eos_countdown = max_delay_pattern + if is_last_generatable_step and not eos_detected: + if verbose: print(f"\nApproaching max_tokens ({clamped_max_tokens}), forcing EOS generation.") + pred_C[0] = audio_eos_value + eos_detected = True; eos_countdown = max_delay_pattern + if eos_countdown > 0: step_after_eos = max_delay_pattern - eos_countdown for i, d in enumerate(delay_pattern): @@ -233,22 +340,25 @@ class Dia: eos_countdown -= 1 bos_countdown = max(0, bos_countdown - 1) - dec_output.update_one(pred_C, dec_step + 1, bos_countdown > 0) - if eos_countdown == 0: break + dec_output.update_one(pred_C, dec_step + 1, apply_mask=(bos_countdown > 0)) + if eos_countdown == 0: + if verbose: print("EOS padding complete. Stopping generation.") + break dec_step += 1 + if pbar: pbar.update(1) + if tqdm_pbar: tqdm_pbar.update(1) - # --- Update Progress Bars --- - if pbar: pbar.update(1) # ComfyUI Web UI bar - if tqdm_pbar: tqdm_pbar.update(1) # Command Line bar - - # --- Cleanup Command Line Bar --- if tqdm_pbar: tqdm_pbar.close() - - # --- Post-generation --- - if dec_output.prefill_step >= dec_step + 1: + final_step_index = dec_step + if dec_output.prefill_step > final_step_index: print("Dia: Warning - Nothing generated beyond prefill/prompt.") return None - generated_codes = dec_output.generated_tokens[dec_output.prefill_step : dec_step + 1, :] + + generated_codes = dec_output.generated_tokens[dec_output.prefill_step : final_step_index + 1, :] + if generated_codes.shape[0] == 0: + print("Dia: Warning - Generated codes array is empty.") + return None + if verbose: print(f"Generated {generated_codes.shape[0]} token steps.") return self._generate_output(generated_codes) \ No newline at end of file diff --git a/example_workflows/DiaTTS.json b/example_workflows/DiaTTS.json index b360401..72fcb56 100644 --- a/example_workflows/DiaTTS.json +++ b/example_workflows/DiaTTS.json @@ -56,6 +56,12 @@ "name": "dia_model", "type": "DIA_MODEL", "link": 1 + }, + { + "name": "audio_prompt", + "shape": 7, + "type": "AUDIO", + "link": null } ], "outputs": [ @@ -137,10 +143,10 @@ "config": {}, "extra": { "ds": { - "scale": 1.1167815779425279, + "scale": 1.1346575342465761, "offset": [ - 62.65250316765449, - -51.300288201697924 + 24.892625008442675, + -49.90183910857781 ] }, "frontendVersion": "1.17.11", diff --git a/example_workflows/DiaTTS.png b/example_workflows/DiaTTS.png index da02a71e32f6e507aa4ed4d7591678853b93182a..b591c9c14010d262bf20c4a08626b0ba338564a7 100644 GIT binary patch literal 110827 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 literal 112838 zcmd43c_5VS_dkv(QYax6#uAmW%bqpasZ_S?Gxo8~ps_2Wls&stwp3&tvQ}itp525j z*_X1f`Cj+X@+|Mq`~BbV*X?;S_uO+`=Q`(Huk$+RT+_YFno5Tco;XNEM08k1`QlX~ zqWyYAL?lDx`@x;h#qayUeHcbj7vtvOY-?fX;6~)ZW{qHzVB_EW!vp>OxBvZoj}6Y| zjC8d|TRYgZN$|tj>`c)ZV|xb#(ij>-XzzxdwY@Fjh9H~`dK1kiVX!-i0Gthjbwq;M zE?S$aJD4Jn&R|GK2j~eQVSc!v7{4K$4Q=fX9x)IU<%f$vuPy9MEx{8WUT`)CXXqo) z)F?18;TLOrM;FZQ6m|~grgq@N2xEIw6f}#uts{^R`W;B}&s%%4C}?TOYk?=+tPz$- z44CMj&w{C;Rk2CfyV%)z0ht_JF#ma4gte(LB%j^yY5%F2tQotKiC-f%Kv2JKQ+5&<3Dfx6z6ZsW|I(rWd4W8 zV34;kK;FH9_FnCcp?&SDil!2H_aBZzc)-;jLYg`wV5VjuK)^6o z09}!8Fo4c5LOg&0^pt_AV7SmQw2LDEMI-`-ae$d2VWuckcWZk~)|>VQ+Jc6#t4LEj zJ1lsV3k++9MB2m9;4v387UpJ+v4TOd8xB(;%xcetftgz&&27P0))*KxFBXa6g$5Eb zgq^W7b+NQUpM~il?d;$%G>{1G;9`$J!>sMioskG@GdnEI$^~U=&tqq8i{yprfi<`} zK!chg?W~btdMgJv5F^0uHnjt*bB4J(SeqkZ)@Z^M!iKPGR;JK`tWl26NHp5o6%2CG z0SRtkfPD4{J0uKYZDE0QM%rUwNR$HxkOwr(4TvKH$p{pvWd$TQwPJ;71L@37!CJv0 z&8>g{7&mC?R;G@QK*eZN1RQ2+Z|RI3_KgB_VK7)2$^|@UYLCTO0p$_&kFjzF@|uFV zkW(u=};+;7V%@QmIihGcmtnCplXpA%Vr{3hu&<=Jk7^EGR7uXAC z?%-mFfC26U-2@8&B!i$AH|Uc9D8O#rwTzq!xB&xdbH*Y}u`oMp3*=8dsX%%K^aW;Z z0dxa2X6kBcZD(o*6a-1(=wfDPZ4Prm13yAye(FZk0Rvpc83_m0#{hRg!EBL8M`*D? zPe?2hvNtbG!4xu>n<-E^a3`<~Ncku%8fj<2$_5wW2TV!`F2E}U=jRna4_<@6#l(J+ zI>O%q@bjX8X<6R_yZTo&2ZU~Kb7}+kmfPFDyRlqAP~dODTo8;aARq`(;GcvI@Phv- znE%9tJ=FX8@?Ri=O+xTr12_O~B=l)x;2~f+zv1SeZ~R=_e+=t?|HxnA?%yIjLE!5u zzi0h@ZNMq^j;Nl2T zSMa;JgS~~dSXiJTmTkZz2pB()0HFLpKnrIFu#fB! zH;~S|*#(;buYf48fB;bC4P|X(JHR9DF~Fv-)<`!t35>G~@?YK{uuUjCfIgyu#F!#X zF{UagQ%jHx{Qig<*g-1Lu0;X-gZL@oJsv=NiTM&iZ1&(tOmSFTr2zX!#I;1RALb8E zFbJQx<6Xnw_}rJ4--g`p`SFB+TJg2gF+@Gx09dkJBEzw|ESon>R0b zuF0+%j9=@V$4+HtJT~ssW}ohUoh%?FN3O1=)e?P@iRrL=p#1D5qPQXhZ-FeOF@fiW zn@orS`}Ge6%yG3(y5`)%u%%xa+T9V%cl1jK<;G^Cjn${av4?DCy$}4$hbp)QS&l>? zJw0y*yc-=&Z7WOR;d|Itk;22GUHkZghlNvoY%KYEbv!R>J=XiOQgH?QqT{QQXF7GK z;sTGmWmVWVnB%LK`S)|zV8tp7+YAvQje!HWP!94@yDalW>cKVHvAVJ>k??iTH4H-> z`y#IIWp-ns%TfyW$f*cLIer(#3711**&Tk3ajkK!i$_fUkI&q3Y8JCh%)ikfFKg>l z@YP%ddqt_Z{5>wvypyhc>V6}u9!yVuE8@~)_=~Do4Dw00-*ufS*)jDA)=O7j&i5^d z%?-I9ze6`7b!sqsf>%&!tjCqaiFB9>=8IyHP6%oY#~O^wc@__~L#x2syoN#JVTzbI z)Z|W(;#IQH_nc~r0}s(;8Cf^fl7?rp-*jUfAJTPEd>tk(Sc{`|bg4Ka1rC)*f99~uigDLuF_hg*0msF1SeQd?_F#8Y&Rhdu{_9BI)E|KEG+o(fX z8n4U`bzM0yk_c8Ci0}g!qlHgV$QxWvNMe&ypQ}K!&>vS|3z^1;7u<{D9F!btLB@gw z#2>(zv$xYS?-qr4!xq0$lu%(CUz*%HH&#*#JVVfG_t=lm2(={H^%lEW1kC($vh`S;`sOjbd7lR32^B*_B{y^KNvw4 zaT*bFLf`Tj7Zn#T!q@6yAR7{;b$A(4>-0-*_s4=6;1PL>es6lHNZ_<7d z$iuy8qO}Shmn#O$N&+{j&2!8W z14r<5{a_`h@S3m?*;9VS$CID_lBO9*w0kj2GYHcG&mRwihrwCBDL5#(An88nuT^)^ zy(;+>nyo%z7_P*$Ejw0a3Aq!W3*vyF*p|2! zyhJi2wf_V!Wc|#?9Rj_;b7&=K-81uOgDCy1a1UHR+cea|Q-S>!X-;=dJ;QlEn7gV} zJSW&(l{r zLK?PCL*6^h2KG)>;M;G@w`fLgmfhWFRQ=6VdV-l+e(cWNVorBxW1!YPum%=s(z~x~ zAD|J^p5%v&Lm9_`y~!OT0wUpZB`=Xmgo*$kUfwVs9irEA{d%^c*_cv zh?4@cFxQxT5TmXw;w}kp3>U{;U?Hwq|MrlYutRC%S^~A)O4-oL^vcmRrD`QPq-po= zQRJMHCE~K*wY$QDXE(G8zEV`&oi;sm!=)}IM51K4cn=wdaKv%cEH{9!k5suNhnXb` zH8TQ5!AT2nat6{CO}%uLOprHK&&dNdM@^|PflVb*V)l9Z?F()f*y50ZFAR+^lE^$w zRv@AYK0z$cG*r?6#C^f-9sr43zDcYITvf_5G4!-z)u$~tB=d|a*l-UPzc~%SU+p4{ zo7KL<$5$;FUr8kH2kU}FW+?nA@`FW3&(de5Kt^*sMFkEiYN<10&$Rs(XO7RE?Qyl+ zBqp88DRt@aL)GGnI&r`J0rIcZka}E*L@WSSwMR)zbF4H?(QP3HD6DeyH-VFPt}`t> zPoc8&D1O|*8Y%&RvQ7$-_X)Vj7C*jU0{Awh4ai@^;EjbtXgTfNsgIsi^(6I2hhw0v z0_lS?Q(|i3zSHY{FChr8N)iON)&)*wG({vFb*l#VYu|Q0dV>q`Ze$r}zt>}VQ1LY? z2B5{AXv4_^I3_%BL3I>m+(Bq;GXm_YE|UTaCbAHA?!I^3G(ji4rUC&XQeQF4dTa&Y zH-~)BSN;YHz8(f7bB4L4P>8`1tcM7>4M6m4XQad-2PPNHho9Dmcc~t}sZjqc`@uVj zjdvij2sKlDq=^#um1S}TX3l}MD@l+pwD*B_?I}g3A@nt!v0Z1YBn6I zS_3qC?8KZMD4;9QT=jkSJ_M8@C@2&q`FcEPX?=vv;ohErEccAu7o#{~$mkErI#T@m zA_S59>ryxGx~%B{R|1|ZeTs11)ZUJe7<-r90f8%Y4MeYdj@GeHuMCRpEf5HqX_K9V?&!F6#0U|Q<$nR?07 zo;GucAiBrsfH^L(fp7myiP0-cOklrX$W&n7wSu>YG>Hpv&nc7N(6pjt;2rBV zC6P0ApMcyHaVaNMeEC}gTi(foEnID4y`0KTTY?*`nmNO^IFt{C@>TO6Z|6kRULPNC zicn%2*+=j^D4-mmd0sUKVg_*Yfg3}0NsI?faIV#muOO+cPauu+Ajp62*eGXpa)6n-`_k5MPBZ)MMuWrs>1}VFX|lp z00EP$;us+syD~r_Db4*ht*9q0EAWQ2yHB5Hc$W-UyC4sBwNV2|TR8|(*XAoOJ=I_< z5TK%0_+2`Mh=#BWyR6PwpTtJnqh01v%?DAoe?gm8wSS;Z^^qWU8YLL-FN*Z4s`5n& z6>!1tL*It_hN~bb@bBS==1{5Qpuz|{*C9Ir4z5s|#Ip$0~-v@YH_O)JC zJ$cw|L|mfq$U&Anz8=N1_ud`E1H58F15W_9Wfs(fAV<2!2$1i;&{r@H9Hq7DHbxC6}>^@S(RL>V=S%1;%ztb~10^#R_V&>HsTo8R&%?9ko`%Cp<0)^UT zB>*fcGAZ#tN%?MylJpN!j?LfQSb0B=_sQ;~b@qhrC+$; z>D+$($1WX$d5XPh!_9CSpi0BA`N#q49ca6FPdw^c5q5$2PKjVMfk)2(p&?#EIwI}a zO#O4G5&v&HP1e`{uelDizroVsUGKSY*(RNjyfH}m`TJ5+69)kE^nhR^lfC`&)#CpT zIrRTvB)RmvvZQem;?^~Ew)X&jO~u+yKi>z!7PY`l$RR8f10m-6Ck9`w6Nti|k=tlL7YQO5tHW3R$0=9|8%tBn78SiXEfB+eXkRf z{C3_PS&$`zY)T3t-wj4vkA(@k_)qhKjQwTy1RZb~kg(eJH*2Swq5;{b2ZknlSO!8xCG%ne)83@s$URUeHij!e_N?l^q6WnB)^F-hCh zJ-}G_?|kU{HVM^3P=z{wL^z7-!qYU}bfqBK%$eOpZ7MG~^cqs{5!^*kE7@hj{Q-zc z;rfURhPGTN*iScl72!kX6=H3E7rDZ{C2w82Tx{R z1yIJRA_VP?Qp3GyXHK(A*?03Hj`NDPJz)wuIntl;1+~%nc}Q@#IdVJvr+)R>~;sOQ7)jK6CP zP@Ms~H1=u@V`r4Ag5wiJBybN%+m=pUo`2u8x4K7KhLlNi!pd_~icdG={0&n#< zQ+Q+=U5lt*?bc{^%LH+|s_6U&DWL~pw~cPZ=)eubOekSN0uRdp`?suv*jN3qAGx55 z^QQ;gU4{a3L}Tcr@)K&K0xw#PW<8(qgf>=vW!Os^Yp{PNjW2#DjZ+Y6ToKzeJmSu@ zFBRm-Xig00(i`%bxB>GO&YhWrUd!}IpOUo)oUDOl?39h~N0aZh-D~8v0olH1cam6J zV%b|wCS6m2W2`teDD)Vzj4K}R_M;=z!z=?mBHfBdwC7_&T&4F?;1y21YY|F+linOa zosy27Bor9yPNlheAD^fi--0dLH+Z^R^v%Q$n5IYg+?~`jp^rtTG&D}s-Bgu@%7Rrh zCY_*Cm{`2KpYh7jjAbbQ>J}Y$UTL6_jP&T}NvKBkyHT5ispY_hU4E5{ME+>&j zin3xBo|q4yZssU?ACL}i!~mQS_DSEULa;e_EyItZTyOtNDu9u_f(*Bj&K81oMwqPD zwYp+G=@L)PqJom=;4x6<@#b#^i*{9oM1qolKl8*zksepisR2(LKyAwokDM|?@sjAv zKy@pJX)!I8=&%~?n%K$7eVI;|l+H8S$-T}3$cIzqt>~}wly;4@_%y@Z&qQr=VBn^3 zdEEo9oo|?Z#5Gva(dUz7g56I#ALiASopkP4B8jtYox0SEt3Q?87i;7-g{v<+$&Sh? zmmRzF!H1@heNpa-bdLn6w`k@$Mx3_du#U4tVXggFn7}@gFlnv2^Klm));;4KlKbpe zPVXFAWIs!F<3UzzfGlK8ffc~;W}yl!!1GSexR`N;wiUyF=C91dFKw0$4Jzu4hO`r^ zQ|6j7EI%w{bGuGauR8cE^a-c7L9$qUelp&U%{ z)1f$2;>h0I_6d!p%!giAMZ?fz=&{A@rt!ti_D3MYct%bS)vwk4p}i#ZlzP*jHwJB= zG;o4MVZ7nh2}9&1rIn2P9erXb>=b#?1p(mKKQnY@K^1GT!oSk!LY1+#jsve8`J`PE z5JtlDnBDvXq_BZ^5cPXi?=4qCwaept0kI;qxx$E_o$mswtttN~Au^A*yL1V$YO=EE z=jQXaY{kteVSVJI`HklFO`r9#%Gf3Ykp!V;>6ByoXFWdW)_#pH{faYaY_Z>n!wxa> z!MCFEckw>AO7#kzJMGr9@VNNHT&Ods;A6T%I15}Ny)kNCu0e_#6nO~@g>gyWtNWh} zMYJCWZPCko(&xdh9awT2Sa!L_B)t!M(M3qi{x!*LNp4kO@Rxq-JjunYK@o;-mZ|kz zwlzL{LIxXPhJ7*LLZ5FI60n{gMB zi@u^$W5Tp;g$GEs?n5rd$Xw`tyAc#yr;2_R*Pvpn6<2fm{u8mSFWL1j*2tT^GA!?s zTG!L!?R@%-q&xz?QlLQ}$2QuK@ncMT48>5MmGdwRz9DQ4w)TNHnUE*!)jY=*cdO9~ zi5gId=ZkMKSE2Wu+82S`b$M33G4>~gDSz?!-E!nT*I_#w*>H+-{fMtwuRUI_zusA| zY<_IIIwLN6q)g&Po7CY$$$jIdLBp&p|K;l`p0^kbe(C`S<2-e8#rd zV)-~IrI)=Y1wlHg!9png(fehCiqLK;P4Ni-;0V3X)82}Q4s^BjN~ZAE0)5lZ>h8O(i2UWSYlhI&%nAR{xHRf%ScPz<8o$&M~7 zFuEQF{}lZyQs~D89_*#u7&23)5;dlw<}<%JBP-Qw!b(-8+z7cFw9-oDXw!vEsMwnx ziVivtuEL?yU4(Kh2*A;#r+F**ZqU(B^t;^JEQA%DKvEpjscIJANfaklzs?c-`h#=c zSh0ENh-UPYIN5pl`SVZeNXkoB&S^a&G%nEk#+LxFh~(}93jnU~nd0^G->z3aev1?B zz-e*yNu4lr3CA8+-Bh#o5(Jftt~Ll!K>bB{pm3j#!DByWX(tgnZUi%L70$G?;dag$ zp8~b)9uM6amB+OVGzy`@}Ro+H(u)WEhvucOFjYEkRl|HIX=N2f8b3`rgO*%1eB|3gZ_!> zS@XuFg3E=Q$!%@2AL+m7KO_=#C|rAXBD8V53g?9=Wn>JORbGjV8CFv@_FC_>n4Kyd zt8a04-pEt4TC1#|kMSP9y7*qm$m#{B-u<9s)`3!%iC&kUHp7#RnA5b&I;2QJF)C7} z(!jrQ^P%HnMQCFJSEP3ldEDyBp)s#YXfqDHRw!TVKt*B~FKKM*`#0jb@{J50GBN&*aY!31bz?bf1SmPVcq=69;6THlV!cx)z;SioAS zu+kB{<m(if z{fI{dS@MQ2uQ~oeN-4H0mCE2YsFE&z~{hpA71w&T8w zgrEl@vpj>po^F+IS=I$p_bDof)CLu_c^vQtX-rrw&qAM_+I6$o1TR# z0&LfJAS4RR9bd(PPVJ)p#nC7pa)la2hL1~muvb@^;a%r$zB;WZ%SEq2nwfFqZr{Qk zPVLfcoi)cbN7j9YlJk{;4Y(wqh@&3784MaY1mDdY z8|6^D{i&MNub2&)S@jK67BxR_Q6L&RqDS@nhAJv-cVn?-AffmN;&jK6xh?)*y(s44 zZ&2K4#{XH*#)0K^aDIR8v6zYHM3ckaca;+YPtg0bzq~ZzKp`(_o~M5 zmDMqAsQ&?QkjB=@nAhOvSpXW_MBVlb#`#~xSF!r{+4rtqF!dWS40LN*VqW~#Sd}Kx z`jtdYDLVdM+rEt6f{kn*El}l?`e4#Y$3<0su$vY^2su!KLQ{DWVtfMVV<6MD$JdBU z7YdYb0IwI{W%7ZdUqIEpe_g6&x3}|320|&&+u^1q5Aj&JSZwYd7?&6a@4UlHf1HI; zv_UDRWilQDJc^J0l88UM0?dLk|H3)00PU8qcc7xMU0dys1ay^T!o+b*EW9j!5+DwO zGf;_yu=l$P39PE5^T4B1SEEHeAuyfgL`i|Exdr^R?j@y5pp8rVqU)s`j|Ag5h%#J- z9nPr4m@b5+buu~DrN4oy)Kz@ zM^G0+{oStUhmg`#@t%aOd7a=250G+;k znr3S)xC9!7oI&bLLw6Z!FZ`@)u+lz-OqM(Q$A0^LLV>*c!`dOkxC5o1r~v^bkWk!i zD;W*W{`~(a|+Byqo8hwl()w(ZEN<^CA-_fRVwiZl1rw1fzofPWrBPg zSY$2s;ky@9*p4eo?Woe8Vlv8_#`gh~?Q3!a+AfEl9DMc^-pv18;stK@&Xf|=f_@Tp zkFo+sR@7h0BCzna$jXX0CJwCUDV5KJaCHnnS zKM+0rBEFJDb#mdycC`UtBG9uit)c|LA zUR(QstAb93ktYSz)#?j<`zcMWDG#YOhPhbEt!Q9$4n5eLJ2K>N(%b9JKS}(1Hs80G z*)9iY^-tSddQLsPRzByVPgQ+NS*pGKM`4bVxjALyi|gEDiFT9c_tTIl=uAy?;zY@~ zm7`fX^)B8kvhRPKIyua*UFVy6h}`$>H#XR0)s0uW(g_yI(~VXQ1`*)UWTPD(S5>T8 z`%TsF@tr@{$>;|XwjSA2Aay9bi@O7@QrPUJ&TIAdpx))O#L;%CzG6R6?J1pl&fbNy z{g#!&5(YmQFn_;QF?UoMKh|WROr4(V8bwA-bKHhB8m?y+&1Zb#EB^=0iBh-uA<~A+ zwoFL}h-rv+fBfuOTZ6TjPDZ}Vn2V-rJ4s`8j^wDVVX3Q&Ghb&pBun~Ad;-eoB-4~YQIvc-4p3@cA79CUKIzN!~*ldXS*A(Cv zzjy4g^?MiwxA8*pu8a^?y>FQZUW*qHk=~^s7O&5mDy8e>f0&Pm zT$s#HHyIrD2-NC7mf224bDWvf9}&J}8jralAh#VWc88GcdRO=Cb~ZMM>jnKe8tzcr zYiQ=qFfmVG(vkzM&?oYwR2P;^gwCH&bB-;bE%EeePj8~b#cM(9{`Dh^rV09Nk0zRGfH0A-F9mM z`77OADGkQ--bc?|yv3ZJKRWmon*HZbpTFz_t*pb{i_5m;=ObB9Wah=w8Ii zY2Vw2g0rWy=;N8S!Lbux1fzV!*NRP%IPhmqm(QI9+F|F}U@O~~dQVyqXu zZ~-+}xkEg|OwfcZ2Z?}^Pa$o|&0Bmin1$cU0a}t}_%$}K4V4#(pDQfKeOXmVK;Ws( zD-ruApl;$UZ;MapgDeiRup{&3tKOZk41U7MZ;46G=>7G_1IbuV9Dr7{_tT0bHS@GV z!Kji;8ctjslzq}m{>rd4J`(Q7_Nfo#)?{&Q*K$hOFv|39QEGh!;crc~1fT`;tGwXf zKJ6L?x1##PhD7A2WMMTKT{Q@pUaJ_;ha4+Wy&&_U@-Cd{BT;3oJknM7I!e_SJevZKk z+^Qhn6)Y>3<;S1D)Hj=Rr4|ikoBi_w;LPA+llJ3<)Cp;1`K{6L=|)TGMZLwO zc~AUJOk3&gifzft#dGMDUdx0kY8f_-Md+av=lb2Jv&QaoSJ+i7rSUbb>)G`TZujp{;4<`> zeCpMV%m%)Pxa~J(bE*G)d8OEOS+B)CT714tC+^`%(e#V)QVW|pl^fR=MST|EtBdyXd(i*4iRUes5fo4)07#~#Z24jEO=Hp8mu!eh{ov-CZ2LL z2+PcrS+Cb>uXo&BnQe==tM@nF8fHLOIDJy#N*fIjJLPbz>f||A-h~rqLz-)4eta*e zXnpbpKlr1T;@yJa;t0!**kOL@Aqp+^eVz-JCxfOwT=7NRyK&Zt)bHbwpk5c9Zk1>{ z?i;Z(>ybMVG((}yGpnPc(u-}O-W@m5P2JC&a&hW2DVxBJyQEffE2EDd^V#lBKJT+0 z!;-Z9=3s>4?M*(fNwx8gv#zcU(L85a=cHxU-mPj&+Ob&UwI4e>tHu{EHf*mBCga+9 zXAnbcK%#`+GA#O2=!Y?

-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 diff --git a/nodes.py b/nodes.py index cedc3d6..d5a1b7d 100644 --- a/nodes.py +++ b/nodes.py @@ -8,6 +8,7 @@ import traceback import gc from safetensors.torch import load_file as load_safetensors_file import comfy.utils +import torchaudio # Needed for potential resampling in encode_audio_prompt # --- Import Dia library components --- try: @@ -78,7 +79,7 @@ class DiaLoader: if not found: raise FileNotFoundError(f"Checkpoint file '{ckpt_name}' not found.") device = get_torch_device() - compute_dtype = torch.float32 + compute_dtype = torch.float32 # Dia currently configured for float32 compute current_key = (ckpt_path, str(compute_dtype), str(device)) @@ -115,20 +116,23 @@ class DiaLoader: except Exception as config_e: print(f"DiaLoader: Error validating embedded config: {config_e}"); raise config_e print(f"DiaLoader: Instantiating Dia model on device={device}...") + # Pass compute dtype string directly dia_object = Dia(config, compute_dtype=str(compute_dtype).split('.')[-1], device=device) print(f"DiaLoader: Loading model weights from: {ckpt_path}") try: + # Load directly to target device to save memory state_dict = load_safetensors_file(ckpt_path, device=str(device)) missing_keys, unexpected_keys = dia_object.model.load_state_dict(state_dict, strict=True) if missing_keys: print(f"DiaLoader: Warning - Missing keys in state_dict: {missing_keys}") if unexpected_keys: print(f"DiaLoader: Warning - Unexpected keys in state_dict: {unexpected_keys}") print("DiaLoader: Model weights loaded successfully.") - del state_dict; gc.collect() + del state_dict; gc.collect() # Clean up state dict except Exception as e: print(f"DiaLoader: Error loading state_dict: {e}"); traceback.print_exc() raise e + # Load DAC model after main model to ensure correct device placement context try: dia_object._load_dac_model() except Exception as dac_e: print(f"DiaLoader: Error loading required DAC model: {dac_e}"); traceback.print_exc(); raise dac_e @@ -142,22 +146,29 @@ class DiaLoader: class DiaGenerate: - """Generates audio using a pre-loaded Dia TTS model.""" + """Generates audio using a pre-loaded Dia TTS model, optionally with an audio prompt.""" @classmethod def INPUT_TYPES(s): """Defines the inputs for audio generation.""" return { "required": { "dia_model": ("DIA_MODEL",), - "text": ("STRING", {"multiline": True, "dynamicPrompts": False, "default": "[S1] Hello world. [S2] This is a test."}), + "text": ("STRING", { + "multiline": True, + "dynamicPrompts": False, + "default": "" + }), "max_tokens": ("INT", {"default": 1720, "min": 860, "max": 3072, "step": 10}), "cfg_scale": ("FLOAT", {"default": 3.0, "min": 1.0, "max": 7.0, "step": 0.1}), "temperature": ("FLOAT", {"default": 1.3, "min": 0.1, "max": 1.5, "step": 0.05}), "top_p": ("FLOAT", {"default": 0.95, "min": 0.1, "max": 1.0, "step": 0.01}), - "cfg_filter_top_k": ("INT", {"default": 35, "min": 1, "max": 100, "step": 1}), + "cfg_filter_top_k": ("INT", {"default": 32, "min": 1, "max": 100, "step": 1}), "speed_factor": ("FLOAT", {"default": 0.94, "min": 0.5, "max": 1.5, "step": 0.01}), "seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}), }, + "optional": { + "audio_prompt": ("AUDIO",), # Optional audio prompt input + } } RETURN_TYPES = ("AUDIO",) @@ -165,12 +176,15 @@ class DiaGenerate: FUNCTION = "generate_audio" CATEGORY = "audio/DiaTTS" - def generate_audio(self, dia_model: Dia, text: str, max_tokens: int, cfg_scale: float, temperature: float, top_p: float, cfg_filter_top_k: int, speed_factor: float, seed: int): - """Performs TTS generation using the provided Dia model object.""" + def generate_audio(self, dia_model: Dia, text: str, max_tokens: int, cfg_scale: float, temperature: float, top_p: float, cfg_filter_top_k: int, speed_factor: float, seed: int, audio_prompt=None): + """ + Performs TTS generation. If audio_prompt is provided, the 'text' input + should contain the transcript of the audio_prompt followed by the text to generate. + """ if dia_model is None: raise ValueError("Dia model object is required.") if not isinstance(dia_model, Dia): raise TypeError("Invalid object passed as dia_model.") if dia_model.model is None: raise ValueError("Dia object missing model.") - if dia_model.dac_model is None: raise RuntimeError("Dia object missing DAC model.") + # DAC model loading is handled internally by encode_audio_prompt or generate if needed exec_device = dia_model.device if exec_device.type == 'cuda' and not torch.cuda.is_available(): @@ -183,51 +197,114 @@ class DiaGenerate: if not text or text.isspace(): raise ValueError("Input text cannot be empty.") + # --- Handle Optional Audio Prompt --- + encoded_audio_prompt = None + if audio_prompt is not None: + waveform = audio_prompt.get('waveform') + sample_rate = audio_prompt.get('sample_rate') + if waveform is not None and sample_rate is not None: + # Ensure DAC is loaded before encoding + if not dia_model.dac_model: + try: dia_model._load_dac_model() + except Exception as dac_e: + print(f"DiaGenerate: Error loading DAC model for prompt encoding: {dac_e}") + raise dac_e + + print("DiaGenerate: Encoding provided audio prompt...") + try: + # Make sure waveform is float32 for DAC/resampling + if waveform.dtype != torch.float32: + waveform = waveform.to(torch.float32) + # Normalize if it was int type + original_dtype = audio_prompt.get('waveform').dtype + if not torch.is_floating_point(original_dtype): + max_val = torch.iinfo(original_dtype).max + waveform = waveform / max_val + + encoded_audio_prompt = dia_model.encode_audio_prompt(waveform, sample_rate) + print(f"DiaGenerate: Audio prompt encoded successfully, shape: {encoded_audio_prompt.shape}") + print("DiaGenerate: Using the 'text' input directly as combined prompt transcript + generation text.") + + except Exception as encode_e: + print(f"DiaGenerate: Warning - Failed to encode audio prompt: {encode_e}") + traceback.print_exc() + encoded_audio_prompt = None # Proceed without prompt if encoding fails + else: + print("DiaGenerate: Warning - Invalid audio_prompt dictionary received (missing waveform or sample_rate). Ignoring prompt.") + + # The 'text' input is used directly whether or not a prompt is provided + text_for_generate = text + + # --- Set Seed --- MAX_SEED_NUMPY = 2**32 - 1 seed_torch = seed; seed_numpy = seed % MAX_SEED_NUMPY torch.manual_seed(seed_torch); np.random.seed(seed_numpy) if exec_device.type == 'cuda': torch.cuda.manual_seed_all(seed_torch) - text_for_generate = text - # --- Progress Bar Setup --- - # The total number of steps is max_tokens (or slightly less if EOS is hit early) pbar = comfy.utils.ProgressBar(max_tokens) try: print(f"DiaGenerate: Starting generation on {exec_device}...") - # Pass the progress bar object to the generate method + # Pass the encoded prompt tensor (or None) to the generate method output_np = dia_model.generate( - text=text_for_generate, max_tokens=max_tokens, cfg_scale=cfg_scale, temperature=temperature, - top_p=top_p, cfg_filter_top_k=cfg_filter_top_k, use_torch_compile=False, verbose=True, - pbar=pbar # Pass pbar object here + text=text_for_generate, + max_tokens=max_tokens, + cfg_scale=cfg_scale, + temperature=temperature, + top_p=top_p, + cfg_filter_top_k=cfg_filter_top_k, + use_torch_compile=False, # Keep False for ComfyUI stability + verbose=True, # Enable Dia's internal verbose logging + audio_prompt=encoded_audio_prompt, # Pass the encoded tensor or None + pbar=pbar # Pass ComfyUI pbar object ) if output_np is None or output_np.size == 0: print("DiaGenerate: Warning - Generation returned empty. Outputting silence.") - silent_tensor = torch.zeros((1, 1, DEFAULT_SAMPLE_RATE), dtype=torch.float32) + silent_tensor = torch.zeros((1, 1, DEFAULT_SAMPLE_RATE), dtype=torch.float32) # Shape [1, 1, T] return ({'waveform': silent_tensor, 'sample_rate': DEFAULT_SAMPLE_RATE},) + # --- Speed Factor Adjustment --- if speed_factor != 1.0: - speed_factor = max(0.1, min(speed_factor, 5.0)) + speed_factor = max(0.1, min(speed_factor, 5.0)) # Clamp speed factor original_len = len(output_np) target_len = int(original_len / speed_factor) if target_len > 0 and target_len != original_len: print(f"DiaGenerate: Applying speed factor {speed_factor:.2f}x") + # Ensure float dtype for interpolation + if not np.issubdtype(output_np.dtype, np.floating): + output_np = output_np.astype(np.float32) + x_original = np.arange(original_len) x_resampled = np.linspace(0, original_len - 1, target_len) - if not np.issubdtype(output_np.dtype, np.floating): output_np = output_np.astype(np.float32) resampled_audio_np = np.interp(x_resampled, x_original, output_np) - output_np = resampled_audio_np + output_np = resampled_audio_np # Use the resampled audio + elif target_len == 0: + print(f"DiaGenerate: Warning - Speed factor {speed_factor:.2f}x results in zero length audio. Skipping adjustment.") + else: + # No change in length or factor is 1.0 + pass + # --- Format Output for ComfyUI --- try: + # Convert final numpy array to tensor output_tensor = torch.from_numpy(output_np.astype(np.float32)) - if output_tensor.ndim == 1: output_tensor = output_tensor.unsqueeze(0) - elif output_tensor.ndim != 2: raise ValueError(f"Unexpected audio dim: {output_tensor.ndim}.") - output_tensor = output_tensor.unsqueeze(0).contiguous() + # Ensure correct shape [Batch, Channels, Samples] - Dia output is mono. + if output_tensor.ndim == 1: # [T] -> [1, 1, T] + output_tensor = output_tensor.unsqueeze(0).unsqueeze(0) + elif output_tensor.ndim == 2 and output_tensor.shape[0] == 1: # [1, T] -> [1, 1, T] + output_tensor = output_tensor.unsqueeze(1) + elif output_tensor.ndim != 3 or output_tensor.shape[0] != 1 or output_tensor.shape[1] != 1: + raise ValueError(f"Unexpected intermediate audio tensor shape: {output_tensor.shape}. Expected mono audio resulting in [1, 1, T].") + + output_tensor = output_tensor.contiguous() + print(f"DiaGenerate: Final audio tensor shape: {output_tensor.shape}, Sample Rate: {DEFAULT_SAMPLE_RATE}") if len(output_tensor.shape) != 3: raise ValueError("Final tensor dim not 3!") - if output_tensor.shape[1] == 0 or output_tensor.shape[2] == 0: raise ValueError("Final tensor zero dim!") + if output_tensor.shape[0] == 0 or output_tensor.shape[1] == 0 or output_tensor.shape[2] == 0: + raise ValueError(f"Final tensor has a zero dimension: {output_tensor.shape}") + result = {'waveform': output_tensor, 'sample_rate': DEFAULT_SAMPLE_RATE} return (result,) except Exception as format_e: @@ -237,6 +314,11 @@ class DiaGenerate: print(f"DiaGenerate: Error during generation: {e}") traceback.print_exc() raise e + finally: + # Clean up CUDA cache if needed after generation + if exec_device.type == 'cuda': + gc.collect() + torch.cuda.empty_cache() # --- Node Mappings ---