A unified speech-language model that synchronizes speech and text into a single, cohesive stream via 1:1 alignment.
TADA is a unified speech-language model that synchronizes speech and text into a single, cohesive stream via 1:1 alignment. By leveraging a novel tokenizer and architectural design, TADA achieves high-fidelity synthesis and generation with a fraction of the computational overhead required by traditional models.
⭐️ arxiv: https://arxiv.org/abs/2602.23068
⭐️ demo1: https://huggingface.co/spaces/fffiloni/tada-dual-alignment-tts-demo
⭐️ demo2: https://huggingface.co/spaces/HumeAI/tada
⭐️ github: https://github.com/HumeAI/tada
⭐️ blog post: https://www.hume.ai/blog/opensource-tada \
TADA unifies modalities by ensuring that for every word or subword token, there is exactly one corresponding speech vector. This synchronized stream allows the model to "understand" the precise timing of speech relative to text.
Most TTS models require a fixed number of steps to produce one second of audio (e.g., 50 frames per second). TADA breaks this constraint:
From the github repo
pip install git+https://github.com/HumeAI/tada.git
From source
pip install -e .
We provide several model checkpoints:
| Model | Base Model | HuggingFace Hub |
|---|---|---|
| TADA-1B | Llama 3.2 1B | HumeAI/tada-1b |
| TADA-3B-ml | Llama 3.2 3B | HumeAI/tada-3b-ml |
All models use the same encoder (HumeAI/tada-codec) and can be loaded using the same API.
![]() | ![]() |
![]() | ![]() |
import torch
import torchaudio
from tada.modules.encoder import Encoder
from tada.modules.tada import TadaForCausalLM
device = "cuda"
encoder = Encoder.from_pretrained("HumeAI/tada-codec", subfolder="encoder").to(device)
model = TadaForCausalLM.from_pretrained("HumeAI/tada-1b").to(device)
audio, sample_rate = torchaudio.load("samples/ljspeech.wav")
audio = audio.to(device)
prompt_text = "The examination and testimony of the experts, enabled the commission to conclude that five shots may have been fired."
prompt = encoder(
audio, text=[prompt_text], sample_rate=sample_rate
)
output = model.generate(
prompt=prompt,
text="Please call Stella. Ask her to bring these things with her from the store.",
)
Provide num_extra_steps if you want to generate text+speech continuation of the prompt
output = model.generate(
prompt=prompt,
num_extra_steps=50
)
If you use this project in your research, please cite our paper:
@article{dang2026tada,
title={TADA: A Generative Framework for Speech Modeling via Text-Acoustic Dual Alignment},
author={Dang, Trung and Rao, Sharath and Gupta, Ananya and Gagne, Christopher and Tzirakis, Panagiotis and Baird, Alice and Cłapa, Jakub Piotr and Chin, Peter and Cowen, Alan},
journal={arXiv preprint arXiv:2602.23068},
year={2026}
}
Hume AI is an empathic AI research company. We research the datasets, tools, and models needed to give empathy to AI models to serve human wellbeing. If you're interested in any of our product or research collaborations, please reach out to us at hello@hume.ai
This project is built using Llama 3.2.
Llama 3.2 is licensed under the Llama 3.2 Community License.
31 commits
17 commits
A unified speech-language model that synchronizes speech and text into a single, cohesive stream via 1:1 alignment.
TADA is a unified speech-language model that synchronizes speech and text into a single, cohesive stream via 1:1 alignment. By leveraging a novel tokenizer and architectural design, TADA achieves high-fidelity synthesis and generation with a fraction of the computational overhead required by traditional models.
⭐️ arxiv: https://arxiv.org/abs/2602.23068
⭐️ demo1: https://huggingface.co/spaces/fffiloni/tada-dual-alignment-tts-demo
⭐️ demo2: https://huggingface.co/spaces/HumeAI/tada
⭐️ github: https://github.com/HumeAI/tada
⭐️ blog post: https://www.hume.ai/blog/opensource-tada \
TADA unifies modalities by ensuring that for every word or subword token, there is exactly one corresponding speech vector. This synchronized stream allows the model to "understand" the precise timing of speech relative to text.
Most TTS models require a fixed number of steps to produce one second of audio (e.g., 50 frames per second). TADA breaks this constraint:
From the github repo
pip install git+https://github.com/HumeAI/tada.git
From source
pip install -e .
We provide several model checkpoints:
| Model | Base Model | HuggingFace Hub |
|---|---|---|
| TADA-1B | Llama 3.2 1B | HumeAI/tada-1b |
| TADA-3B-ml | Llama 3.2 3B | HumeAI/tada-3b-ml |
All models use the same encoder (HumeAI/tada-codec) and can be loaded using the same API.
![]() | ![]() |
![]() | ![]() |
import torch
import torchaudio
from tada.modules.encoder import Encoder
from tada.modules.tada import TadaForCausalLM
device = "cuda"
encoder = Encoder.from_pretrained("HumeAI/tada-codec", subfolder="encoder").to(device)
model = TadaForCausalLM.from_pretrained("HumeAI/tada-1b").to(device)
audio, sample_rate = torchaudio.load("samples/ljspeech.wav")
audio = audio.to(device)
prompt_text = "The examination and testimony of the experts, enabled the commission to conclude that five shots may have been fired."
prompt = encoder(
audio, text=[prompt_text], sample_rate=sample_rate
)
output = model.generate(
prompt=prompt,
text="Please call Stella. Ask her to bring these things with her from the store.",
)
Provide num_extra_steps if you want to generate text+speech continuation of the prompt
output = model.generate(
prompt=prompt,
num_extra_steps=50
)
If you use this project in your research, please cite our paper:
@article{dang2026tada,
title={TADA: A Generative Framework for Speech Modeling via Text-Acoustic Dual Alignment},
author={Dang, Trung and Rao, Sharath and Gupta, Ananya and Gagne, Christopher and Tzirakis, Panagiotis and Baird, Alice and Cłapa, Jakub Piotr and Chin, Peter and Cowen, Alan},
journal={arXiv preprint arXiv:2602.23068},
year={2026}
}
Hume AI is an empathic AI research company. We research the datasets, tools, and models needed to give empathy to AI models to serve human wellbeing. If you're interested in any of our product or research collaborations, please reach out to us at hello@hume.ai
This project is built using Llama 3.2.
Llama 3.2 is licensed under the Llama 3.2 Community License.
31 commits
17 commits