[음성인식] 2. STT(Speech-to-Text)

ActionPower
8 min readJul 5, 2022

--

음성인식 인공지능(AI)가 음성을 텍스트로 출력하는 이미지

음성 인식 기술, STT란?

STT(Speech-to-Text)라고도 불리는 음성 인식은 음성(Speech)를 글자(Text)로 바꿔주는 기술입니다. 이 음성 인식 기술을 활용할 수 있는 경우는 무궁무진한데요. 예를 들면, 넓은 강의실에서 수업을 하시는 교수님의 말씀이나 고객과의 중요한 전화 통화 내용, 회사의 업무 회의 내용, 아침 뉴스 내용, 대화 등이 있습니다. 이처럼 음성 인식은 사람의 말을 받아 적는 기술인 만큼 사람이 말하는 모든 분야에 널리 쓰이는 기술입니다.

STT는 단순히 음성을 입력으로 받아 글자를 출력하는 것처럼 보이지만, 내부에서는 다양한 모듈과 처리 과정을 거친답니다.

1. 전처리 (Pre-processing)

전처리는 본격적으로 음성 인식을 수행하기에 앞서 음성을 가다듬고 정제하는 작업이에요. 음성을 글자로 정확하게 받아 적기 위해 수행하는 전처리 과정에는 다음과 같은 다양한 기술들을 포함하고 있습니다.

음성 활동 탐지(Voice Activity Detection): 음향 이벤트 감지(Sound Event Detection)의 일종으로, 음성에서 사람이 말한 발화 구간을 검출합니다.

음성 향상 (Speech Enhancement): 시끄러운 잡음은 제거하고 사람이 하는 말을 선명하게 만들어 줍니다.

화자 분리 (Speaker Diarization): 말하는 사람(화자) 별로 발화를 분리합니다.

이처럼 다양한 전처리를 통해 불필요한 잡음은 걸러지고 실제 사람이 발화한 구간들만 모아서 음성 인식을 수행합니다. 만약 음성을 화자 별로 나누는 화자 분리가 선행된다면, 화자 별로 발화한 음성 구간을 모아서 음성 인식을 수행할 수도 있습니다.

2. 어쿠스틱 모델 (Acoustic Model)

전처리를 거친 음성은 본격적으로 어쿠스틱 모델을 통해 음성 인식을 수행합니다. 일반적으로 널리 쓰이는 어쿠스틱 모델은 크게 인코더(Encoder)와 디코더(Decoder)나눌 수 있습니다.

인코더는 입력으로 주어진 음성에서 음성 인식에 필요하거나 유용한 특징들을 추출(Feature Extraction)합니다. 디코더는 인코더에서 추출한 특징들을 활용해서 사람이 말한 글자를 받아 적습니다.

① 인코더 (Encoder)

음성에 대한 원시 데이터는 일련의 숫자들로 이뤄져 있습니다. 인코더는 이러한 숫자들에서 유용한 특징들을 추출하는 역할을 담당하고, 그 방법에 따라 몇 가지로 나누어 볼 수 있죠.

  • 신호 처리 기반의 특징 추출 방법

푸리에 변환을 통해 시간 도메인의 데이터인 음성 신호를 주파수 도메인의 데이터로 변환하고, 사람의 발성 기관과 청각 기관을 고려해 음성과 관련된 특징을 추출할 수 있습니다. (예. FFT, Spectrogram, MFCC) 이 과정을 통해서 숫자의 나열로 표현되었던 음성 신호는 벡터와 같은 형태로 변환되어 딥러닝 네트워크의 입력으로 사용될 수 있어요. 또한 변환된 특징들은 음성에 대한 정보는 물론, 화자에 따른 특징들을 포함할 수 있어서 화자 분리에도 활용될 수 있습니다.

  • 뉴럴 네트워크 기반의 특징 추출 방법

수십만 시간의 음성 데이터로 학습된 거대한 뉴럴 네트워크를 활용해서 음성에서 특징을 추출할 수 있습니다. 사전 학습된 거대한 뉴럴 네트워크는 파인 튜닝 (fine tuning)을 통해 음성 인식을 위해 활용될 수도 있고, 화자 분리나 화자 인증에도 활용될 수 있어요. 널리 알려진 뉴럴 네트워크 기반의 인코더로는 Conformer, Wav2Vec 등이 있습니다.

② 디코더 (Decoder)

디코더는 인코더에서 추출한 음성 특징들을 활용해서 글자를 예측하는 역할을 합니다. 뉴럴 네트워크를 이용한 디코더는 RNN, LSTM, Transformer 등이 있습니다. 디코더가 글자를 받아 적는 방식에 따라 크게 Auto-regressive와 Non Auto-regressive로 나눌 수 있어요.

  • Auto-regressive

Auto-regressive한 디코더는 앞서 예측한 글자들을 토대로 한 번의 디코딩 단계에서 1개의 음절이나 단어를 예측하는 방법이에요. 만약 받아 적어야 하는 글자가 50개 라면 디코더는 총 50번 수행하게 됩니다. Auto-regressive 방법은 앞서 예측한 글자들을 활용하기 때문에 문맥을 고려할 수 있죠.

  • Non Auto-regressive

