| #!/bin/bash |
|
|
| |
|
|
| set -euo pipefail |
|
|
| stage=0 |
| stop_stage=2 |
|
|
| |
| |
| GPU_IDS="0,1,2,3,4,5,6,7" |
| NUM_GPUS=8 |
|
|
| |
| dl_dir="download" |
|
|
| |
| |
| |
| |
| |
| |
| MANIFEST_DIR="data/emilia/manifests" |
|
|
| |
| TOKEN_DIR="data/emilia/tokens" |
|
|
| |
| TOKENIZER_PATH="eustlb/higgs-audio-v2-tokenizer" |
|
|
| |
| TRAIN_CONFIG="config/train_config_emilia.json" |
|
|
| |
| data_config="config/data_config_emilia.json" |
|
|
| |
| OUTPUT_DIR="exp/omnivoice_emilia" |
| |
|
|
| export PYTHONPATH="$(cd "$(dirname "$0")/.." && pwd):${PYTHONPATH:-}" |
|
|
|
|
| |
| if [ $stage -le 0 ] && [ $stop_stage -ge 0 ]; then |
| echo "Stage 0: Download data" |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| if [ ! -d "$dl_dir"/Amphion___Emilia/raw ]; then |
| echo "Please refer https://openxlab.org.cn/datasets/Amphion/Emilia to download the dataset." |
| exit 1 |
| fi |
|
|
| |
| |
| |
| |
| |
| |
|
|
| for split in emilia_en_dev emilia_zh_dev emilia_en_train emilia_zh_train; do |
| if [ ! -f "${MANIFEST_DIR}/${split}.jsonl" ]; then |
| echo "Please download the manifest for ${split} and place it in ${MANIFEST_DIR}/${split}.jsonl" |
| exit 1 |
| fi |
| done |
|
|
| echo " Done. All manifests and data are in place." |
| fi |
|
|
|
|
| |
| if [ $stage -le 1 ] && [ $stop_stage -ge 1 ]; then |
| echo "Stage 1: Tokenizing audio" |
|
|
| for split in emilia_en_dev emilia_zh_dev emilia_en_train emilia_zh_train; do |
| echo " Tokenizing ${split} from ${MANIFEST_DIR}/${split}.jsonl" |
|
|
| CUDA_VISIBLE_DEVICES=${GPU_IDS} \ |
| python -m omnivoice.scripts.extract_audio_tokens \ |
| --input_jsonl "${MANIFEST_DIR}/${split}.jsonl" \ |
| --tar_output_pattern "${TOKEN_DIR}/${split}/audios/shard-%06d.tar" \ |
| --jsonl_output_pattern "${TOKEN_DIR}/${split}/txts/shard-%06d.jsonl" \ |
| --tokenizer_path "${TOKENIZER_PATH}" \ |
| --nj_per_gpu 3 \ |
| --shuffle True |
|
|
| echo " Done. Tokens written to ${TOKEN_DIR}/${split}" |
| done |
| fi |
|
|
|
|
| |
| if [ $stage -le 2 ] && [ $stop_stage -ge 2 ]; then |
| echo "Stage 2: Training" |
|
|
| accelerate launch \ |
| --gpu_ids "${GPU_IDS}" \ |
| --num_processes ${NUM_GPUS} \ |
| -m omnivoice.cli.train \ |
| --train_config ${TRAIN_CONFIG} \ |
| --data_config ${data_config} \ |
| --output_dir ${OUTPUT_DIR} |
| fi |