(Research) STT (1) 음성을 텍스트로 변환하기 (가이드)

 

Python 을 사용해 음성 인식하고 텍스트로 변환하기 가이드

어느 정도 프로그램 개발을 경험해 본 이들이라면 AI 스피커(or 비서)를 사용시, 궁금 혹은 신기함과 동시에 음성에 기반한 서비스를 개발해 보고 싶다고 생각해 보았을 것입니다. ^^



이러한 분들은 물론 개발 경험이 길지 않거나,  자연어 처리 또는 음성 인식에 대한 지식이 아직은(?) 없는 이들이라도 쉽게 따라해 볼 수 있는  몇 가지 패키지가 있어 이를 소개 하고자 합니다.

각자의 주어진 상황 맞게 활용하시면 되겠습니다.


Speech_recognition

(영어 기준)

(영어 이외의 언어로 된 음성 인식 - language키워드 인수를 허용 항목)

  • recognize_bing()
  • recognize_google()
    • recognize_google(audio, language='fr-FR')
  • recognize_google_cloud()
  • recognize_ibm()
  • recognize_sphinx()

본인의 경우  speech_recognition 라이브러리를 사용해 recognize_google '한국어'으 로 음성을 text 로 변환해 보고자 합니다.

  • 환경 설정
    • 음성인식
      • pip를 사용하여 터미널에서 SpeechRecognition을 설치 확인
        • $ pip install SpeechRecognition
      • 설치 확인
        • >> import speech_recognition as sr

    • SpeechRecognizer로 마이크에 액세스하려면 PyAudio 패키지 설치 필요
      • [윈도우] $ pip install pyaudio
      • [데비안 리눅스] $ sudo apt-get install python-pyaudio python3-pyaudio
  • 준비물 : wav 등 음성 파일 
    • 지원 되는 파일 유형
      • WAV : PCM / LPCM 형식 
      • AIFF
      • AIFF-C
      • FLAC : 기본 FLAC 형식,  OGG-FLAC는 지원되지 않음.
  • 세부 개발 정보  


import speech_recognition as sr


recognizer = sr.Recognizer()
recognizer.energy_threshold = 300

## wav 파일 읽어오기
harvard_audio = sr.AudioFile("./TEST.wav")

# audio file을 audio source로 사용합니다
r = sr.Recognizer()
with harvard_audio as source:
    audio = r.record(source)  # 전체 audio file 읽기

# 구글 웹 음성 API로 인식하기 (하루에 제한 50회)
try:
    print("Google Speech Recognition thinks you said : " + r.recognize_google(audiolanguage='ko'))
except sr.UnknownValueError:
    print("Google Speech Recognition could not understand audio")
except sr.RequestError as e:
    print("Could not request results from Google Speech Recognition service; {0}".format(e))
    
"""
    recognize_bing(): Microsoft Bing Speech
    recognize_google(): Google Web Speech API
    recognize_google_cloud(): Google Cloud Speech - requires installation of the google-cloud-speech package
    recognize_houndify(): Houndify by SoundHound

    recognize_ibm(): IBM Speech to Text
    recognize_sphinx(): CMU Sphinx - requires installing PocketSphinx
    recognize_wit(): Wit.ai
"""

print(recognizer)