재 미 있 는 오픈 소스 소프트웨어: 음성 인식 도구 Kaldi (2)

6203 단어 speech
지난 블 로그 에서 Kaldi 의 설치 방법 을 간단하게 소개 해 드 렸 습 니 다. 재 미 있 는 오픈 소스 소프트웨어: 음성 인식 도구 Kaldi (1) 이 블 로그 에서 Kaldi 모델 훈련 을 계속 하 는 절 차 는 모델 훈련 전 데이터 준비 작업 을 소개 합 니 다.저도 음성 인식 과 Kaldi 를 배우 고 있 기 때문에 정확 한 말 을 하 는 것 이 아니 라 잘못 을 발견 하면 지적 해 주세요.
Kaldi 소스 코드 트 리 에 egs 라 는 폴 더 가 있 습 니 다. 이 폴 더 에는 공공 데이터 세트 에서 의 훈련 절차 (셸 스 크 립 트) 와 테스트 결과 가 저장 되 어 있 습 니 다.그 중에서 중국어 의 음성 인식 공공 데이터 세트 는 모두 세 가지 가 있 는데 그것 이 바로
  • gale_mandarin: 중국어 뉴스 방송 데이터 세트 (LDC2013S 08, LDC2013S 08)
  • hkust: 중국어 전화 데이터 세트 (LDC 2005S 15, LDC 2005T 32)
  • thchs 30: 청화대학 교 30 시간 데이터 세트http://www.openslr.org/18/다운로드
  • 이 블 로그 에 서 는 hkust 데이터 세트 를 사용 하여 실험 을 진행 합 니 다.
    디 렉 터 리 구조
    hkust 데이터 세트 와 관련 된 스 크 립 트 및 실험 결 과 는 kaldi/egs/hkust 에 있 습 니 다. 디 렉 터 리 구 조 는 다음 과 같 습 니 다.
    .
    ├── README.txt
    └── s5
        ├── cmd.sh
        ├── conf
        │   ├── cmu2pinyin
        │   ├── decode.config
        │   ├── fbank.conf
        │   ├── mfcc.conf
        │   ├── pinyin2cmu
        │   └── pinyin_initial
        ├── local
        │   ├── create_oov_char_lexicon.pl
        │   ├── ext
        │   │   ├── 195k_chinese_word2char_map
        │   │   ├── hkust_word2ch_tran.pl
        │   │   ├── score_basic_ext.sh
        │   │   └── score.sh
        │   ├── hkust_data_prep.sh
        │   ├── hkust_extract_subdict.pl
        │   ├── hkust_format_data.sh
        │   ├── hkust_normalize.pl
        │   ├── hkust_prepare_dict.sh
        │   ├── hkust_segment.py
        │   ├── hkust_train_lms.sh
        │   ├── nnet
        │   │   ├── run_cnn.sh
        │   │   ├── run_dnn.sh
        │   │   └── run_lstm.sh
        │   ├── nnet2
        │   │   ├── run_5d.sh
        │   │   └── run_convnet.sh
        │   ├── nnet3
        │   │   ├── run_ivector_common.sh
        │   │   ├── run_lstm.sh
        │   │   └── run_tdnn.sh
        │   ├── score_basic.sh
        │   ├── score_sclite_conf.sh
        │   ├── score_sclite.sh
        │   └── score.sh
        ├── path.sh
        ├── RESULTS
        ├── run.sh
        ├── steps -> ../../wsj/s5/steps
        └── utils -> ../../wsj/s5/utils
    

    그 중에서 README. txt 는 이 데이터 세트 에 대한 설명 적 인 것 으로 이 데이터 세트 에 익숙 하지 않 으 면 가서 볼 수 있다.
    s5/run. sh 는 이 데이터 세트 에 있 는 모든 훈련 절 차 를 포함 하고 데이터 예비 처리, 훈련 및 테스트 gmm/dn/lstm/blstm/tdnn 등 모델, 실험 결과 통 계 를 포함 한 각종 스 크 립 트 를 포함한다.이론 적 으로 관련 환경 설정 이 정확 하면 run. sh 를 실행 하면 전체 훈련 절 차 를 완성 할 수 있다.하지만 Kaldi 의 공식 문 서 는 이 파일 에 있 는 스 크 립 트 를 셸 에 한 걸음 한 걸음 붙 여 넣 고 실행 하 는 것 을 권장 합 니 다.이렇게 하면 오 류 를 쉽게 발견 할 수 있 을 뿐만 아니 라 Kaldi 의 전체 운행 절차 에 대해 서도 알 수 있다.
    s5/RESULTS 에는 최근 의 실험 결과 가 보존 되 어 있다.여기 간단하게 몇 개 붙 여 주세요. (CER 즉 character error rate)
  • mono0a (mono - phone 의 GMM - HMM):% CER 80.89
  • tri 1 (가장 간단 한 tri - phone GMM - HMM):% CER 60.01
  • tri5a_mmi_b 0.1 (MMI 손실 함수 사용):% CER 43.95
  • dnn5b_pretrain-dbn_dnn: %CER 39.42
  • cnn5c_pretrain-dbn_dnn: %CER 38.80
  • tdnn_sp: %CER 33.79
  • lstm_sp_ld5: %CER 33.51

  • s5/conf 는 훈련 에 필요 한 프로필 입 니 다.
    s5/{local, steps, utils} 에는 run. sh 가 사용 할 스 크 립 트 파일 이 있 습 니 다.
    데이터 처리
    run. sh 의 첫 부분 은 주로 데이터 의 예비 처리 절차 입 니 다. 실행 하기 전에 먼저 hkust 의 데 이 터 를 고정된 곳 에 두 십시오 (STEP 1 에서 사 용 됩 니 다).그리고 run. sh 가 있 는 경로 로 전환 합 니 다. 제 컴퓨터 에서 ~/Documents/kaldi/egs/hkust/s 5 에 있 습 니 다.
    $ pwd
    /home/ling0322/Documents/kaldi/egs/hkust/s5
    

    이 실험 은 단기 달리기 이기 때문에 cmd. sh 의 몇 가지 명령 을 실행 하고 quue. pl 을 run. pl 로 수정 해 야 합 니 다.
    $ export train_cmd="run.pl --mem 8G"
    $ export decode_cmd="run.pl --mem 8G"
    $ export mkgraph_cmd="run.pl --mem 12G"
    

    이 환경 변 수 를 export 에 내 보 내 고 run. sh 의 스 크 립 트 를 한 걸음 한 걸음 실행 할 수 있 습 니 다.
    STEP 1
    $ local/hkust_data_prep.sh /home/ling0322/Documents/hkust-data/LDC2005S15 /home/ling0322/Documents/hkust-data/LDC2005T32
    

    이 단 계 는 hkust 와 의 데 이 터 를 data 폴 더 에 복사 하고 데이터 형식의 변환 작업 을 하 는 것 입 니 다. 그 동안 mmseg 에서 텍스트 에 대한 간단 한 단 어 를 사용 할 것 입 니 다.
    STEP 2
    다음 작업 은 음소 사전 을 만 드 는 것 이다. 음소 사전 은 모든 단어 발음 에 포 함 된 음절 서열 을 기록 하고 있다.예 를 들 어 중국어 단어의 음소 는 성모 운모 가 분 리 된 서열 일 수 있 고 이런 규칙 에 따라 '테스트' 와 같은 음소 서열 은 'c e4 sh i4' 일 수 있다.
    그러나 이 스 크 립 트 를 성공 적 으로 실행 하려 면 의존 하 는 환경 을 설치 해 야 합 니 다.
    $ sudo apt install gawk swig python-numpy python-dev
    $ local/hkust_prepare_dict.sh
    

    출력 에서 출력 을 간단하게 검사 합 니 다. 특히 아래 두 줄 의 첫 번 째 열 숫자 를 검사 합 니 다. 0 이 라면 위의 한 단계 가 잘못 되 었 습 니 다.
    10894 data/local/dict/lexicon-ch/words-ch-oov.txt
    19467 data/local/dict/lexicon-ch/lexicon-ch-iv.txt
    

    STEP 3
    다음은 tri - phone 모델 을 준비 하 는 의사 결정 트 리 question 집합 및 Transducer L 컴 파일 입 니 다.Transducer L 은 음소 서열 을 단어 서열 로 비 추 는 데 사용 합 니 다.각 Transducer 가 무슨 소 용이 있 는 지 에 대해 서 는 Some Kaldi Notes 를 참고 하 세 요.Transducer 가 무엇 인지 구체 적 으로 알 아 보 려 면 이 paper: Speech Recognition with Weighted Finite - State Transducers 를 보 러 가 야 합 니 다.
    $ utils/prepare_lang.sh data/local/dict "" data/local/lang data/lang
    

    이 어 3 - gram 의 언어 모델 을 훈련 시 켜 이 언어 모델 로 Transducer G 를 생 성 한 뒤 L 과 G 라 는 두 개의 Transducer 를 맞 춰 Transducer LG 를 만 들 었 다.Transducer LG 는 주어진 입력 의 음소 시퀀스 에 사용 할 수 있 으 며, 3 - gram 언어 모델 (G) 을 사용 해 가장 유력 한 단어 시퀀스 를 찾 아 낼 수 있다.
    $ local/hkust_train_lms.sh
    $ local/hkust_format_data.sh
    

    보다
    Done training LM of type 3gram-mincount
    

    그리고
    hkust_format_data succeeded
    

    이 단 계 는 성공 했다.
    STEP 4
    이제 음성 데이터 에서 MFCC 특징 을 추출 할 수 있 습 니 다.MFCC 중국 어 는 멜 주파수 역 보 계수 라 고 부 르 며 가능 한 한 인간 청각 시스템 에 접근 하여 추출 한 음성 특징의 표현 방법 이다.이 약간 편향 신호 처 리 는 구체 적 인 과정 에서 음성 신호 처리 와 관련 된 책 을 참고 할 수 있다.
    다음 절 차 를 실행 하기 전에 $train 을 다시 확인 하 는 것 이 좋 습 니 다.cmd 설정 이 올 바른 지 여부
    $ echo "$train_cmd"
    run.pl --mem 8G
    

    그리고 실행
    $ mfccdir=mfcc
    $ for x in train dev; do 
    $   steps/make_mfcc.sh --cmd "$train_cmd" --nj 10 data/$x exp/make_mfcc/$x $mfccdir || exit 1;
    $   steps/compute_cmvn_stats.sh data/$x exp/make_mfcc/$x $mfccdir || exit 1;
    $ done
    

    STEP 5
    마지막 단 계 는 훈련 데 이 터 를 정리 하고 쓸모없는 부분 을 제거 하 는 것 이다.
    $ utils/fix_data_dir.sh data/train
    fix_data_dir.sh: kept 197387 utterances out of 197391
    fix_data_dir.sh: old files are kept in data/train/.backup
    

    이로써 데이터 준비 와 예 처리 단계 가 성공 적 으로 완성 되 었 고 이어서 훈련 모델 단 계 를 시작 할 수 있 게 되 었 다.

    좋은 웹페이지 즐겨찾기