5 minute read

STT(Speech-to-Text) 란?

STT(Speech-to-Text) 기술은 오랜 기간 연구되어 왔으며, 여러 접근 방식이 있었습니다.
초기에는 음향 모델링과 언어 모델링을 결합한 통계적 방법이 주로 사용되었습니다. 은닉 마르코프 모델(HMM), 가우시안 혼합 모델(GMM) 등이 활용되었지만 성능에 한계가 있었습니다.
2010년대 들어 딥러닝 기술의 발전과 함께 STT 분야에도 큰 진전이 있었습니다. 특히 순환 신경망(RNN), 長/단기 메모리(LSTM/GRU) 등의 딥러닝 모델이 음성 인식 성능을 크게 향상시켰습니다.
최근에는 트랜스포머 기반 모델인 Conformer, Transformer-Transducer 등이 SOTA(State-of-the-art) 성능을 내고 있습니다. 또한 전이학습, 반지도학습 등의 기법으로 성능을 높이는 연구도 활발합니다.
STT 개발 시 데이터 수집과 전처리, 음향/언어 모델 구축, 디코더 설계 등 다양한 방법론이 활용됩니다. 최근에는 자연어처리와의 연계, 멀티모달 활용, 온라인 STT 등의 연구도 이뤄지고 있습니다.

STT 역사

초기 개발 (1950-1970년대):
1952년: 벨 연구소에서 최초의 음성 인식 시스템인 "Audrey"를 개발했습니다. 이 시스템은 숫자 0에서 9까지 인식할 수 있었습니다.
1960년대: IBM이 "Shoebox"라는 음성 인식 시스템을 개발하여 숫자와 단어를 인식할 수 있게 했습니다.

초기 상용화 단계 (1980-1990년대):
1980년대: HMM(Hidden Markov Model) 기반의 음성 인식 기술이 도입되어 음성 인식 정확도가 크게 향상되었습니다.
1990년대: Dragon Systems에서 상용 음성 인식 소프트웨어 "Dragon Dictate"를 출시했습니다. 이는 가정용 PC에서도 사용할 수 있었습니다.

인터넷과 데이터 기반 기술의 발전 (2000-2010년대):
2000년대: 구글, 마이크로소프트, 애플 등의 대기업들이 음성 인식 기술에 투자하기 시작했습니다.
2010년대: 딥러닝(Deep Learning) 기술의 발전으로 음성 인식의 정확도가 비약적으로 향상되었습니다. 구글의 음성 인식 시스템, 애플의 Siri, 아마존의 Alexa 등이 대표적입니다.

현대 (2020년대):
인공지능과 클라우드 컴퓨팅의 발전으로 STT 기술이 더욱 정교해지고, 다양한 분야에 널리 사용되고 있습니다. 특히, 실시간 자막 생성, 가상 비서, 고객 서비스 등에 활용되고 있습니다.

STT 개발 방법론

gemini

주요 STT 개발 방법론
STT 시스템 개발에는 다음과 같은 주요 방법론이 사용됩니다.

HMM(Hidden Markov Model): 음성 신호를 일련의 상태로 모델링하고 각 상태 간의 전이 확률을 계산합니다.
DNN(Deep Neural Network): 음성 신호를 입력으로 하여 텍스트를 출력하는 신경망 모델입니다.
CTC(Connectionist Temporal Classification): 음성 신호를 입력으로 하여 각 프레임에 대한 음소를 출력하는 신경망 모델입니다.
End-to-end 모델: 음성 신호를 입력으로 하여 직접 텍스트를 출력하는 신경망 모델입니다.

chatgpt


전통적인 방법론:

음향 모델링(Acoustic Modeling): 음성 신호를 소리의 기본 단위인 음소(phoneme)로 변환합니다. HMM이 주요 기술로 사용되었습니다.
언어 모델링(Language Modeling): 음소를 단어로, 단어를 문장으로 변환합니다. 이는 주로 통계적 기법에 의해 이루어졌습니다.

