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

파이썬 실시간 음성메모 프로그램 만들기 - 3.실시간 음성 메모

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

ㅁ 개요

 

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 소스 다운로드 및 실행

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

 

 


 
 

O 주요 내용

 

1. 다른 부분은 이전글과 동일하므로 다른 부분 위주로 설명드리겠습니다.

 

불필요한 print()문을 제거하여 우리가 말한 음성만 보여주도록 하였습니다.

 

 

2. 먼저 'memo.txt'파일이 존재여부에 대한 코드를 맨 위로 올려 우선 점검하도록 하였으며,

아래 time.sleep(0.1)로 해주어 우리가 얘기하는 음성간의 짧은 텀의 말도 캐치할 수 있도록 간격을 줄였습니다.

(여러분의 컴퓨터의 성능에 따라 응답이 빠를 수도 느릴 수도 있는데, 저는 좀 느린 편이었습니다. ㅠㅠ)

 

 

 

 


 

ㅁ 정리

 

O 우리가 배운 내용

 
 - 오늘은 이전글과 크게 달라진 점은 없으나, 불필요한 print()문 등을 제거하고, 음성간 간격을 줄여 우리가 음성으로 말하는 내용을 좀 더 자연스럽게 실시간으로 보여주는 방법에 대하여 알아보았습니다.
 
 
 

 

이것으로 '파이썬 음성메모 프로그램 만들기' 편을 마치며, 위의 내용이 유익하셨다면, 좋아요와 구독 부탁드립니다.

 

 

감사합니다.

 

 

 

 

 

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

 

728x90
반응형
LIST