Proyek ini masih bekerja pada kemajuan. Untuk membuat Funcodec lebih baik, beri tahu saya kekhawatiran Anda dan jangan ragu untuk mengomentari mereka di bagian Issues .
egs/LibriTTS/text2speech_laura/README.md untuk detail lebih lanjut. git clone https://github.com/alibaba/FunCodec.git && cd FunCodec
pip install --editable ./? Tautan ke hub Model Huggingface, sementara merujuk Modelscope.
| Nama model | Hub Model | Corpus | Bitrate | Parameter | Jepit |
|---|---|---|---|---|---|
| audio_codec-encodec-zh_en-general-16k-nq32ds640-pytorch | ? | Umum | 250 ~ 8000 | 57.83 m | 7.73g |
| audio_codec-encodec-zh_en-general-16k-nq32ds320-pytorch | ? | Umum | 500 ~ 16000 | 14.85 m | 3.72 g |
| AUDIO_CODEC-ESCODEC-EN-LIBRITTS-16K-NQ32DS640-PYTORCH | ? | Pustaka | 250 ~ 8000 | 57.83 m | 7.73g |
| AUDIO_CODEC-ESCODEC-EN-LIBRITTS-16K-NQ32DS320-PYTORCH | ? | Pustaka | 500 ~ 16000 | 14.85 m | 3.72 g |
| AUDIO_CODEC-FREQCODEC_MAGPHASE-EN-LIBRITTS-16K-GR8NQ32DS320-PYTORCH | ? | Pustaka | 500 ~ 16000 | 4,50 m | 2.18 g |
| AUDIO_CODEC-FREQCODEC_MAGPHASE-EN-LIBRITTS-16K-GR1NQ32DS320-PYTORCH | ? | Pustaka | 500 ~ 16000 | 0,52 m | 0,34 g |
Silakan merujuk egs/LibriTTS/codec/encoding_decoding.sh untuk mengunduh model pretrained:
cd egs/LibriTTS/codec
model_name=audio_codec-encodec-zh_en-general-16k-nq32ds640-pytorch
bash encoding_decoding.sh --stage 0 --model_name ${model_name} --model_hub modelscope
# The pre-trained model will be downloaded to exp/audio_codec-encodec-zh_en-general-16k-nq32ds640-pytorch Silakan merujuk egs/LibriTTS/codec/encoding_decoding.sh untuk mengunduh model pretrained:
cd egs/LibriTTS/codec
model_name=audio_codec-encodec-zh_en-general-16k-nq32ds640-pytorch
bash encoding_decoding.sh --stage 0 --model_name ${model_name} --model_hub huggingface
# The pre-trained model will be downloaded to exp/audio_codec-encodec-zh_en-general-16k-nq32ds640-pytorch Silakan merujuk egs/LibriTTS/codec/encoding_decoding.sh untuk melakukan pengkodean dan decoding. Ekstrak kode dengan file input input_wav.scp , dan kode akan disimpan ke output_dir/codecs.txt dalam format JSONL.
cd egs/LibriTTS/codec
bash encoding_decoding.sh --stage 1 --batch_size 16 --num_workers 4 --gpu_devices " 0,1 "
--model_dir exp/ ${model_name} --bit_width 16000
--wav_scp input_wav.scp --out_dir outputs/codecs/
# input_wav.scp has the following format:
# uttid1 path/to/file1.wav
# uttid2 path/to/file2.wav
# ... Kode decode dengan file input codecs.txt , dan bentuk gelombang yang direkonstruksi akan disimpan ke output_dir/logdir/output.*/*.wav .
bash encoding_decoding.sh --stage 2 --batch_size 16 --num_workers 4 --gpu_devices " 0,1 "
--model_dir exp/ ${model_name} --bit_width 16000 --file_sampling_rate 16000
--wav_scp codecs.txt --out_dir outputs/recon_wavs
# codecs.scp is the output of above encoding stage, which has the following format:
# uttid1 [[[1, 2, 3, ...],[2, 3, 4, ...], ...]]
# uttid2 [[[9, 7, 5, ...],[3, 1, 2, ...], ...]] Untuk korpora open-source yang biasa digunakan, Anda dapat melatih model menggunakan resep di direktori egs . Misalnya, untuk melatih model di corpus LibriTTS , Anda dapat menggunakan egs/LibriTTS/codec/run.sh :
# entry the LibriTTS recipe directory
cd egs/LibriTTS/codec
# run data downloading, preparation and training stages with 2 GPUs (device 0 and 1)
bash run.sh --stage 0 --stop_stage 3 --gpu_devices 0,1 --gpu_num 2Kami merekomendasikan menjalankan skrip panggung demi panggung untuk memiliki gambaran umum Funcodec.
Untuk korpora yang terbuka atau dataset khusus, Anda dapat menyiapkan data sendiri. Secara umum, Funcodec menggunakan file wav.scp seperti Kaldi untuk mengatur file data. wav.scp memiliki format berikut:
# for waveform files
uttid1 /path/to/uttid1.wav
uttid2 /path/to/uttid2.wav
# for kaldi-ark files
uttid3 /path/to/ark1.wav:10
uttid4 /path/to/ark1.wav:200
uttid5 /path/to/ark2.wav:10 Seperti yang ditunjukkan pada contoh di atas, Funcodec mendukung kombinasi bentuk gelombang atau file Kaldi-ark dalam satu file wav.scp untuk pelatihan dan inferensi. Berikut adalah skrip demo untuk melatih model pada dataset khusus Anda bernama foo :
cd egs/LibriTTS/codec
# 0. make the directory for train, dev and test sets
mkdir -p dump/foo/train dump/foo/dev dump/foo/test
# 1a. if you already have the wav.scp file, just place them under the corresponding directories
mv train.scp dump/foo/train/ ; mv dev.scp dump/foo/dev/ ; mv test.scp dump/foo/test/ ;
# 1b. if you don't have the wav.scp file, you can prepare it as follows
find path/to/train_set/ -iname " *.wav " | awk -F ' / ' ' {print $(NF),$0} ' | sort > dump/foo/train/wav.scp
find path/to/dev_set/ -iname " *.wav " | awk -F ' / ' ' {print $(NF),$0} ' | sort > dump/foo/dev/wav.scp
find path/to/test_set/ -iname " *.wav " | awk -F ' / ' ' {print $(NF),$0} ' | sort > dump/foo/test/wav.scp
# 2. collate shape files
mkdir exp/foo_states/train exp/foo_states/dev
torchrun --nproc_per_node=4 --master_port=1234 scripts/gen_wav_length.py --wav_scp dump/foo/train/wav.scp --out_dir exp/foo_states/train/wav_length
cat exp/foo_states/train/wav_length/wav_length. * .txt | shuf > exp/foo_states/train/speech_shape
torchrun --nproc_per_node=4 --master_port=1234 scripts/gen_wav_length.py --wav_scp dump/foo/dev/wav.scp --out_dir exp/foo_states/dev/wav_length
cat exp/foo_states/dev/wav_length/wav_length. * .txt | shuf > exp/foo_states/dev/speech_shape
# 3. train the model with 2 GPUs (device 4 and 5) on the customized dataset (foo)
bash run.sh --gpu_devices 4,5 --gpu_num 2 --dumpdir dump/foo --state_dir foo_statesProyek ini dilisensikan di bawah lisensi MIT. Funcodec juga berisi berbagai komponen pihak ketiga dan beberapa kode yang dimodifikasi dari repo lain di bawah lisensi sumber terbuka lainnya.
@misc { du2023funcodec ,
title = { FunCodec: A Fundamental, Reproducible and Integrable Open-source Toolkit for Neural Speech Codec } ,
author = { Zhihao Du, Shiliang Zhang, Kai Hu, Siqi Zheng } ,
year = { 2023 } ,
eprint = { 2309.07405 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.Sound }
}