Tech Study/ASR/STT2020. 4. 18. 12:33

Overview

기계학습의 활용 분야 중 하나인 STT(혹은 ASR(Automatic Speech Recognition))에 대해 조사를 해보려 한다. 조사에는 직접 빌드 및 테스트까지 포함된다. 조사 대상은 구글링을 하면 처음에 검색이 되는 아래 리뷰 사이트에 언급된 7개의 솔루션이다.

 

References

 

The Best 7 Free and Open Source Speech Recognition Software Solutions

The high quality free & open source speech recognition software offers simple & effective solutions for collecting dynamic information on various platforms.

www.goodfirms.co

 

Simon

Simon은 ASR 엔진이 아니고 엔진을 이용한 응용 프로그램이다. 키보드와 마우스 없이 컴퓨터를 이용할 수 있게 해주는 어시스턴트 프로그램이다. ASR 엔진은 CMUSphinx와 Julius를 선택할 수 있다. 2020년 4월 18일 현재 사이트가 제대로 동작하지 않는 것으로 보이는데, 접근 가능한 페이지를 통해 살펴 보니 대략 2017년 이후로 업데이트가 중단된 것 같다. 어쨌든 내가 찾으려 하는 종류가 아니므로 더 깊게 살펴 볼 필요는 없을 것 같다.

 

Kaldi

심플한 홈페이지 대문 디자인이 참 매력적이다.  소스도 나의 사랑 깃헙에 올라와 있고, 다큐먼트도 Doxygen으로 구축되어 있는 등, 오픈소스답게 기술 중점적인 멋진 사이트 같다.

본인은 오랜 기간 Linuxer였으나 현재는 Windowser로 살아가고 있기 때문에 윈도에서 구동되는 소스가 필요한데 이 작품이 제격인 것 같다. 구동기는 너무 길어서 다른 포스트에다가...

 

Kaldi 음성인식(ASR) 솔루션의 윈도(Windows) 구동기

기계학습을 공부하려다 보니, 기계학습의 응용 분야 중 가장 유망한 분야 중 하나인 음성인식을 가지고 장난감(toy) 프로젝트를 만들어보고 싶어졌다. 당연히 내가 직접 만드는 건 불가능하고, 오픈소스를 이용해..

swjman.tistory.com

 

CMUSphinx

Kaldi에 비해 더욱 기술 사이트 같이 보이는 디자인이 마음에 든다. CMU는 Carnegie Mellon University의 약자이다. 카네기멜론대에서 20년 이상 리서치한 결과물이라고 하니 저절로 신뢰감이 든다. 2016년 이후로 릴리즈는 중단되었지만, 이미 상당히 mature한 작품인 것으로 보인다. github를 통해 라이브 중이기도 하다.

무엇보다도 윈도 지원이 Kaldi에 비해 훨씬 좋은 것으로 보인다. VS 솔루션이 소스 컨트롤에 들어가 있다는 점에서 이미 윈도OS 지원도 소홀히 하지 않겠다는 의지의 방증이리라. (직접 수행한 후 평가가 바뀔 수 있음)

여담으로 핵심 개발자 몇몇은 Kaldi 프로젝트에서 활동 중인 듯(?)

구동기는 다른 포스트에 남김.

 

CMUSphinx 음성인식(ASR) 솔루션의 윈도(Windows) 버전 빌드(설치) 및 구동기

윈도용(가장 중요한 포인트) 음성 인식 장난감 프로젝트를 만들기 위해 사용할 프레임워크를 찾고 있는 중이다. 앞서, Kaldi로 삽질을 좀 한 후... 두 번째로 도전해 보는 프레임워크가 바로 이 CMUSphinx 이다...

swjman.tistory.com

 

Mozilla

위 링크를 타고 들어가면 Common Voice라는 대형 프로젝트 사이트로 이동한다. 이 프로젝트는 기계학습을 위해 데이터를 기부 받기 위한 것이고, 실제 연동해야 하는 엔진은 아래의 DeepSpeech라는 작품이다.

 

mozilla/DeepSpeech

A TensorFlow implementation of Baidu's DeepSpeech architecture - mozilla/DeepSpeech

github.com

텐서플로를 기반으로 한 매우 현대적인 엔진으로 보인다. (CMUSphinx 같은 경우에는 전통적인 기법들을 기반으로 하였다.) 기존의 바이두 엔진에 기계학습을 적용하였다고 하는데 성능이 어떨지 기대가 된다.

연동 가능한 언어는 기본적으로 C++, C#, JAVA(안드로이드), JavaScript(Node.js, Electron.js), Python이고, Golang이나 Rust 등의 서드파티 연동도 존재한다. C++이나 js 예제가 있으므로 쉽게 구동해 볼 수 있을 듯.

