본문 바로가기
Python/Speech Recognition

[Python] Speech recognition 음성 인식 - 1

by hotelshoe 2022. 1. 6.
반응형

파이썬 라이브러리 중 음성인식 기능을 사용할 수 있는 speech recognition

IDE에서 다음의 명령어로 pip를 통해 간단히 설치가 가능합니다.

pip install SpeechRecognition

 

설치 완료후 speech recognition은 다음과 같은 인스턴스를 생성하여 모든 작업을 실시합니다.

r = speech_recognition.Recognizer()

 

아래는 해당 인스턴스에서는 다음 7가지의 API들로 오디오 소스의 음성을 인식합니다. 각 기능에 대한 자세한 설명은 하단 링크를 참조하면 됩니다.

recognize_sphinx CMU Sphinx
(PocketSpnix 설치 필요)
https://cmusphinx.github.io/
recognize_bing() MS의 Bing speech https://azure.microsoft.com/en-us/services/cognitive-services/speech-services/
recognize_google() google의 web speech API https://wicg.github.io/speech-api/
recognize_google_cloud() google의 cloud speech
(google-cloud-speech 설치 필요)
https://cloud.google.com/speech-to-text
recognize_houndify() SoundHound의 API https://www.houndify.com/
recognize_ibm() IBM의 Speech To Text https://www.ibm.com/cloud/watson-speech-to-text
recognize_wit() Wit https://wit.ai/

recognize_sphinx의 경우 오프라인에서도 작동하나 나머지 6개는 모두 인터넷 연결을 필요로 합니다. 또한 사용하기 위해선 API키가 필요하지만 google의 경우 기본 API키가 있어 바로 사용이 가능합니다. 따라서 이번 테스트에서는 recognize_google을 사용해보기로 하겠습니다.

 


소스코드

import speech_recognition as sr
#import sys #-- 텍스트 저장시 사용

r = sr.Recognizer()

audio_file = sr.AudioFile('./test_file.wav')

with audio_file as source:
    audio = r.record(source)

#sys.stdout = open('stdout.txt', 'w') #-- 텍스트 저장시 사용

print(r.recognize_google(audio))

#sys.stdout.close() #-- 텍스트 저장시 사용

텍스트 출력의 필요성을 고려해 각주로 남겨놓았습니다.

 

기본적으로 영어 베이스이며 한글 출력이 필요한 경우 아래 코드를 참조하면 될 것 같습니다.

import speech_recognition as sr
#import sys #-- 텍스트 저장시 사용

r = sr.Recognizer()
kr_audio = sr.AudioFile('./test_file.wav')

with kr_audio as source:
    audio = r.record(source)

#sys.stdout = open('news_out.txt', 'w') #-- 텍스트 저장시 사용
print(r.recognize_google(audio, language='ko-KR')) #-- 한글 언어 사용

#sys.stdout.close() #-- 텍스트 저장시 사용

테스트

drama_test.wav
6.37MB

영문 드라마의 일부 대사를 통해 출력한 결과

the 같은 묵음의 느낌이 나는 단어는 인식이 잘 안 되지만 전체적으로 잘 인식이 되는 듯 싶습니다. 그러나 문장을 끊어 인식하지는 못한다는 단점이 있습니다.

 

해당 출력을 txt 파일로 생성하였을 때 마찬가지로 문장을 끊어 인식하지 못해 한 줄로 출력된 모습을 볼 수 있습니다.

 

 

news.wav
1.65MB

한글 뉴스 일부를 출력한 결과

약간 잘못 인식하는 부분이 있지만 영어와 마찬가지로 전체적으로 잘 인식이 되는 느낌입니다.

이 역시도 문장을 끊어 인식하지는 못한다는 단점이 있습니다.

반응형

'Python > Speech Recognition' 카테고리의 다른 글

[Python] Speech recognition 음성 인식 - 2  (1) 2022.01.06

댓글