Reosnate is a SOTA text-to-audio generator reinforced with online GRPO algorithm. It leverages the strong reasoning capabilities of modern Large Audio Language Models as reward models. This repo provides a comprehensive pipeline for audio generation, covering Pre-training, SFT, DPO, and GRPO.
conda create -n resonate python=3.11 -y
conda activate resonate
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 --upgrade
git clone https://github.com/xiquan-li/Resonate.git
cd Resonate
pip install -e .
To generate audio with our pre-trained model, simply run:
python demo.py --prompt 'your prompt'
This will automatically download the pre-trained checkpoints from huggingface, and generate audio according to your prompt.
By default, this will use Resonate-GRPO.
The output audio will be at Resonate/output/, and the checkpoints will be at Resonate/weights/.
Before training, make sure that all files from here are placed in Resonate/weights.
To launch GRPO training, run:
bash scripts/train_grpo.sh
This script uses the configuration file Resonate/config/GRPO_flant5_44kMMVAE_fluxaudio_audiocaps_qwen25omni_semantic.yaml. By default, the training employs Qwen2.5-Omni-7B as the reward model and uses Resonate/data/AudioCaps/GRPO_Meta/train_metadata.jsonl as the dataset (which corresponds to the AudioCaps training set).
The training outputs will be saved to exps/TTA/{exp_id}.
Note: The default configuration requires approximately 90GB of GPU memory. To reduce memory usage, you can decrease the values of sample.num_audio_per_prompt and sample.train_batch_size.
We also provide another config that leverages the CLAP model for GRPO training, which is at Resonate/config/GRPO_flant5_44kMMVAE_fluxaudio_audiocaps_clapreward.yaml.
To launch DPO training, run:
bash scripts/train_dpo.sh
This script uses the configuration file Resonate/config/DPO_flant5_44kMMVAE_fluxaudio_audiocaps_qwen25omni_semantic_offline.yaml.
Before starting flow-matching training, you need to prepare JSONL metadata file for your dataset, which should have the same format as Resonate/data/AudioCaps/train_audiocaps_wduration.jsonl. The metadata file must include the following keys: audio_id, audio_path, and caption.
After preparing your metadata file, update your data configuration file accordingly (see Resonate/config/data/audiocaps.yaml for reference). Also, ensure that the training config Resonate/config/T2A_pretrain_10s_fixedbsz_fluxaudio_flant5_44kMMVAE.yaml points to your data config under the defaults/override data section.
Finally, to launch Flow Matching-based pre-training, run:
bash scripts/train_fm.sh
The output will also be saved to exps/TTA/{exp_id}.
Once the training is complete, you can run inference using your trained checkpoint with the following command:
bash Resonate/scripts/infer.sh
Make sure to modify ckpt_path in the script to point to the specific checkpoint you obtained from your training run.
We provide a simple script to evaluate your model's performance on TTA-Bench. First, install the required packages:
pip install msclap audiobox_aesthetics torchcodec
Then run:
scripts/eval.sh
Before running the script, update ckpt_path to point to your trained model checkpoint, and set output_path to the directory where you want to save the results.
The script will automatically perform batch inference on the accuracy subset of TTA-Bench and compute AudioBox-AES, CLAPScore, and AQAScore (based on Qwen3-Omni-Instruct).
@article{li2026resonate,
title={Resonate: Reinforcing Text-to-Audio Generation via Online Feedback from Large Audio Language Models},
author={Li, Xiquan and Liu, Junxi and Chen, Wenxi and Zhu, Haina and Ma, Ziyang and Chen, Xie},
journal={arXiv preprint arXiv:2603.11661},
year={2026}
}
This codebase is built upon MeanAudio and FlowGRPO. We sincerely thank the authors and contributors of these projects for open-sourcing their excellent work.
15 commits
Python
95.2%
Cuda
2.3%
C
1.5%
Reosnate is a SOTA text-to-audio generator reinforced with online GRPO algorithm. It leverages the strong reasoning capabilities of modern Large Audio Language Models as reward models. This repo provides a comprehensive pipeline for audio generation, covering Pre-training, SFT, DPO, and GRPO.
conda create -n resonate python=3.11 -y
conda activate resonate
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 --upgrade
git clone https://github.com/xiquan-li/Resonate.git
cd Resonate
pip install -e .
To generate audio with our pre-trained model, simply run:
python demo.py --prompt 'your prompt'
This will automatically download the pre-trained checkpoints from huggingface, and generate audio according to your prompt.
By default, this will use Resonate-GRPO.
The output audio will be at Resonate/output/, and the checkpoints will be at Resonate/weights/.
Before training, make sure that all files from here are placed in Resonate/weights.
To launch GRPO training, run:
bash scripts/train_grpo.sh
This script uses the configuration file Resonate/config/GRPO_flant5_44kMMVAE_fluxaudio_audiocaps_qwen25omni_semantic.yaml. By default, the training employs Qwen2.5-Omni-7B as the reward model and uses Resonate/data/AudioCaps/GRPO_Meta/train_metadata.jsonl as the dataset (which corresponds to the AudioCaps training set).
The training outputs will be saved to exps/TTA/{exp_id}.
Note: The default configuration requires approximately 90GB of GPU memory. To reduce memory usage, you can decrease the values of sample.num_audio_per_prompt and sample.train_batch_size.
We also provide another config that leverages the CLAP model for GRPO training, which is at Resonate/config/GRPO_flant5_44kMMVAE_fluxaudio_audiocaps_clapreward.yaml.
To launch DPO training, run:
bash scripts/train_dpo.sh
This script uses the configuration file Resonate/config/DPO_flant5_44kMMVAE_fluxaudio_audiocaps_qwen25omni_semantic_offline.yaml.
Before starting flow-matching training, you need to prepare JSONL metadata file for your dataset, which should have the same format as Resonate/data/AudioCaps/train_audiocaps_wduration.jsonl. The metadata file must include the following keys: audio_id, audio_path, and caption.
After preparing your metadata file, update your data configuration file accordingly (see Resonate/config/data/audiocaps.yaml for reference). Also, ensure that the training config Resonate/config/T2A_pretrain_10s_fixedbsz_fluxaudio_flant5_44kMMVAE.yaml points to your data config under the defaults/override data section.
Finally, to launch Flow Matching-based pre-training, run:
bash scripts/train_fm.sh
The output will also be saved to exps/TTA/{exp_id}.
Once the training is complete, you can run inference using your trained checkpoint with the following command:
bash Resonate/scripts/infer.sh
Make sure to modify ckpt_path in the script to point to the specific checkpoint you obtained from your training run.
We provide a simple script to evaluate your model's performance on TTA-Bench. First, install the required packages:
pip install msclap audiobox_aesthetics torchcodec
Then run:
scripts/eval.sh
Before running the script, update ckpt_path to point to your trained model checkpoint, and set output_path to the directory where you want to save the results.
The script will automatically perform batch inference on the accuracy subset of TTA-Bench and compute AudioBox-AES, CLAPScore, and AQAScore (based on Qwen3-Omni-Instruct).
@article{li2026resonate,
title={Resonate: Reinforcing Text-to-Audio Generation via Online Feedback from Large Audio Language Models},
author={Li, Xiquan and Liu, Junxi and Chen, Wenxi and Zhu, Haina and Ma, Ziyang and Chen, Xie},
journal={arXiv preprint arXiv:2603.11661},
year={2026}
}
This codebase is built upon MeanAudio and FlowGRPO. We sincerely thank the authors and contributors of these projects for open-sourcing their excellent work.
15 commits
Python
95.2%
Cuda
2.3%
C
1.5%