mirror of
https://github.com/k2-fsa/icefall.git
synced 2025-08-09 01:52:41 +00:00
* Init commit for recipes trained on multiple zh datasets. * fbank extraction for thchs30 * added support for aishell1 * added support for aishell-2 * fixes * fixes * fixes * added support for stcmds and primewords * fixes * added support for magicdata script for fbank computation not done yet * added script for magicdata fbank computation * file permission fixed * updated for the wenetspeech recipe * updated * Update preprocess_kespeech.py * updated * updated * updated * updated * file permission fixed * updated paths * fixes * added support for kespeech dev/test set fbank computation * fixes for file permission * refined support for KeSpeech * added scripts for BPE model training * updated * init commit for the multi_zh-cn zipformer recipe * disable speed perturbation by default * updated * updated * added necessary files for the zipformer recipe * removed redundant wenetspeech M and S sets * updates for multi dataset decoding * refined * formatting issues fixed * updated * minor fixes * this commit finalize the recipe (hopefully) * fixed formatting issues * minor fixes * updated * using soft links to reduce redundancy * minor updates * using soft links to reduce redundancy * minor updates * minor updates * using soft links to reduce redundancy * minor updates * Update README.md * minor updates * Update egs/multi_zh-hans/ASR/local/compute_fbank_magicdata.py Co-authored-by: Fangjun Kuang <csukuangfj@gmail.com> * Update egs/multi_zh-hans/ASR/local/compute_fbank_magicdata.py Co-authored-by: Fangjun Kuang <csukuangfj@gmail.com> * Update egs/multi_zh-hans/ASR/local/compute_fbank_stcmds.py Co-authored-by: Fangjun Kuang <csukuangfj@gmail.com> * Update egs/multi_zh-hans/ASR/local/compute_fbank_stcmds.py Co-authored-by: Fangjun Kuang <csukuangfj@gmail.com> * Update egs/multi_zh-hans/ASR/local/compute_fbank_primewords.py Co-authored-by: Fangjun Kuang <csukuangfj@gmail.com> * Update egs/multi_zh-hans/ASR/local/compute_fbank_primewords.py Co-authored-by: Fangjun Kuang <csukuangfj@gmail.com> * minor updates * minor fixes * fixed a formatting issue * Update preprocess_kespeech.py * Update prepare.sh * Update egs/multi_zh-hans/ASR/local/compute_fbank_kespeech_splits.py Co-authored-by: Fangjun Kuang <csukuangfj@gmail.com> * Update egs/multi_zh-hans/ASR/local/preprocess_kespeech.py Co-authored-by: Fangjun Kuang <csukuangfj@gmail.com> * removed redundant files * symlinks added * minor updates * added CI tests for `multi_zh-hans` * minor fixes * Update run-multi-zh_hans-zipformer.sh * Update run-multi-zh_hans-zipformer.sh * Update run-multi-zh_hans-zipformer.sh * Update run-multi-zh_hans-zipformer.sh * Update run-multi-zh_hans-zipformer.sh * Update run-multi-zh_hans-zipformer.sh * Update run-multi-zh_hans-zipformer.sh --------- Co-authored-by: Fangjun Kuang <csukuangfj@gmail.com>
317 lines
11 KiB
Python
317 lines
11 KiB
Python
# Copyright 2023 Xiaomi Corp. (authors: Zengrui Jin)
|
|
#
|
|
# See ../../../../LICENSE for clarification regarding multiple authors
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
|
|
import glob
|
|
import logging
|
|
import re
|
|
from pathlib import Path
|
|
from typing import Dict, List
|
|
|
|
import lhotse
|
|
from lhotse import CutSet, load_manifest_lazy
|
|
|
|
|
|
class MultiDataset:
|
|
def __init__(self, fbank_dir: str):
|
|
"""
|
|
Args:
|
|
manifest_dir:
|
|
It is expected to contain the following files:
|
|
- aidatatang_cuts_train.jsonl.gz
|
|
- aishell_cuts_train.jsonl.gz
|
|
- aishell2_cuts_train.jsonl.gz
|
|
- aishell4_cuts_train_L.jsonl.gz
|
|
- aishell4_cuts_train_M.jsonl.gz
|
|
- aishell4_cuts_train_S.jsonl.gz
|
|
- alimeeting-far_cuts_train.jsonl.gz
|
|
- magicdata_cuts_train.jsonl.gz
|
|
- primewords_cuts_train.jsonl.gz
|
|
- stcmds_cuts_train.jsonl.gz
|
|
- thchs_30_cuts_train.jsonl.gz
|
|
- kespeech/kespeech-asr_cuts_train_phase1.jsonl.gz
|
|
- kespeech/kespeech-asr_cuts_train_phase2.jsonl.gz
|
|
- wenetspeech/cuts_L.jsonl.gz
|
|
"""
|
|
self.fbank_dir = Path(fbank_dir)
|
|
|
|
def train_cuts(self) -> CutSet:
|
|
logging.info("About to get multidataset train cuts")
|
|
|
|
# THCHS-30
|
|
logging.info("Loading THCHS-30 in lazy mode")
|
|
thchs_30_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "thchs_30_cuts_train.jsonl.gz"
|
|
)
|
|
|
|
# AISHELL-1
|
|
logging.info("Loading Aishell-1 in lazy mode")
|
|
aishell_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell_cuts_train.jsonl.gz"
|
|
)
|
|
|
|
# AISHELL-2
|
|
logging.info("Loading Aishell-2 in lazy mode")
|
|
aishell_2_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell2_cuts_train.jsonl.gz"
|
|
)
|
|
|
|
# AISHELL-4
|
|
logging.info("Loading Aishell-4 in lazy mode")
|
|
aishell_4_L_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell4_cuts_train_L.jsonl.gz"
|
|
)
|
|
aishell_4_M_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell4_cuts_train_M.jsonl.gz"
|
|
)
|
|
aishell_4_S_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell4_cuts_train_S.jsonl.gz"
|
|
)
|
|
|
|
# ST-CMDS
|
|
logging.info("Loading ST-CMDS in lazy mode")
|
|
stcmds_cuts = load_manifest_lazy(self.fbank_dir / "stcmds_cuts_train.jsonl.gz")
|
|
|
|
# Primewords
|
|
logging.info("Loading Primewords in lazy mode")
|
|
primewords_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "primewords_cuts_train.jsonl.gz"
|
|
)
|
|
|
|
# MagicData
|
|
logging.info("Loading MagicData in lazy mode")
|
|
magicdata_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "magicdata_cuts_train.jsonl.gz"
|
|
)
|
|
|
|
# Aidatatang_200zh
|
|
logging.info("Loading Aidatatang_200zh in lazy mode")
|
|
aidatatang_200zh_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aidatatang_cuts_train.jsonl.gz"
|
|
)
|
|
|
|
# Ali-Meeting
|
|
logging.info("Loading Ali-Meeting in lazy mode")
|
|
alimeeting_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "alimeeting-far_cuts_train.jsonl.gz"
|
|
)
|
|
|
|
# WeNetSpeech
|
|
logging.info("Loading WeNetSpeech in lazy mode")
|
|
wenetspeech_L_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "wenetspeech" / "cuts_L.jsonl.gz"
|
|
)
|
|
|
|
# KeSpeech
|
|
logging.info("Loading KeSpeech in lazy mode")
|
|
kespeech_1_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "kespeech" / "kespeech-asr_cuts_train_phase1.jsonl.gz"
|
|
)
|
|
kespeech_2_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "kespeech" / "kespeech-asr_cuts_train_phase2.jsonl.gz"
|
|
)
|
|
|
|
return CutSet.mux(
|
|
thchs_30_cuts,
|
|
aishell_cuts,
|
|
aishell_2_cuts,
|
|
aishell_4_L_cuts,
|
|
aishell_4_M_cuts,
|
|
aishell_4_S_cuts,
|
|
stcmds_cuts,
|
|
primewords_cuts,
|
|
magicdata_cuts,
|
|
aidatatang_200zh_cuts,
|
|
alimeeting_cuts,
|
|
wenetspeech_L_cuts,
|
|
kespeech_1_cuts,
|
|
kespeech_2_cuts,
|
|
weights=[
|
|
len(thchs_30_cuts),
|
|
len(aishell_cuts),
|
|
len(aishell_2_cuts),
|
|
len(aishell_4_L_cuts),
|
|
len(aishell_4_M_cuts),
|
|
len(aishell_4_S_cuts),
|
|
len(stcmds_cuts),
|
|
len(primewords_cuts),
|
|
len(magicdata_cuts),
|
|
len(aidatatang_200zh_cuts),
|
|
len(alimeeting_cuts),
|
|
len(wenetspeech_L_cuts),
|
|
len(kespeech_1_cuts),
|
|
len(kespeech_2_cuts),
|
|
],
|
|
)
|
|
|
|
def dev_cuts(self) -> CutSet:
|
|
logging.info("About to get multidataset dev cuts")
|
|
|
|
# Aidatatang_200zh
|
|
logging.info("Loading Aidatatang_200zh DEV set in lazy mode")
|
|
aidatatang_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aidatatang_cuts_dev.jsonl.gz"
|
|
)
|
|
|
|
# AISHELL
|
|
logging.info("Loading Aishell DEV set in lazy mode")
|
|
aishell_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell_cuts_dev.jsonl.gz"
|
|
)
|
|
|
|
# AISHELL-2
|
|
logging.info("Loading Aishell-2 DEV set in lazy mode")
|
|
aishell2_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell2_cuts_dev.jsonl.gz"
|
|
)
|
|
|
|
# Ali-Meeting
|
|
logging.info("Loading Ali-Meeting DEV set in lazy mode")
|
|
alimeeting_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "alimeeting-far_cuts_eval.jsonl.gz"
|
|
)
|
|
|
|
# MagicData
|
|
logging.info("Loading MagicData DEV set in lazy mode")
|
|
magicdata_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "magicdata_cuts_dev.jsonl.gz"
|
|
)
|
|
|
|
# KeSpeech
|
|
logging.info("Loading KeSpeech DEV set in lazy mode")
|
|
kespeech_dev_phase1_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "kespeech" / "kespeech-asr_cuts_dev_phase1.jsonl.gz"
|
|
)
|
|
kespeech_dev_phase2_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "kespeech" / "kespeech-asr_cuts_dev_phase2.jsonl.gz"
|
|
)
|
|
|
|
# WeNetSpeech
|
|
logging.info("Loading WeNetSpeech DEV set in lazy mode")
|
|
wenetspeech_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "wenetspeech" / "cuts_DEV.jsonl.gz"
|
|
)
|
|
|
|
return wenetspeech_dev_cuts
|
|
# return [
|
|
# aidatatang_dev_cuts,
|
|
# aishell_dev_cuts,
|
|
# aishell2_dev_cuts,
|
|
# alimeeting_dev_cuts,
|
|
# magicdata_dev_cuts,
|
|
# kespeech_dev_phase1_cuts,
|
|
# kespeech_dev_phase2_cuts,
|
|
# wenetspeech_dev_cuts,
|
|
# ]
|
|
|
|
def test_cuts(self) -> Dict[str, CutSet]:
|
|
logging.info("About to get multidataset test cuts")
|
|
|
|
# Aidatatang_200zh
|
|
logging.info("Loading Aidatatang_200zh set in lazy mode")
|
|
aidatatang_test_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aidatatang_cuts_test.jsonl.gz"
|
|
)
|
|
aidatatang_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aidatatang_cuts_dev.jsonl.gz"
|
|
)
|
|
|
|
# AISHELL
|
|
logging.info("Loading Aishell set in lazy mode")
|
|
aishell_test_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell_cuts_test.jsonl.gz"
|
|
)
|
|
aishell_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell_cuts_dev.jsonl.gz"
|
|
)
|
|
|
|
# AISHELL-2
|
|
logging.info("Loading Aishell-2 set in lazy mode")
|
|
aishell2_test_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell2_cuts_test.jsonl.gz"
|
|
)
|
|
aishell2_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell2_cuts_dev.jsonl.gz"
|
|
)
|
|
|
|
# AISHELL-4
|
|
logging.info("Loading Aishell-4 TEST set in lazy mode")
|
|
aishell4_test_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "aishell4_cuts_test.jsonl.gz"
|
|
)
|
|
|
|
# Ali-Meeting
|
|
logging.info("Loading Ali-Meeting set in lazy mode")
|
|
alimeeting_test_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "alimeeting-far_cuts_test.jsonl.gz"
|
|
)
|
|
alimeeting_eval_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "alimeeting-far_cuts_eval.jsonl.gz"
|
|
)
|
|
|
|
# MagicData
|
|
logging.info("Loading MagicData set in lazy mode")
|
|
magicdata_test_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "magicdata_cuts_test.jsonl.gz"
|
|
)
|
|
magicdata_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "magicdata_cuts_dev.jsonl.gz"
|
|
)
|
|
|
|
# KeSpeech
|
|
logging.info("Loading KeSpeech set in lazy mode")
|
|
kespeech_test_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "kespeech" / "kespeech-asr_cuts_test.jsonl.gz"
|
|
)
|
|
kespeech_dev_phase1_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "kespeech" / "kespeech-asr_cuts_dev_phase1.jsonl.gz"
|
|
)
|
|
kespeech_dev_phase2_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "kespeech" / "kespeech-asr_cuts_dev_phase2.jsonl.gz"
|
|
)
|
|
|
|
# WeNetSpeech
|
|
logging.info("Loading WeNetSpeech set in lazy mode")
|
|
wenetspeech_test_meeting_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "wenetspeech" / "cuts_TEST_MEETING.jsonl.gz"
|
|
)
|
|
wenetspeech_test_net_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "wenetspeech" / "cuts_TEST_NET.jsonl.gz"
|
|
)
|
|
wenetspeech_dev_cuts = load_manifest_lazy(
|
|
self.fbank_dir / "wenetspeech" / "cuts_DEV.jsonl.gz"
|
|
)
|
|
|
|
return {
|
|
"aidatatang_test": aidatatang_test_cuts,
|
|
"aidatatang_dev": aidatatang_dev_cuts,
|
|
"alimeeting_test": alimeeting_test_cuts,
|
|
"alimeeting_eval": alimeeting_eval_cuts,
|
|
"aishell_test": aishell_test_cuts,
|
|
"aishell_dev": aishell_dev_cuts,
|
|
"aishell-2_test": aishell2_test_cuts,
|
|
"aishell-2_dev": aishell2_dev_cuts,
|
|
"aishell-4": aishell4_test_cuts,
|
|
"magicdata_test": magicdata_test_cuts,
|
|
"magicdata_dev": magicdata_dev_cuts,
|
|
"kespeech-asr_test": kespeech_test_cuts,
|
|
"kespeech-asr_dev_phase1": kespeech_dev_phase1_cuts,
|
|
"kespeech-asr_dev_phase2": kespeech_dev_phase2_cuts,
|
|
"wenetspeech-meeting_test": wenetspeech_test_meeting_cuts,
|
|
"wenetspeech-net_test": wenetspeech_test_net_cuts,
|
|
"wenetspeech_dev": wenetspeech_dev_cuts,
|
|
}
|