딥러닝 기반 방법론:
DNN(Deep Neural Networks): 음향 모델링에서 HMM 대신 DNN을 사용하여 음성 인식의 정확도를 크게 향상시켰습니다.
RNN(Recurrent Neural Networks)과 LSTM(Long Short-Term Memory): 시간에 따른 연속적인 데이터를 처리하는 데 효과적이며, 음성 인식 정확도를 높이는 데 중요한 역할을 합니다.
CNN(Convolutional Neural Networks): 주로 음성 신호의 스펙트로그램을 처리하여 특징을 추출하는 데 사용됩니다.
End-to-End 모델: 입력된 음성을 바로 텍스트로 변환하는 방식으로, 중간 단계를 줄여 효율성과 정확성을 높였습니다. 대표적인 예로는 DeepSpeech 등이 있습니다.

최신 기술:
Transformer 모델: 자연어 처리에서 뛰어난 성능을 보이는 Transformer 구조를 음성 인식에도 적용하여 성능을 극대화합니다. 예로는 OpenAI의 Whisper 모델이 있습니다.
Pre-trained Models: 사전 학습된 모델을 사용하여 특정 도메인이나 언어에 대한 음성 인식 성능을 빠르게 향상시킬 수 있습니다. 구글의 Wav2Vec, BERT 등의 모델이 이에 해당합니다.

STT open source solution

gemini

다음은 잘 되는 것으로 알려진 몇 가지 STT 오픈 소스 솔루션입니다.

Whisper: Whisper는 Google AI에서 개발한 강력하고 다재다능한 STT 모델입니다. 다양한 언어를 지원하며, 높은 정확도를 제공합니다. 또한, Whisper는 오프라인으로 사용할 수 있어 인터넷 연결이 없는 환경에서도 사용할 수 있습니다.
DeepSpeech: DeepSpeech는 Mozilla에서 개발한 STT 모델입니다. Whisper만큼 정확하지는 않지만, 더 빠르고 가볍습니다. DeepSpeech는 또한 오프라인으로 사용할 수 있습니다.
Julius: Julius는 오픈 소스 STT 엔진입니다. 오랫동안 개발되어 왔으며, 다양한 기능을 제공합니다. Julius는 상용 STT 시스템만큼 정확하지는 않지만, 사용자 정의 및 확장성이 뛰어납니다.
Kaldi: Kaldi는 또 다른 오픈 소스 STT 엔진입니다. 연구 커뮤니티에서 널리 사용되며, 최첨단 STT 기술을 제공합니다. Kaldi는 사용하기 어려울 수 있지만, 매우 강력하고 유연합니다.
Vosk: Vosk는 오프라인 STT 엔진입니다. 인터넷 연결이 없는 환경에서도 사용할 수 있어 모바일 장치 및 웨어러블 장치에 적합합니다. Vosk는 다른 STT 엔진만큼 정확하지는 않지만, 매우 빠르고 가볍습니다.

chatgpt

STT(Speech-to-Text) 오픈 소스 솔루션 중에서 잘 되는 순으로 몇 가지를 소개해드리겠습니다. 이 솔루션들은 커뮤니티와 기업에서 널리 사용되고 있으며, 성능과 사용 편의성 면에서 우수한 평가를 받고 있습니다.

Mozilla DeepSpeech:

특징: 딥러닝 기반의 음성 인식 엔진으로, TensorFlow를 사용하여 개발되었습니다. 영어 음성 인식에서 뛰어난 성능을 보이며, 다양한 언어 모델을 추가할 수 있습니다.
장점: 잘 문서화되어 있고, 다양한 언어 모델과 함께 사용할 수 있습니다. 또한, 상대적으로 쉽게 설치하고 사용할 수 있습니다.
성능: 비교적 높은 정확도와 빠른 속도를 자랑합니다.
Kaldi:

