본문 바로가기
딥러닝/음성인식

[KALDI] kaldi와 zeroth(1)

by 채연2 2019. 8. 27.

 

 

 

 

 

안드로이드가 주 분야였던 나는 딥러닝에 관심 1도 없었다.

허나, 어쩔 수 없는 상황때문에 kaldi 설치 및 사용을 하게 되었다. 여러 분야를 배움으로써 성장할 수 있는 기회이니.. 좋은 마음으로 이러한 상황을 받아들이기로 했다.

 

한국어가 필요해 알아보던 중, kaldi에 zeroth_korean이라는 한국어 음성인식 프로젝트가 포함되어 있다는 것을 알게 되었고, kaldi 내에 있는 예제로는 실행이 불가해 zeroth (https://github.com/goodatlas/zeroth) 에서 직접 git으로 다운받아서 설치하였다.

나는 멍청하게도 3일동안 여러 시행착오를 겪으며 kaldi 내에 있는 예제로 설치 및 실행을 하다가 ㅎㅎㅎ zeroth에서 직접 다운받아야 한다는 것을 깨달았다 ^^ 허허 신나라.

 

 

 

아래와 같이 git으로 zeroth_korean 오픈소스 코드를 내려 받는다.

git clone https://github.com/goodatlas/zeroth.git

 

그리고, zeroth_korean을 설치하기 전에, 미리 충족해야 할 조건들을 보고 설치해주자 !!

 

 

1. Locale setup

 

zeroth 프로젝트에서 모든 텍스트 인코딩은 UTF-8을 기준으로 한다고 한다. LM(Language Model)을 만드는데 중요함으로 미리 설정해 두는 것이 정신건강에 좋다고 설명에 쓰여있다.

sudo locale-gen ko_KR.UTF-8
sudo vi /etc/default/locale

 

locale-gen으로 한글 언어팩을 설치해주고, /etc/default/locale 파일을 열어 다음과 같이 수정해주자.

#  File generated by update-locale
LANG="ko_KR.UTF-8"

 

그리고, ~/.profile 또는 ~/.bashrc 파일을 열어 다음과 같이 밑에 한 줄을 추가해주자. 

나는 ~/.bashrc 파일 밑에다가 추가해줬다.

export LC_ALL="ko_KR.UTF-8"

 

그리고, 추가한 코드를 적용해주자. 후에 locale 명령으로 확인 가능하다.

. /etc/default/locale

 

 

320x100

 

 

※여기서 나는 /etc/bash.bashrc 파일에 코드를 추가해 주었더니, 아래와 locale 에러가 발생했다.

#export LC_ALL=ko_KR.utf8
-bash: warning: setlocale: LC_ALL: cannot change locale (ko_KR.utf8): No such file or directory

 

만일, 나와 같은 에러가 발생했다면 다음 코드를 실행해주자 !

apt-get install --reinstall locales && sudo dpkg-reconfigure locales

 

 


2. Package List

 

kaldi 설치 방법은 3번에서 설명해 주겠다. 우선, kaldi 외의 패키지를 설치하자.

sudo apt-get update;
sudo apt-get install -y zlib1g-dev make automake autoconf libtool;
sudo apt-get install -y subversion;
sudo apt-get install -y libatlas3-base;
sudo apt-get install -y build-essential;
sudo apt-get install -y python;
sudo apt-get install -y python-pip python-dev;
sudo python -m pip install awscli;
sudo apt-get install -y unzip;
sudo apt-get install -y flac;
sudo apt-get install -y sox;
sudo apt-get install -y libsox-fmt-all;
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py";
sudo python get-pip.py;
sudo python3 get-pip.py;
sudo apt-get install -y gawk;

 

 

 

3. Link to kaldi

 

kaldi를 연결하기 전에, 설치를 먼저 해주자. zeroth는  Kaldi open source tool-kit 을 사용해서 한국어 음성인식기를 구현하는 프로젝트이므로 kaldi 설치는 필수적이다.

 

우선 git을 통해 kaldi  오픈소스 코드를 다운받는다.

git clone https://github.com/kaldi-asr/kaldi.git

 

다운받았으면, kaldi 디렉터리의 INSTALL 파일을 열어 읽어보자.

  1 This is the official Kaldi INSTALL. Look also at INSTALL.md for the git mirr
  2 [for native Windows install, see windows/INSTALL]
  3 
  4 (1)
  5 go to tools/  and follow INSTALL instructions there.
  6 
  7 (2)
  8 go to src/ and follow INSTALL instructions there.

 

(1) tools 디렉터리로 이동해서 INSTALL 파일을 열어 읽어보자.

  1 To check the prerequisites for Kaldi, first run
  2 
  3   extras/check_dependencies.sh
  4 
  5 and see if there are any system-level installations you need to do. Check th
  6 output carefully. There are some things that will make your life a lot easie
  7 if you fix them at this stage. If your system default C++ compiler is not
  8 supported, you can do the check with another compiler by setting the CXX
  9 environment variable, e.g.
 10 
 11   CXX=g++-4.8 extras/check_dependencies.sh
 12 
 13 Then run
 14 
 15   make
 16 
 17 which by default will install ATLAS headers, OpenFst, SCTK and sph2pipe.
 18 OpenFst requires a relatively recent C++ compiler with C++11 support, e.g.
 19 g++ >= 4.7, Apple clang >= 5.0 or LLVM clang >= 3.3. If your system default
 20 compiler does not have adequate support for C++11, you can specify a C++11
 21 compliant compiler as a command argument, e.g.
 22 
 23   make CXX=g++-4.8
 24 
 25 If you have multiple CPUs and want to speed things up, you can do a parallel
 26 build by supplying the "-j" option to make, e.g. to use 4 CPUs
 27 
 28   make -j 4
 29 
 30 In extras/, there are also various scripts to install extra bits and pieces
 31 are used by individual example scripts.  If an example script needs you to r
 32 one of those scripts, it will tell you what to do.

 

 

 

 

 

 

첫번째로, 아래 코드를 실행시켜 kaldi에 필요한 dependencies를 확인하자.

extras/check_dependencies.sh

 

아마 실행 결과로 나온 내용을 확인해보면 설치되지 않은 패키지들이 보일 것이다. 나는 아래와 같이 MKL을 추가로 설치하라는 로그가 떠서 extra/install_mkl.sh 를 실행시켜 설치해주었다.

extras/check_dependencies.sh: Intel MKL is not installed. Run extras/install_mkl.sh to install it.
 ... You can also use other matrix algebra libraries. For information, see:
 ...   http://kaldi-asr.org/doc/matrixwrap.html

 

. 또, python3을 기본으로 사용할 것이므로 .use_default_python 파일을 생성해주자 !

touch tools/python/.use_default_python

 

두번째로, 컴파일을 진행해주자. 멀티코어로 돌릴 것이므로 CPU 개수를 확인한 후에 컴파일 하자.

make -j 16

 

※추가로, 하나 더 설치해줘야 할 것이 있다. tools 디렉터리에 있는 install_srilm.sh 파일을 실행시켜준다.

./install_srilm.sh



...
...
This script cannot install SRILM in a completely automatic
way because you need to put your address in a download form.
Please download SRILM from http://www.speech.sri.com/projects/srilm/download.html
put it in ./srilm.tgz, then run this script.

 

다음 로그를 보면, ⓐ링크로 접속해서 SRILM을 다운받아서, ⓑtools 디렉터리에 srilm.tgz 파일을 넣고 ⓒ다시 스크립트를 실행시키라고 쓰여있다.

 

 

ⓐ 사이트에 접속하면 다음과 같은 입력하는 칸들이 보이는데, 작성을 하고 라이선스 동의 버튼을 누르면 SRLIM을 다운받을 수 있다.

http://www.speech.sri.com/projects/srilm/download.html

 

ⓑ 다운을 받았으면 파일을 kaldi/tools/ 로 옮기자.

mv ~/Downloads/srilm-1.7.2.tar.gz ./srilm.tgz

 

ⓒ 그리고, 스크립트를 다시 실행시키자.

./install_srilm.sh

 

정상적으로 설치가 끝나면 " Installation of SRILM finished successfully " 라는 로그가 찍힐 것이다.

 

 

(2) src 디렉터리로 이동해서 INSTALL 파일을 열어 읽어보자.

  1 
  2 These instructions are valid for UNIX-like systems (these steps have
  3 been run on various Linux distributions; Darwin; Cygwin).  For native Window
  4 compilation, see ../windows/INSTALL.
  5 
  6 You must first have completed the installation steps in ../tools/INSTALL
  7 (compiling OpenFst; getting ATLAS and CLAPACK headers).
  8 
  9 The installation instructions are
 10 
 11   ./configure --shared
 12   make depend -j 8
 13   make -j 8
 14 
 15 Note that we added the "-j 8" to run in parallel because "make" takes a long
 16 time.  8 jobs might be too many for a laptop or small desktop machine with n
 17 many cores.
 18 
 19 For more information, see documentation at http://kaldi-asr.org/doc/
 20 and click on "The build process (how Kaldi is compiled)".

 

 

첫번째로, 아래 코드를 실행해주자.

./configure --shared

 

두번째로, make depend를 실행해주자.

make depend -j 16

 

세번째로, 컴파일을 진행하자.

make -j 16

 

 

여기까지 했으면 kaldi 설치가 끝난 것이다.! 완전히 끝난 것은 아니므로 마음 놓고 있진 맙시다.

 


 

이어서, kaldi와 zeroth를 연결해주자. zeroth/s5/path.sh 파일을 열고, KALDI_ROOT 변수를 자기 환경에 맞게 설정해준다.

export KALDI_ROOT=/home/a/kaldi

 

그리고, zeroth/s5 디렉터리 목록을 보면 기존의 steps 와 utils 링크가 있을 것이다. 경로를 찾지 못해 빨간 글씨로 쓰여져 있는데, kaldi/egs/wsj/s5 디렉터리에 있는 steps 와 utils 디렉터리로 symbolic link를 만들어준다.

경로는 알아서 자기 환경에 맞게 수정해주길 바란다.

rm -f steps utils

ln -s kaldi/egs/wsj/s5/steps zeroth/s5/steps
ln -s kaldi/egs/wsj/s5/utils zeroth/s5/utils

 

 

 


 

여기까지가 zeroth 프로젝트 설치 및 환경 구축이었다. 다음 게시글에서는 zeroth 프로젝트를 실행하기 위한 과정을 써보겠다.

 

 

320x100

'딥러닝 > 음성인식' 카테고리의 다른 글

[Deep Learning] 음성인식(1)  (0) 2019.08.23

댓글