본문 바로가기
programming/Python

파이썬 음성 텍스트 변환 SpeechRecognizer 사용 how to convert speech to text

by 개코 - 개발과 코딩 2022. 3. 2.

파이썬으로 음성을 텍스트로 변환하기 위해 많이 사용하는 것이 SpeechRecognizer 이다. 코드 몇 줄이면 오디오 파일에서 음성을 추출할 수 있다. 검색만 하면 동일한 소스 코드가 많이 있는 것을 확인할 수 있다. 먼저, 간단한 것부터 해 본다. 여기서는 한글음성을 텍스트로 추출해 보는 것을 해 보도록 한다.

파이썬 음성 텍스트 변환 SpeechRecognizer 사용
how to convert speech to text

음성을 텍스트로 변경하는 프로그램은 많다.

음석을 텍스트로 변경하는 것은 STT 라고 하며 speech to text 라고 한다.

파이썬은 이를 다루는게 가장 쉽기도 하다.

다른 언어들도 라이브러리를 제공하기 때문에 기회가 되면 한 번 다뤄보도록 한다.

SpeechRecognizer 라이브러리

음성을 텍스트로 변환하는 방법으로 먼저 SpeechRecognizer 라이브러리를 사용한다.

이 라이브러리를 찾아보면 사용방법에 대해 많은 내용을 담고 있다.

파이썬에서 사용하려면 먼저 pip 를 통한 라이브러리 설치를 해야 한다.

pip install SpeechRecognition

본인은 비주얼 스튜디오 코드의 터미널에서 pip 설치를 진행다.

라이브러리 사용

speechrecognizer 라이브러리를 사용하기 위해선 라이브러리 추가를 해야 한다.

import 를 사용하여 speechrecognizer 라이브러리를 추가한다.

import speech_recognition as sr

인스턴스 생성

음성을 텍스트로 변경하기 위해 speechrecognizer 를 인스턴스화 한다.

이 때 객체화된 라이브러리를 이용해 wav 음성파일의 소스에서 텍스트를 추출할 수 있다.

r = sr.Recognizer()

오디오 소스에서 음성 기록

오디오 파일에서 초단위로 음성을 기록한다.

duration 은 초단위로 라이브러리에 초단위로 구분한 음성을 기록해 둔다.

이 기록된 오디오 정보에서 텍스트를 추출하게 된다.

with sr.AudioFile('audio.wav') as source:
    audio = r.record(source, duration=120)

구글 인식기 사용하여 텍스트 추출

기본적으로 제공하는 구글 인식기를 통해서 텍스트를 추출해 본다.

하루 50회정도의 제한이 있지만 나름 쓸만하다.

다른 것도 있지만 나중에 다뤄본다.

먼저 위에서 오디오변수인 audio 에서 한글을 텍스트로 출력해 보도록 한다.

r.recognize_google(audio_data=audio, language='ko-KR')

여기까지 되었다면 wav 오디오 음성 파일에서 텍스트를 추출할 수 있다.

ducration 을 120으로 준 것이 일정 시간이 넘어가면 timeout 으로 실행이 되지 않는다.

language 를 ko-KR 로 지정하면 한글 음성을 텍스트로 변경이 가능하다.

지정하지 않는다면 기본값은 영어이다.

샘플 코드

위의 내용까지 한번 빠르게 훓어보았다면 아래의 전체 코드를 보자.

이미 오디오 음성 파일을 만들어 두었다.

검색을 하면 한글 음성 파일은 많이 있기 때문에 그것을 참고 하자.

본인은 유튜브에서 뉴스 기사 하나를 골라 음성을 추출하였다.

import speech_recognition as sr

r = sr.Recognizer()

with sr.AudioFile('audio.wav') as source:
    audio = r.record(source, duration=120)
     
vToText = r.recognize_google(audio_data=audio, language='ko-KR')
print(vToText)

결과화면을 보자.

120초의 짧은 시간이지만 대체적으로 괜찮은 음성인식을 보여준다.

이것 또한 100% 완벽하지 않다.

한글이 나오다가 영어가 나오면 인식을 멈추는 경우도 있다.

간혹 난해한 발음이 나오면 인식하지 못하고 다른 단어를 추출하기도 한다.

하지만, 대체적으로 잘 나온다.

반응형

댓글