Non Auto-regressive는 이름에서 알 수 있듯이, Auto-regressive처럼 여러 번 반복하지 않고 한 번 혹은 적은 횟수 이내에 전체 글자를 다 받아 적는 방식입니다. Non Auto-regressive는 한 번 혹은 적은 횟수 이내에 받아 적기 때문에 Auto-regressive보다 빠르게 받아 적을 수 있어요.

3. 디코딩 (Decoding)

디코딩은 Decoder로 실제 음성을 예측하는 것을 의미합니다. 실제로 받아쓰기 할 때는 더 잘 받아 적기 위해 디코더 뿐만 아니라 다양한 알고리즘과 추가적인 모듈들을 결합해서 사용합니다.

① 빔서치 (Beam Search)

Auto-regressive 디코더는 한 글자씩 예측할 때, 그 순간에 가장 확률이 높은 것을 출력합니다. 반면, 빔 서치는 좀 더 넓은 가능성과 여러 경우의 수를 고려해 최적의 답을 찾아 나가는 알고리즘입니다.

넓은 가능성과 여러 경우의 수를 두어 최적의 정답을 찾는 빔 서치
출처: https://d2l.ai/chapter_recurrent-modern/beam-search.html

② LM (Language Model)

언어 모델로 불리는 LM은 자연어를 모델링한 것입니다. Auto-regressive LM은 일련의 글자나 단어들이 주어졌을 때, 다음에 올 글자나 단어를 예측하는 것으로 디코딩에 사용될 수 있어요. 예를 들어, LM은 “이번에 새로운 영화 개봉했던데 같이 <?>” 라는 문장이 주어졌을 때, <?>에 들어갈 단어로 “보라 갈래?” 또는 “볼까?”를 예측할 수 있습니다. 디코딩할 때, 이처럼 문맥을 고려하여 글자를 예측하는 LM을 활용해 디코딩을 수행할 수 있습니다.

③ 키워드 부스팅 (Keyword Boosting)

빔 서치 시, 사용자가 사전에 등록한 단어나 키워드들에 대해 가중치를 부여해서 더 잘 받아 적도록 만드는 알고리즘입니다. 고유 명사나 특정 분야에서 사용되는 전문 용어들이 사용자 사전에 등록될 수 있습니다. 예를 들어 “SPELL MY NAME”은 사용자로부터 받은 키워드 리스트를 Trie (Prefix Tree) 형태로 표현하여 트리 탐색을 수행하는 알고리즘이에요.

④ 기타

  • 패널티 (Penalty): 특정 상황, 예를 들어 너무 긴 문장의 경우에 패널티를 부과(Length Penalty)하거나, 반복된 문장의 경우에 패널티를 부과(Repetition Penalty)하는 방법도 있어요.
  • 폴백 (Fallback): 디코더가 빔 서치 수행 중 잘못 예측한 경우를 판별하여 기본값 (인코더에서 출력된 아웃풋)으로 되돌리는 알고리즘이에요.

평가방법

STT로 받아 쓴 텍스트의 정확도를 평가하는 수단으로는 CER (Character Error Rate)와 WER (Word Error Rate)가 있습니다. CER과 WER은 STT 뿐만 아니라 텍스트를 다루는 다양한 분야에서 널리 쓰이는 평가 방법이에요. STT에서는 실제 정답과 STT 모델이 받아 적은 단어를 글자(Character) 혹은 글자(Word) 단위에서 비교해 성능을 평가 및 비교할 수 있습니다.

CER과 WER은 Levenshtein Distance라는 알고리즘을 활용해서 정답과 받아 쓴 문장 간의 편집 거리를 계산하는 방식으로 구할 수 있어요. 이는 모델이 예측한 문장을 답안 문장으로 바꾸기 위해서 음절/단어를 얼마나 많이 편집해야 하는지를 의미합니다. 편집 거리란 두 문장이 ‘삽입’, ‘삭제’, ‘대체’ 관점에서 얼마나 다른지를 나타냅니다.

(N = 정답 텍스트의 길이)
  • Insertion: 실제 정답에는 없으나, 예측 결과에 잘못 추가된 글자
    (예) 정답: 안녕하세요 / 예측: 안녕하세요오
  • Substitution: 실제 정답과 예측 결과의 글자가 다른 경우
    (예) 정답: 안녕하세요 / 예측: 안넝하세요
  • Deletion: 실제 정답에는 있어서 받아 적어야 하나, 받아 적지 못한 경우
    (예) 정답: 안녕하세요 / 예측: 녕하세요

WER을 계산하는 방식은 CER과 같으나, ‘글자’가 아닌 ‘단어’ 단위에서 오류율을 비교 및 측정하는 방식으로, 주로 영어를 대상으로 할 때 WER로 오류를 측정합니다.

액션파워는

액션파워의 STT 모델은 뛰어난 음성 인식 능력을 자랑합니다. CER 비교 결과에서 알 수 있듯이, 액션파워의 STT 모델은 다른 회사들의 STT 모델보다 높은 정확도를 보여주고 있어요.

  • N사 16.1%
  • E사 20.0%
  • G사 34.1%
  • 액션파워 다글로 14.6%

액션파워에 대한 더 많은 이야기가 궁금하다면?
More about Action Power

--

--

ActionPower

Cutting-edge AI for the Benefit of the World. Unlock the potential of AI for a better tomorrow! For more details: actionpower.kr/en