기록하는삶

[파이썬/Python] 한국어 STT, kospeech 활용을 위한 환경 설정, 참고 자료 본문

AI/kospeech(한국어 STT)

[파이썬/Python] 한국어 STT, kospeech 활용을 위한 환경 설정, 참고 자료

mingchin 2021. 11. 26. 01:49
728x90
반응형

STT(Speech to Text)는 음성 인식, 말 그대로 음성을 인식하여 그 내용을 텍스트로 전환하는 것을 말한다. 시리, 빅스비 등의 서비스가 가능한 것 역시 이러한 음성 인식 기술의 발전 덕분이다. 최근에는 네이버 크로버가 서비스를 개시하며, 이전에 회의록을 작성하기 위해 녹취를 멈추고 듣기를 반복했던 나의 과거를 아득하게 만들기도 했다. 영어가 아닌 한국어에 대해 STT 기능을 구현할 수 있는 오픈 소스 알고리즘은 아직까지 흔하지 않은데, 그중 kospeech에 대해 프로젝트를 진행하며 조금씩 정리해보려 한다.

1) kospeech?

kospeech: https://github.com/sooftware/kospeech

GitHub - sooftware/kospeech: Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition.

Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition. - GitHub - sooftware/kospeech: Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition.

github.com

kospeech를 활용한 외국인 발화 한국어 음성인식:
https://github.com/alsrb0607/KoreanSTT

GitHub - alsrb0607/KoreanSTT: kospeech를 활용한 한국어 음성 인식 모델 개발

kospeech를 활용한 한국어 음성 인식 모델 개발. Contribute to alsrb0607/KoreanSTT development by creating an account on GitHub.

github.com


개발자 인터뷰:
https://www.youtube.com/watch?v=OglqDo44zpQ (김수환님)
https://www.youtube.com/watch?v=eHqUMThhs2A (고현웅님)

영상에 따르면 김수환님은 카카오 브레인 출신 개발자라고 한다. STT의 개념과 kospeech에 대한 기본적인 설명들이 담겨 있는 영상이므로 참고하면 좋다. 이론적 기반을 모두 이해할 필요는 없지만, 특히 전처리와 관련된 부분은 꼭 듣는 것이 좋은 것 같다.

kospeech의 특징을 간단히 정리하면 다음과 같다.

① pytorch 기반의 딥러닝 모델로, 한국어만 지원한다. 아직 시도해보지 않았지만 cuda 버전에 따라 충돌이 발생하기도 하는 것 같다. 다만 최근까지도 추가적인 업데이트를 하시거나 에러를 fix하시는 것 같고, 깃허브에 질문을 남기면 답변도 곧 잘 해주시는 것 같아 문제가 생기면 개발자와 직접 소통할 수 있을 것 같다.

② Deep Speech 2, Speech Transformer 등 다양한 알고리즘 기반의 모델을 지원한다.
나의 경우 현재 가장 위에 있는 Deep Speech 2 기반의 모델을 build 중이다.

출처: kospeech 깃허브

③ End to End 모델이다.
한국어의 STT 난이도가 높은 이유는, 수많은 자음 모음의 조합 뿐만 아니라 음소, 음절 등 언어에 고려해야하는 수많은 변수들이 있기 때문이다. 2012년 이후 딥러닝이 발전하면서 해당 변수들에 대한 처리를 그냥 layer에 맡기는 것이 가능해졌고, 이에 음소나 음절의 처리, 문법, 발음 등을 모두 학습하게 하는 End to End 모델이 가능해졌다. kospeech도 그 중 하나이다.

④ 전처리를 지원한다.
STT를 구현하기 위해서는 음성 데이터와, 이를 전사 해놓은 Label이 필요하다. (전사란 들리는 바를 받아 적되 음, 어, 그 와 같은 간투어, 대본에서 빼먹은 단어, 주변의 소음 등에 따라 녹음된 내용을 사람이 기록해놓은 것을 말한다.) 사용자는 데이터의 특징에 따라 전사규칙을 삭제하고 문장 부호(?!,. 등)를 삭제하는 등의 전처리를 진행해야하는데, kospeech는 본인들이 사용한 ai-hub의 데이터(kspon)와 libri(출처를 모르겠다.)에 한해 전처리 과정 또한 공개했다.
처리 방식에 따라 아래의 3가지를 지원하는데, 영상을 참고하면 된다.

출처: 김수환님 인터뷰 영상(https://www.youtube.com/watch?v=OglqDo44zpQ)

나는 일단 character-unit으로 진행 중이다.

2) kospeech 환경설정

전처리를 위한 모듈은 각 폴더 안에서 requirements.txt로 제공하고 있다. 모델 build를 위해서는 readme 파일의 가이드대로 설치하면 되는데, 다만 이유를 모르겠지만 여러모로 충돌이 좀 있는 것 같다.

pip install -e .

나는 setup.py 파일을 위 가이드대로 실행한 뒤, 필요한 module들을 추가로 설치했다. 분명 pytorch도 다 깔리던데 이후 없다고 나오고(설치해서 해결) 에러도 좀 나고 그랬다.

python ./bin/main.py model=ds2 train=ds2_train train.dataset_path=$DATASET_PATH

그리고 Deep speech 2 기반의 모델의 경우 실행 코드가 위와 같았는데, 실행 위치가 bin의 상위폴더인 kospeech-latest임에 반해 실행 파일인 main.py에서는 동일 레벨에서 kospeech 폴더가 있을 것을 요구하여 본래 상위폴더에 위치했던 kospeech 폴더를 bin의 하위 폴더로 이동시켜주었다. (그래야만 실행이 가능했다, 변화가 생기면 업데이트 예정)
dataset_path의 경우 절대경로로 넣어주는 것이 나아보인다.

내가 실제 kospeech를 활용했던 프로젝트에 대해서도 업로드 중이다.
https://mingchin.tistory.com/201

728x90
반응형