What is a recipe
What is a recipe
In ESPnet3, a recipe is an all-in-one project under egs3/. It contains the configs, Python code, stage runner, and output paths for one system.
Important
A recipe is the main working unit for running a baseline, adapting it, fine-tuning, evaluating, and publishing results.
How files and stages connect
A recipe is made of configuration files, dataset code, and generated outputs that are connected through execution stages. Click a file or stage below to explore how data flows through the project.
conf/training.yaml, dataset/dataset.py, and any custom code in src/. Writes *.ckpt to exp/{expdir}/. Logs are excluded from this view.Multi-GPU, DeepSpeed, and profiling are config-level flags.
Stages run in this order (a system only runs the ones you pass to --stages):
create_dataset → train_tokenizer → collect_stats → train → infer → measure
→ pack_model → upload_model → pack_demo → upload_demoTTSSystem inserts create_token_list and remove_long_short before collect_stats.
create_dataset reads training_config.dataset and, for each entry, imports the recipe's dataset module and looks up two classes by name: Dataset and DatasetBuilder. A recipe's dataset/__init__.py must export exactly those two names (aliased from whatever your real classes are called) — this is how BaseSystem.create_dataset() finds your builder without any extra registration step.
A recipe is the working project you use to:
- run a baseline
- adapt the baseline to your data
- fine-tune an existing model
- run inference and evaluation
- pack and publish outputs
If you clone a recipe into your own directory, you can keep using that cloned project for the full workflow.
Note
The cloned recipe is meant to be edited. You are expected to change configs, dataset wiring, and model settings inside that project.
Clone a recipe and keep working in it
When you run:
espnet3 clone librispeech/asr --project my_project
cd my_projectyou get a full recipe project ready for baseline runs. It is also the place where you can later:
- change configs
- swap datasets
- continue training
- fine-tune from a checkpoint or pretrained model
- run inference and measure results
So the cloned recipe is not temporary. It becomes your working project.
Typical flow
- Clone an existing recipe.
- Run the baseline once.
- Read the configs and dataset code.
- Replace the dataset or model settings you need.
- Re-run training or fine-tuning in the same project.
- Run inference and measurement.
