# chain_align
**Repository Path**: huangyunting/chain_align
## Basic Information
- **Project Name**: chain_align
- **Description**: chain_align对齐模型
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-04-29
- **Last Updated**: 2022-11-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# chain_align README
- INSTALL
- build virtual env(python >= 3.7)
- install requirements
`pip install -r requirements.txt`
- 数据准备: 参见data-example
- 数据文件结构
```
BBSpeech
├── dict——发音字典目录
│ └── lexicon.txt
├── wav.scp——wav列表
├── text——音素标注
├── utt2spk——说话人信息
└── textgrid.scp——baseline标注
```
- data-process, 准备数据文件:wav.scp、text、utt2spk:\
wav.scp:\
utt-id utt-path(absolute path)
text:\
utt-id phone1 phone2 ...
utt2spk: \
utt-id spk-id\
若无spk信息,或无需对spk进行适应性处理,则\< utt-id utt-id >
若有oov词
- 根据lexicon.txt生成分词词典,`sed 's/\s.*$/ 1/' lexicon.txt > seg.dict`
- 对corpus.txt进行分词,`python3 local/seg_word/segmentword.py seg.dict corpus.txt corpus.seg oov_file`
corpus.seg即为分词结果,oov_file为含有oov的语料行,此文件对应的语料将不能用来训练,如过多需考虑修改lexicon.txt增加oov的发音
- 根据corpus.seg将wav.scp中含oov的音频过滤掉```python3 tools/filter_scp.py corpus.seg wav.scp wav.scp.new```
- baseline-corpus
textgrid.scp:\
utt-id textgrid-path(absolute path)
- lexicon.txt\
在音素基础上,添加静音(SIL sil)及oov(# spn)标记,见example
- kaldi\
https://github.com/kaldi-asr/kaldi\
若克隆速度较差:可使用各服务器下huangjunjie/bak/kaldi_*.tar.gz
- install
- follow $KALDI/tools/INSTALL\
extras/check_dependencies.sh\
make -j 24\
- follow $KALDI/src/INSTALL\
./configure --shared\
make depend -j 24\
make -j 24
- 训练
- 修改path.sh\
line 1: export KALDI_ROOT=$KALDI_PATH\
- 修改conf文件下mfcc.conf、fbank.conf\
--sample-frequency=48000 // 与训练数据采样率相同\
--frame_length=10\
--frame_shift=4
bash run.sh [options] \ \ \ \ [\]\
--nj 24(default)\
--gpu_mode true(default, "wait" for only one gpu usable.)
- run.sh流程
stage1: feature-extract\
修改conf文件下mfcc.conf、fbank.conf在此使用\
stage2: prepare dict/lang\
stage3: train gmm-hmm\
stage4: train chain\
--gpu_mode=[true/wait],训练中会2个epoch使用一块gpu,若unbusy_gpu >= 4(default)/2 = 2,使用true,否则使用wait\
stage5: align to textgrid\
$data_path/textgrid.scp若存在,则对对齐结果进行评估,生成result_diff.txt、large_diff.txt及diff.png