ㅁ 개요
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 소스 다운로드 및 실행
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 우리가 배운 내용
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
오늘은 여기까지이며, 위의 내용이 유익하셨다면, 좋아요와 구독 부탁드립니다.
감사합니다.
※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.
'파이썬 실습 > 실시간 음성메모 프로그램 만들기' 카테고리의 다른 글
파이썬 실시간 음성메모 프로그램 만들기 - 3.실시간 음성 메모 (4) | 2023.01.26 |
---|---|
파이썬 실시간 음성메모 프로그램 만들기 - 2.음성<->텍스트 변환 후 파일로 저장(계속) (0) | 2023.01.26 |
파이썬 실시간 음성메모 프로그램 만들기 - 1.소개편 (7) | 2023.01.19 |