ㅁ 개요
O 프로그램 소개
- 이번 글은 이전글(파이썬 음성메모 프로그램 만들기 - 2.음성<->텍스트 변환 후 파일로 저장(계속))에 이은 4번째 글로 이전글과 유사하지만, 불필요한 print()문 등을 제거하고, 음성간 간격을 줄여 우리가 음성으로 말하는 내용을 좀 더 자연스럽게 실시간으로 보여주는 방법에 대하여 설명합니다.
O 완성된 프로그램 실행 화면
- 최종 완성된 프로그램의 결과화면은 아래와 같습니다.
1. 프로그램 실행 결과 안내 방송이 나오고, 안내 방송('안녕하세요. 2초 후에 말씀하시고, 종료시 '굿바이'라고 말씀하시면 됩니다.')이 나온 후 제가 '안녕'이라고 말을 하였습니다.
2. 이후 '말씀하신 내용입니다. :' 라는 문구 없이 제가 음성으로 말한 내용만을 화면에 보여 줍니다.('안녕')
3. 이후 제가 '반가워 반가워 빨리빨리 해라' 라고 말을 하였습니다. <-- 제컴 속도가 느려서 반응이 느립니다. ㅠㅠ
4. 마찬가지로 화면에 '반가워 반가워 빨리빨리 해라' 라는 텍스트를 보여줍니다.
5. 맨 마지막으로 프로그램을 끝내고 싶다면 '굿바이' 라고 말하면 프로그램은 종료됩니다.
6. 그리고 실행파일의 위치에 가보니 'memo.txt'파일이 생성되었고, 이 파일을 열어보니 우리가 이야기했던 내용들('안녕' 등)이 모두 텍스트로 잘 저장된 것을 볼 수 있습니다.
O 시작전 준비 사항
1. 프로그램을 실행하기 위해서는 아래 모듈들이 필요합니다. 아래와 같이 임포트 해줍니다.
import speech_recognition as sr
from gtts import gTTS
import os
import playsound
import time
※ 설치 시 에러가 발생거나, 궁금하신 점이 있으시면 댓글로 문의 주시면 친절하게 답변드리겠습니다.
2. 우리 프로그램은 음성을 메모하는 프로그램으로 음성을 전달할 수 있는 마이크가 있어야 합니다. 저의 경우 그냥 저렴한 이어폰의 마이크 기능이 달려있는 기본 이어폰으로 테스트를 하였으며, 잘 동작하는 것을 확인하였습니다.
ㅁ 세부 내용
O 완성된 소스
소스 : server_realtime.py
import speech_recognition as sr
from gtts import gTTS
import os
import playsound
import time
from datetime import datetime
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:
pass
# print("Exception: " + str(e))
return said
#############################
# 0.안내 방송(음성)
#############################
if os.path.isfile('memo.txt'):
os.remove('memo.txt')
speak("안녕하세요. 2초 후에 말씀하시고, 종료시 '굿바이'라고 말씀하시면 됩니다.")
while True:
#############################
# 1.음성입력
#############################
text=get_audio()
print(text)
#############################
# 2.파일저장
#############################
with open('memo.txt', 'a') as f:
f.write(str(text)+"\n")
if "굿바이" in text:
break
time.sleep(0.1)
O 소스 다운로드 및 실행
O 주요 내용
1. 다른 부분은 이전글과 동일하므로 다른 부분 위주로 설명드리겠습니다.
불필요한 print()문을 제거하여 우리가 말한 음성만 보여주도록 하였습니다.
2. 먼저 'memo.txt'파일이 존재여부에 대한 코드를 맨 위로 올려 우선 점검하도록 하였으며,
아래 time.sleep(0.1)로 해주어 우리가 얘기하는 음성간의 짧은 텀의 말도 캐치할 수 있도록 간격을 줄였습니다.
(여러분의 컴퓨터의 성능에 따라 응답이 빠를 수도 느릴 수도 있는데, 저는 좀 느린 편이었습니다. ㅠㅠ)
ㅁ 정리
O 우리가 배운 내용
이것으로 '파이썬 음성메모 프로그램 만들기' 편을 마치며, 위의 내용이 유익하셨다면, 좋아요와 구독 부탁드립니다.
감사합니다.
※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.
'파이썬 실습 > 실시간 음성메모 프로그램 만들기' 카테고리의 다른 글
파이썬 실시간 음성메모 프로그램 만들기 - 2.음성<->텍스트 변환 후 파일로 저장(계속) (0) | 2023.01.26 |
---|---|
파이썬 실시간 음성메모 프로그램 만들기 - 2.음성<->텍스트 변환 후 파일로 저장 (2) | 2023.01.26 |
파이썬 실시간 음성메모 프로그램 만들기 - 1.소개편 (7) | 2023.01.19 |