티스토리 뷰

개발/기계학습

[Kaldi] voxforge online demo

Jaeyeon Baek 2019. 3. 5. 13:47

http://kaldi-asr.org/


이 글을 읽고 있다는 것은 sample 스크립트 학습을 끝냈다는 이야기인데 일단 축하드립니다. 이번 글에서는 학습시킨 데이터를 기반(은 이미 공개되어 있는 모델셋)으로 demo 를 해볼텐데 kaldi 에 있는 voxforge 에서는 두 가지 방식으로 데모를 지원합니다. 여기에는 1) microphone 의 입력에 따라 실시간으로 음성을 text 로 변환하는 live 모드와 2) 음성파일을 text로 변환하는 simulated 모드가 있습니다.

일단 egs/voxforge 로 이동해서 보면 다음과 같이 세 개의 디렉터리가 존재합니다.

$ tree -L 1
.
├── gst_demo
├── online_demo
└── s5

3 directories, 0 files

s5 는 학습시킬 때 확인 했고 나머지가 데모 관련된 디렉터리인데 gst_demo GUI 를 통해 데모를 확인 할 수 있도록 해줍니다. 다만 앞선 글의 연장선으로 이 글에서는 Mac 을 기준으로 설명하고 있으며 MacOS 에서 gst_demo 를 돌리는건 녹록치 않기 때문에 online_demo 를 소개하도록 합니다. ( 원하신다면 gst_demo 를 여러방면으로 시도해볼 수 있겠지만 정확히 알 수 없는 여러가지 패키지가 설치 되어 여러분의 Mac 이 너저분해질 수 있습니다 )