특징: HMM과 딥러닝 모델을 결합한 강력한 음성 인식 툴킷입니다. 다양한 음성 데이터셋과 언어 모델을 지원하며, 커스터마이징이 가능합니다.
장점: 매우 유연하고, 음성 인식 연구와 상용화에 많이 사용됩니다. 뛰어난 커뮤니티 지원과 풍부한 문서가 제공됩니다.
성능: 높은 정확도를 자랑하지만, 설정과 사용이 다소 복잡할 수 있습니다.
Wav2Vec 2.0 (Facebook AI):

특징: Self-supervised learning을 사용한 최신 음성 인식 모델로, 사전 학습된 모델을 제공하여 다양한 언어에서 뛰어난 성능을 발휘합니다.
장점: 사전 학습된 모델을 사용하여 다양한 언어에 쉽게 적용할 수 있습니다. 높은 정확도와 효율성을 제공합니다.
성능: 최첨단 성능을 자랑하며, 다양한 음성 인식 작업에서 우수한 결과를 보여줍니다.
Julius:

특징: 일본어 음성 인식에 특화된 오픈 소스 엔진입니다. 다양한 음성 데이터와 언어 모델을 사용할 수 있습니다.
장점: 일본어 음성 인식에서 매우 높은 성능을 보입니다. 경량화된 설계로 리소스가 적게 소모됩니다.
성능: 일본어 음성 인식에서는 매우 뛰어난 성능을 보이지만, 다른 언어에서는 제한적일 수 있습니다.
CMU Sphinx (PocketSphinx):

특징: 오래된 음성 인식 엔진으로, 모바일과 임베디드 시스템에서 사용하기 적합합니다. 다양한 언어 모델과 음성 데이터셋을 지원합니다.
장점: 경량화된 설계로 저사양 장치에서도 사용 가능합니다. 다양한 언어와 환경에서 사용될 수 있습니다.
성능: 다른 최신 기술에 비해 다소 낮은 성능을 보일 수 있지만, 특정 용도에서는 여전히 유용합니다.
결론
위의 오픈 소스 솔루션들은 각각의 장점과 특성을 가지고 있으며, 사용자의 필요에 따라 적절한 솔루션을 선택할 수 있습니다. DeepSpeech와 Wav2Vec 2.0은 최신 딥러닝 기술을 활용하여 높은 정확도를 제공하며, Kaldi는 연구와 상용화에 적합한 강력한 도구입니다. Julius는 일본어 음성 인식에 특화되어 있고, CMU Sphinx는 경량화된 솔루션으로 다양한 환경에서 사용될 수 있습니다.

claude

STT(Speech-to-Text) 분야에서 널리 사용되는 오픈소스 솔루션들을 성능 순으로 소개해 드리겠습니다.

1. **Wav2Vec 2.0 (Facebook AI)**: Transformer 기반의 최신 STT 모델로, 다양한 데이터셋에서 SOTA(State-of-the-art) 성능을 보입니다. 전이학습에도 유리합니다.

2. **Conformer (Google)**: Transformer와 ConvNet의 장점을 결합한 모델로, 온라인 STT에 적합하고 성능이 매우 뛰어납니다. 

3. **Deepspeech (Mozilla)**: RNN/LSTM 기반의 모델로, GPU에 최적화되어 있습니다. 데이터 부족 문제를 전이학습으로 해결할 수 있습니다.

4. **Kaldi**: C++로 작성된 익스텐서블한 구조로, 다양한 모델을 지원하고 있습니다. 성능은 우수하나 GPU 지원이 부족한 편입니다.

5. **CMU Sphinx**: 최근 업데이트가 있었고, Python으로 작성되어 확장성이 좋습니다. 데이터셋에 따라 성능 편차가 있습니다.

6. **Vosk**: 크로스플랫폼 지원, 낮은 메모리 요구량 등의 장점이 있지만, 성능은 다른 솔루션에 비해 다소 부족합니다.

이외에도 ESPnet, Silero Models, Fairseq 등의 솔루션이 있습니다. 사용 목적과 환경, 성능 요구사항에 따라 적절한 솔루션을 선택하는 것이 중요합니다. 대부분 솔루션이 Python 기반이며, 모델 재학습이나 추론에 GPU가 필요한 경우가 많습니다.