구동기는 아래 포스트에...

 

Mozilla DeepSpeech 음성인식(ASR/STT) 솔루션의 윈도(Windows) 버전 설치 및 구동기

직전 포스트인 CMUSphinx 구동기 를 통해서 만족할만한 결과물을 얻었기 때문에 더 조사가 필요할까 했었다. 하지만, 이번 조사를 통해 왜 CMUSphinx가 4년 전에 중단되었는지를 짐작해 볼 수 있었다. 그리고, 음..

swjman.tistory.com

 

Julius

쥴리우스라는 독특한(아니, 조사한 솔루션 모두 이름 참 유니크하다...) 이름의 이 솔루션은 일본의 수위 대학인 교토대에서 아주 오랫동안 연구개발한 프로젝트다. 라이센스 상으로는 무려 91년부터 시작했다고... (30년이라니... 리스펙의 감정이 밀려 온다.) 결과물의 만족도를 떠나 긴 역사를 들여다 보는 것만으로도 설레는 기분이다. 얼른 살펴 봐야 겠다.

본격적인 내용은 아래 포스트에.

 

Julius 음성인식(ASR/STT) 솔루션의 윈도(Windows) 버전 설치 및 구동기

들어가기에 앞서... 직전 포스트에서 CMUSphinx와 DeepSpeech의 비교를 통해 세상을 넓고 음성인직엔진은 많다는 사실을 새삼 깨달았다. 사실, CMUSphinx가 적당히 기능하는 듯 하여 서베이에 대한 추진력을 잃어..

swjman.tistory.com

 

Dictation Bridge

딕테이션 브릿지의 페이지를 들어가보면 PDF 문서처럼 꾸며놓은 디자인이 인상적이다. 내가 찾는 내용이 ASR 엔진 쪽이기 때문에 그 내용이 어디에 있는지 한참을 뒤적뒤적 했는데, 이 솔루션은 음성인식엔진이 아니고, 음성인식엔진과 스크린 리더(컴퓨터 화면을 읽어주는 솔루션) 사이에 가교 역할을 하는 응용 프로그램이란 사실을 알게 되었다. 예를 들어 문자 채팅을 한다고 할 때, 스크린 리더를 통해 상대방의 채팅 내용을 들려주고, 자신은 음성으로 채팅 내용을 불러주면 음성인식엔진을 통해 딕테이션을 하여 상대방에 문자 메시지를 보내게 된다. 여기서 딕테이션 브릿지는 이름 그대로 그 두 기능 사이에 다리를 놓는 역할을 하는 것이다.

이 솔루션을 살펴 보면서 음성인식기술이 어떤 이들에게 더 필요한지 알게 되면서 왜 더 발전하고 고도화되어야 하는지를 느낄 수 있었다. ASR은 정말 인류를 위한 기술 중 하나다.

 

Mycroft

Mycroft는 Mycroft AI라는 회사에서 개발한 음성인식엔진이면서 그 엔진을 베이스로 하는 AI 스피커의 이름이기도 하다. 

Mycroft Mark 1 - 귀엽다.

예전에는 완전 자유 소프트웨어였으나 지금은 상용에 대해선 라이센싱으로 바꼈다. 위키 페이지까지 있는 것으로 보아 유명한 엔진인 것 같기는 한데, 현재로써는 완전히 리눅스 전용이다. 그래서, 더 알아볼 필요는 없겠다. (다행이다.)

 

 

마치며

대략 한달 반 가량 띄엄띄엄 ASR 솔루션에 대해 살펴 보았다. 기계학습이 최대관심사인 나에게는 아주 뜻깊은 활동이었다. 조사를 진행하면서 알게된 것들을 나열해 보자면

 

  • ASR은 단순한 컴퓨팅 기술이 아닌 인류애의 실천이다.
  • 완성도 높은 오픈소스 ASR 엔진 솔루션은 많지 않다.
  • ASR 기술의 역사가 50년 가량 된다.
  • ASR 분야의 전통적인 기계학습 위에 딥러닝을 가미한 솔루션이 가장 우수한 성능을 보인다.
  • ASR 엔진은 공학 분야의 최고 수준의 인재들이 오랜 시간 공을 들여야 완성할 수 있다.

 

맨 마지막 문장에 살짝 좌절감을 느끼기도 하지만... 뭐, 각자 주어진 역할이 있는 것이지.

다음에는 이 조사를 통해 발견된 완숙한 윈도용(매우 중요) ASR엔진들을 선별하여 직접 비교하고 나만의 랭킹도 매겨 보는 시간을 가져 볼까 한다.

 

 

Posted by JMAN