기록하는삶
[파이썬/Python] 한국어 STT, kospeech 활용기(5) _ inference.py로 예측하기 본문
[파이썬/Python] 한국어 STT, kospeech 활용기(5) _ inference.py로 예측하기
mingchin 2022. 1. 4. 03:05지난 글: https://mingchin.tistory.com/230
kospeech가 제공하는 inference.py는 하나의 음성 파일에 대해 텍스트로 변환한 결과를 출력하도록 지원하는 모듈이다. 지난 글까지 학습시켜 얻은 model.py를 이용해 예측을 진행하는 일만 남았다(고 생각했다).
깃허브에 다음과 같이 안내되어 있다. 해당 코드를 이용해 inference를 시도하면, 다시 에러의 향연이다.
① require(x) -> required(o)
오타인건지, bin/inference.py line 50~52의 require 뒤에 d를 붙여주어야 한다.
② AttributeError: 'DeepSpeech2' object has no attribute 'greedy_search'
들어간 데이터가 NoneType이라고 나온다. 이는 line 64~73에 있는 greedy-search라는 함수 때문이다. 해당 함수는 실제로는 존재하지 않는다. 이를 모두 recognize로 바꾸어준다.
③ TypeError: recognize() takes 3 positional arguments but 4 were given
recognize() 함수는 bin/kospeech/models/model.py에 있다. 확인해보면 3개의 인자를 받고, opt.device를 필요로하지 않으므로 제거한다.
이때 line 57의 경로에 맞게 만들었던 글자 사전을 위치시키도록 하자.
(학습 시킬 때와 위치가 다르다. /kospeech-latest/data에 만든 글자 사전을 /kospeech-latest/bin/data/vocab으로 복사 붙여넣기 해주면 된다.)
④ 후처리(중복 음절 제거)
이제 결과가 잘 나와야 할 것 같지만, 아래와 같이 요상하게 나온다.
이는 내부적으로 CTC 알고리즘이 사용되기 때문인 것으로 보이는데, 궁금하면 가장 먼저 글에 링크를 올렸던 원 개발자의 소개 영상을 참고하면 된다.
이를 해결하기 위해, 다음과 같은 함수를 만들어 inference.py와 같은 level에 tools.py로 저장하고, 이를 불러와 사용할 수 있도록 import 했다. 이후 출력하기 전에 revise 함수를 거치도록 한다. '스로' 라는 단어의 처리가 불가능해 예외 처리를 해두었는데, 조심스러운 접근이 필요한 부분이다.
from tools import revise
def revise(sentence):
words = sentence[0].split()
result = []
for word in words:
tmp = ''
for t in word:
if not tmp:
tmp += t
elif tmp[-1]!= t:
tmp += t
if tmp == '스로':
tmp = '스스로'
result.append(tmp)
return ' '.join(result)
⑤ 그 외에
외에도 cer, wer의 계산을 위한 코드, 음성 파일 하나가 아니라 폴더에 존재하는 모든 음성 파일에 대한 예측 결과를 메모장 혹은 excel 파일로의 저장 등을 위해 코드를 손보거나 추가적인 .py 파일을 생성했다. 이는 필자의 깃허브에 조만간 추가할 예정이다.
https://github.com/alsrb0607/KoreanSTT
CER, WER 관련 코드: https://mingchin.tistory.com/240
'AI > kospeech(한국어 STT)' 카테고리의 다른 글
[파이썬/Python] 한국어 STT, CER과 WER 계산 (0) | 2022.01.04 |
---|---|
[파이썬/Python] 한국어 STT, kospeech 활용기(4) _ 코랩&구글 드라이브 활용해 모델 학습하기 (25) | 2021.12.31 |
[파이썬/Python] 한국어 STT, kospeech 활용기(3) _ 학습을 위한 코드 수정, configs 변경 (16) | 2021.12.28 |
[파이썬/Python] 한국어 STT, kospeech 활용기(2) _ 폴더 위치 변경 및 모듈 설치 (0) | 2021.12.28 |
[파이썬/Python] 한국어 STT, kospeech 활용기(1) _ 글자 사전 및 transcripts.txt 생성하기 (2) | 2021.12.20 |