자, 그러 online_demo 디렉터리로 이동해서 내용을 살펴봅시다. run.sh 은 데모를 실행시켜주는데 test-mode argumentlive simulated 를 넘길 수 있습니다. livemic 를 통한 테스트를 진행할 수 있고, simulated 는 사전에 정의된 wav 파일( online-data/audio/*wav )을 대상으로 테스트 할 수 있습니다. 여기서 ... 스크립트를 실행하면 바로 microphone 데모( Mac 기준이니 당연히 mic 를 사용할 수 있다고 가정합니다 )를 볼 수 있지만 아마도 다음과 같은 에러를 만나게 될 겁니다. 

$ cd online_demo 
$ ./run.sh --test-mode live
...
...생략
online-gmm-decode-faster command not found

데모를 돌리기 위해 필요한 패키지가 설치 되어 있지 않기 때문인데 kaldi 홈에서 다음 디렉터리로 이동하고 패키지를 설치하도록 합시다.

cd /path/to/kaldi/tools

패키지를 설치하도록 합니다.

$ ./install_portaudio.sh

관련된 모듈을 컴파일해줘야 하기 때문에 src 경로로 이동해서 아래와 같이 make 를 실행해줍니다.

cd /path/to/kaldi/src
$ make ext

이제 모든 준비는 끝났습니다. 다시 online_demo 로 이동해서 테스트 해봅시다. 아래 영상은 CNN 방송을 대상으로 테스트한 결과 입니다.


마무리

데모 성공을 축하드립니다. 인식률은 다소 떨어지지만 kaldi 를 처음 다루는 예제로 훌륭하다고 생각됩니다. 이제 다양하고 더 많은 데이터를 기반으로 모델을 학습시키고 Kaldi 기반의 speech recognition 를 도전해 볼 수 있겠군요. :-)



댓글
  • 프로필사진 Mmj 안녕하세요~
    이전 글을 보고 kaldi를 수월하게 설치해보았습니다. 이번에는 voxforge demo를 실행해보려고 하는데요.. live mode로 수행했을 때, portaudio부분에서 계속 에러가 발생합니다... 구글을 참고해보며 나를 해결해보려고 하였으나.. 결과는 마찬가지입니다.

    Portaudio failed to open the default stream.이라는 에러이고요. 환경은 virtual box에서 ubuntu 18.04.3입니다.

    혹시 에러를 해결할 수 있는 방안이 있을까요...?
    2019.09.02 17:41
  • 프로필사진 BlogIcon Jaeyeon Baek 혹시 vm에 mic가 인식되는 상태인지 확인해보는게 좋을 듯 합니다. 2019.09.02 18:19 신고
  • 프로필사진 Mmj 인식은 되고 있다고 생각됩니다. arecord를 이용해 녹음도 해보았고 재생도 해보았습니다. 잘 되더라고요...
    또 인식을 바로 못할 수도 있다고 하여, Default 기기로 설정도 해보았고 패키지 설치 (alsa, pulseaudio, libaudio 등)가 필요할 수도 있다고 하여 설치도 해보았습니다만, 여전히 안되네요...;;
    2019.09.03 10:23
  • 프로필사진 BlogIcon Jaeyeon Baek PortAudio가 Virtualbox에서 사용할 때 문제가 있다는 글이 몇 개 보이는데요, Host에서 구동하던지, 아니면 Virtualbox의 버전을 변경해보면 어떨까 싶습니다. 2019.09.03 10:32 신고
  • 프로필사진 dd 안녕하세요 kaldi를 공부중인 학생입니다.
    다름이 아니라 yesno 예시를 위처럼 온라인데모를 하고 싶은데 yesno의 경우는 voxforge처럼 online_demo 디렉터리가 없더라구요..
    혹시 할 수 있는 방법이 없을까 해서 여쭤봅니다! 인풋 아웃풋이 제대로만 나오면 됩니다.
    2019.09.09 15:46
  • 프로필사진 BlogIcon Jaeyeon Baek 별도로 구현해야 할 것으로 보입니다. 2019.09.15 11:45 신고
  • 프로필사진 dd 혹시 별도로 구현하는 것에 대해 조금 더 구체적으로 말씀해주실 수 있나요...? 열심히 검색해봐도 뭔가 감이 안오네요... ㅠㅠㅠ 2019.09.29 23:13
  • 프로필사진 가파치 안녕하세요?
    덕분에 kaldi에 대해 접할 수 있는 기회를 주셔서 고맙습니다.
    mac을 이용해서 따라 했고 online_demo를 시도했으나 오류가 나네요
    마이크는 잘 작동하는 것을 확인했습니다, 어떤 원인인지 알려 주시면 고맙겠습니다.

    화면 내용은 아래와 같습니다. 바쁘시겠지만 도움 부탁 드립니다.

    ❯ ./run.sh --test-mode live

    LIVE DEMO MODE - you can use a microphone and say something

    The (bigram) language model used to build the decoding graph was
    estimated on an audio book's text. The text in question is
    "King Solomon's Mines" (http://www.gutenberg.org/ebooks/2166).
    You may want to read some sentences from this book first ...

    online-gmm-decode-faster --rt-min=0.5 --rt-max=0.7 --max-active=4000 --beam=12.0 --acoustic-scale=0.0769 online-data/models/tri2b_mmi/model online-data/models/tri2b_mmi/HCLG.fst online-data/models/tri2b_mmi/words.txt 1:2:3:4:5 online-data/models/tri2b_mmi/matrix
    ||PaMacCore (AUHAL)|| Error on line 1232: err='-66748', msg=Unknown Error
    ERROR (online-gmm-decode-faster[5.5.1005-bd1303]:OnlinePaSource():online-audio-source.cc:86) PortAudio failed to open the default stream

    [ Stack-Trace: ]
    0 libkaldi-base.dylib 0x000000010e636b2f kaldi::KaldiGetStackTrace() + 63
    1 libkaldi-base.dylib 0x000000010e636942 kaldi::MessageLogger::LogMessage() const + 354
    2 libkaldi-online.dylib 0x000000010e739378 kaldi::MessageLogger::LogAndThrow::operator=(kaldi::MessageLogger const&) + 24
    3 libkaldi-online.dylib 0x000000010e7392b1 kaldi::OnlinePaSource::OnlinePaSource(unsigned int, unsigned int, unsigned int, unsigned int) + 545
    4 libkaldi-online.dylib 0x000000010e739419 kaldi::OnlinePaSource::OnlinePaSource(unsigned int, unsigned int, unsigned int, unsigned int) + 9
    5 online-gmm-decode-faster 0x000000010e42907c main + 1340
    6 dyld 0x00000001100694fe start + 462

    kaldi::KaldiFatalError%
    2022.02.05 23:43
  • 프로필사진 BlogIcon Jaeyeon Baek online-gmm-decode-faster 가 정상적으로 컴파일 됐는지 확인해보시면 좋을듯 합니다 :) 2022.02.21 13:35 신고
댓글쓰기 폼