40 가상 비서 (Virtual Assistant)
전화 걸기, 일정 잡기, 할 일 목록 만들기, 메모 남기기 등의 작업을 도와주는 나만의 가상 비서를 만들어 봅시다. 사용자의 음성이나 텍스트 명령을 이해하고 최적의 행동을 수행하는 똑똑한 비서를 목표로 합니다.
이 프로젝트는 자연어 이해(NLU)와 음성 인식(STT), 그리고 외부 서비스 연동(API) 기술을 익히기에 아주 좋은 과제입니다. 특히 최근 인공지능 비서가 제공하는 개인화된 비서 기능을 직접 설계해 보세요.
40.1 주요 개발 포인트
- 음성 인식 및 음성 출력 (STT/TTS):
SpeechRecognition,gTTS,pyttsx3등을 사용하여 사용자와 대화합니다. - 자연어 이해 (Intent Classification): 사용자의 명령(예: “내일 10시 회의 잡아줘”)에서 의도를 파악하고 필요한 정보를 추출합니다.
- 개인 일정 및 할 일 관리: 캘린더 API나 로컬 DB와 연동하여 사용자의 일정을 등록하고 리마인드(Remind)합니다.
- 외부 정보 조회 및 자동화: 날씨 정보, 뉴스 헤드라인, 이메일 확인 등 다양한 외부 서비스를 연동합니다.
- 사용자 인터페이스 (GUI): 봇이 듣고 말하는 시각적 피드백과 함께 현재 작업 상태를 보여주는 대시보드를 구축합니다.
40.2 Python 구현 예시 (간단한 음성 명령 가상 비서 시뮬레이션)
import time
class VirtualAssistant:
"""
사용자의 음성/텍스트 명령을 처리하고 다양한 작업을 자동으로 수행합니다.
"""
def __init__(self, name="자비스"):
self.name = name
print(f"가상 비서 '{name}'가 시작되었습니다. 무엇을 도와드릴까요?")
def speak(self, text):
"""
텍스트를 음성으로 출력하거나 화면에 보여줍니다.
"""
print(f"[{self.name}] {text}")
# 실제 구현 시 TTS 라이브러리 연동
# engine.say(text)
# engine.runAndWait()
def process_command(self, command):
"""
사용자의 명령에서 의도를 파악하여 적절한 함수를 실행합니다.
"""
command = command.lower()
print(f"\n[사용자] {command}")
if "시간" in command:
current_time = time.strftime("%H시 %M분")
self.speak(f"현재 시간은 {current_time}입니다.")
elif "날씨" in command:
self.speak("오늘 서울의 날씨는 맑고 쾌청합니다.")
elif "메모" in command:
memo_content = command.replace("메모", "").strip()
self.speak(f"'{memo_content}'(이)라고 메모를 남겼습니다.")
# 로컬 파일이나 DB에 저장 로직 추가 가능
else:
self.speak("죄송해요, 그 명령은 아직 배우지 못했어요.")
if __name__ == "__main__":
assistant = VirtualAssistant()
# 음성 명령 시나리오 테스트
assistant.process_command("지금 몇 시야?")
assistant.process_command("오늘 날씨 어때?")
assistant.process_command("내일 장보기 메모해줘")
# 팁: OpenAI GPT API를 연동하면 훨씬 똑똑한 가상 비서를 만들 수 있습니다.
print("\n[팁] 'LangChain' 프레임워크를 사용하면 더 복잡한 비서 작업을 쉽게 구현할 수 있습니다.")