파이썬 실습/실시간 음성메모 프로그램 만들기

파이썬 실시간 음성메모 프로그램 만들기 - 2.음성<->텍스트 변환 후 파일로 저장

파기차차 2023. 1. 26. 09:20
728x90
반응형
SMALL
728x90
반응형

ㅁ 개요

 

O 프로그램 소개

 

 

 - 이번 글은 이전글(파이썬 음성메모 프로그램 만들기 - 1.소개편)에 이은 2번째 글로 우리가 음성으로 말한 내용을 텍스트로 변환 후 파일로 저장하는 방법에 대하여 설명합니다.

 

 

 

 

O 완성된 프로그램 실행 화면

 

 

 - 최종 완성된 프로그램의 결과화면은 아래와 같습니다.

 

 

1. 프로그램 실행 결과 안내 방송이 나오고, '지금 말씀하세요: ' 라는 문구가 나온 후 제가 '안녕'이라고 말을 하였습니다.

2. 이후 제가 음성으로 말한 내용을 화면에 보여 줍니다.('말씀하신 내용입니다 : 안녕')

 

 

 

 

3. 그리고 실행파일의 위치에 가보니 'memo.txt'파일이 생성되었고, 이 파일을 열어보니 '안녕'이라는 텍스트가 잘 저장된 것을 볼 수 있습니다.

 

 

 

 

 

 

O 시작전 준비 사항

 

 

1. 프로그램을 실행하기 위해서는 아래 모듈들이 필요합니다. 아래와 같이 임포트 해줍니다.

 

import speech_recognition as sr
from gtts import gTTS
import os
import playsound
import time

 

※ 설치 시 에러가 발생거나, 궁금하신 점이 있으시면 댓글로 문의 주시면 친절하게 답변드리겠습니다.

 

 

2. 우리 프로그램은 음성을 메모하는 프로그램으로 음성을 전달할 수 있는 마이크가 있어야 합니다. 저의 경우 그냥 저렴한 이어폰의 마이크 기능이 달려있는 기본 이어폰으로 테스트를 하였으며, 잘 동작하는 것을 확인하였습니다.

 

 

 

 

 


 

 

 

 

ㅁ 세부 내용

 

O 완성된 소스

 

 

소스 : 3.py

import speech_recognition as sr
from gtts import gTTS
import os
import playsound

def speak(text):
    tts = gTTS(text=text, lang='ko')
    filename='voice.mp3'
    tts.save(filename) # 파일을 만들고,
    playsound.playsound(filename) # 해당 음성파일을 실행(즉, 음성을 말함)
    os.remove(filename) # <---- 이부분이 없으면 퍼미션 에러 발생(아마도 파일을 연 상태에서 추가적인 파일생성 부분에서 에러가 발생하는 것으로 보임)

def get_audio():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("지금 말씀하세요: ")
        audio = r.listen(source)
        said = " "

        try:
            said = r.recognize_google(audio, language="ko-KR")
            print("말씀하신 내용입니다 : ", said)
        except Exception as e:
            print("Exception: " + str(e))
    
    return said

#############################
# 0.안내 방송(음성)
#############################
speak("안녕하세요. 2초 후에 '지금 말씀하세요: ' 라는 문장이 나온 후 말 하시면 텍스트로 저장됩니다.") 

#############################
# 1.음성입력
#############################
text=get_audio()


#############################
# 5.파일저장
#############################
with open('memo.txt', 'w') as f:
    f.write(str(text)+"\n")

 

 

 

 

 

O 소스 다운로드 및 실행

 
 - 소스파일 다운로드 후 cmd, 파워쉘, vscode 등에서 아래와 같이 실행하시기 바랍니다.
 
 > python 3.py
 

 

 


 
 

O 주요 내용

 

1.아래 소스는 다음과 같이 동작합니다.

 

1) speak(text)함수에 한글로 문자열을 던져주면  : speak("안녕하세요~~")

2) gTTS가 음성으로 변환합니다. : tts = gTTS(text=text, lang='ko')

3) 음성으로 변환된 소리를 파일로 저장 후 : filename='voice.mp3'

4) 소리를 들려주고(안내 방송) : playsound.playsound(filename)

5) 이 파일이 계속 존재하면 에러(권한 관련)가 발생하므로 삭제해 줍니다. : os.remove(filename)

 

 

 

 

 

 

2.실행해 보면 안내방송이 잘 나오는 것을 확인하실 수 있습니다.

 

 

 

3.아래 소스에서 get_audio()함수는 다음과 같이 동작합니다.

 

1) 음성인식을 위해 구글의 sr.Recognizer()의 r 객체를 생성합니다.

2) 마이크로 음성전달을 위해 sr.Microphone()함수를 사용하였습니다.

3) '지금 말씀하세요' 라는 문장 다음에 말을 하면

4) 마이크로 전달한 음성(source)을 듣고 audio변수에 음성으로 저장합니다.

5) 그 다음 정상적인 경우 한국어 음성을 구글의 r.recognize_google()함수로 텍스트로 변환 후

6) print문으로 "말씀하신 내용입니다. : " 문구 뒤에 텍스트로 찍어 줍니다.

 

 

 

 

4. 실제 위의 소스 실행 결과 제가 '안녕'이라고 말한 후 바로 "말씀하신 내용입니다." 라고 보여준 뒤 '안녕'이라는 텍스트로 변환되어 출력된 것을 볼 수 있습니다.

 

 

 

 

5.아래 소스는 변환된 텍스트의 내용을 단순히 파일에 저장하는 부분입니다.

 

 

 

 

6. 위의 소스를 실행해 보면 아래와 같이 출력되며, 위의 4번과 결과가 비슷합니다.

 

 

 

7. 다만, 아래와 같이 파일하나가 생성된 것을 볼 수 있고, 파일을 열어 보면 우리가 말한 '안녕'이라는 음성이 텍스트로 저장된 것을 확인 할 수 있습니다.

 

 

 

 

 


 

ㅁ 정리

 

O 우리가 배운 내용

 
 - 오늘은 음성으로 말한 내용을 텍스트로 변환 후 파일로 저장하는 방법에 대하여 알아보았습니다.
 
 
 
 
 - 오늘 우리가 배운 내용을 정리해 보면 아래와 같습니다.
 
 
1. 가장 핵심적인 내용은 아래 부분입니다.
 
def get_audio():
    r = sr.Recognizer() <-- 음성인식을 위한 r객체 생성
    with sr.Microphone() as source: <-- 마이크에 음성 입력을 위한 부분
        print("지금 말씀하세요: ")
        audio = r.listen(source) <-- audio변수에 내가 말한 내용을 음성으로 저장
        said = " "

        try:
            said = r.recognize_google(audio, language="ko-KR") <-- 음성을 텍스트로 변환
            print("말씀하신 내용입니다 : ", said)
        except Exception as e:
            print("Exception: " + str(e))
    
    return said

 

 

 

오늘은 여기까지이며, 위의 내용이 유익하셨다면, 좋아요와 구독 부탁드립니다.

 

 

감사합니다.

 

 

 

 

※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.

 

 
728x90
반응형
LIST