Base/Python

[Python] 파이썬으로 간단한 STT(음성인식) 개발해보기

반응형

STT란?

 

음성인식(Speech-to-Text, STT)은, 사람이 발화한 음성을 컴퓨터가 이해할 수 있는 텍스트로 변환하는 기술을 말합니다. STT은 최근에 자연어 처리 기술의 발전과 함께 빠르게 발전해 왔으며, 스마트폰의 음성인식 기능, 가상비서, 음성 검색 등 다양한 분야에서 활용되고 있습니다.

 

STT 시스템은 다음과 같은 구성 요소로 이루어져 있습니다.

  1. 음성 입력: 사용자가 발화한 음성을 입력받는 부분입니다. 마이크나 전화기와 같은 장비를 통해 입력받을 수 있습니다.
  2. 전처리: 입력된 음성 신호를 디지털 신호로 변환하고, 필터링, 잡음 제거 등의 전처리 작업을 수행합니다.
  3. 특징 추출: 전처리된 음성 신호에서 특징을 추출합니다. 일반적으로는 Mel-frequency cepstral coefficients (MFCC)와 같은 특징을 사용합니다.
  4. 음성 모델링: 추출된 특징을 기반으로 음성 모델을 만듭니다. 음성 모델은 단어, 문장 등의 음성 유형을 인식하는데 사용됩니다.
  5. 디코딩: 음성 모델을 기반으로 입력된 음성 신호를 텍스트로 변환합니다. 이때, 미리 학습된 언어 모델을 사용하여 음성 신호를 최적의 텍스트로 변환합니다.

STT 기술은 다양한 언어와 환경에서 사용할 수 있으며, 다양한 업계에서 활용됩니다. 음성 검색, 텍스트 요약, 자동 자막 생성, 통역, 음성 인식 기반의 가상비서, 의료 영상, 금융 관련 작업 등 다양한 분야에서 STT 기술의 활용이 이루어지고 있습니다.

 

 

 

코드

 

음성인식(Speech-to-Text, STT) 기능을 파이썬으로 구현하려면, 먼저 음성을 녹음하고, 이를 STT 엔진에 전달하여 텍스트로 변환해야 합니다. 

 

여기에서는 SpeechRecognition 라이브러리를 사용하여 STT 기능을 구현하는 방법에 대해 설명하겠습니다.

SpeechRecognition 라이브러리를 설치하려면, pip를 사용하여 다음과 같이 명령어를 실행합니다.

 

import speech_recognition as sr

# 음성 녹음
r = sr.Recognizer()
with sr.Microphone() as source:
    print("Speak anything:")
    audio = r.listen(source)

# 음성 인식
try:
    text = r.recognize_google(audio, language='ko-KR')
    print("You said: {}".format(text))
except:
    print("Sorry, could not recognize your voice.")

 

 

위 코드에서는 SpeechRecognition 라이브러리를 사용하여 음성을 녹음합니다. recognize_google() 함수를 사용하여 Google Speech API를 사용하여 음성을 텍스트로 변환합니다. language 매개변수를 사용하여 음성의 언어를 지정할 수 있습니다. 여기에서는 한국어를 사용했습니다.

 

recognize_google() 함수가 반환하는 텍스트는 text 변수에 저장되며, 이를 출력합니다.

 

코드를 실행하면, 마이크를 사용하여 음성을 녹음하고, 이를 Google Speech API를 사용하여 텍스트로 변환한 결과를 출력합니다. 만약 음성을 인식하지 못하면 "Sorry, could not recognize your voice." 메시지가 출력됩니다.

 

SpeechRecognition 라이브러리는 다양한 STT 엔진을 지원하며, Google Speech API 외에도 CMU Sphinx, Microsoft Azure, IBM Watson 등의 엔진을 사용할 수 있습니다. 

 

이를 위해서는 recognize_sphinx(), recognize_azure(), recognize_ibm() 등의 함수를 사용하면 됩니다.

반응형