사용법 튜토리얼

Python과 GPT로 로봇 음성 대화 시스템 만드는 법 — STT+LLM+TTS 통합 가이드

zeus0317 2026. 3. 26. 10:32

로봇과 대화하는 시스템을 직접 만들어보자

로봇아, 오늘 일정 알려줘라고 말하면 로봇이 음성으로 대답하는 시스템, 만들어보고 싶지 않으세요? STT(음성 인식), LLM(대규모 언어 모델), TTS(음성 합성) 세 가지 기술을 결합하면 사람과 자연스럽게 대화하는 로봇 음성 시스템을 구축할 수 있어요.

이번 튜토리얼에서는 OpenAI의 Whisper(STT), GPT-4o(LLM), TTS API를 활용해서 음성으로 대화하는 로봇 시스템을 처음부터 끝까지 만들어 보겠습니다. Python 기본 지식이 있다면 충분히 따라할 수 있으니 함께 시작해볼까요?

Step 1 — 전체 시스템 구조 이해하기

음성 대화 시스템의 흐름은 간단해요. 사용자가 말하면(음성 입력), Whisper가 텍스트로 변환하고(STT), GPT가 적절한 답변을 생성하고(LLM), TTS가 답변을 음성으로 변환해서 스피커로 출력해요. 이 세 단계를 파이프라인으로 연결하면 실시간 음성 대화가 가능해지는 거예요.

필요한 하드웨어는 마이크와 스피커뿐이에요. 라즈베리 파이에 USB 마이크와 스피커를 연결하면 저렴하게 로봇 음성 시스템을 구축할 수 있답니다.

Step 2 — 개발 환경 설정

패키지 설치

pip install openai pyaudio wave python-dotenv 명령으로 필요한 패키지를 설치해요. openai는 Whisper, GPT, TTS API 호출에 사용하고, pyaudio는 마이크에서 음성을 녹음하는 데 사용해요. wave는 오디오 파일 처리를 위한 표준 라이브러리예요.

pyaudio 설치에 문제가 생기면 Windows에서는 pipwin install pyaudio를, Mac에서는 brew install portaudio 후 pip install pyaudio를 시도해보세요.

Step 3 — 음성 녹음 모듈 만들기

마이크로 사용자의 음성을 녹음하는 모듈을 만들어요. PyAudio를 사용해서 마이크 입력을 실시간으로 캡처하고, WAV 파일로 저장하는 기능이에요. 녹음 시작과 종료는 키보드 입력이나 음성 활동 감지(VAD)로 제어할 수 있어요.

더 스마트한 방식은 음성 활동 감지를 사용하는 거예요. 일정 크기 이상의 소리가 감지되면 자동으로 녹음을 시작하고, 일정 시간 동안 침묵이 이어지면 녹음을 종료하는 방식이죠. 이렇게 하면 사용자가 버튼을 누르지 않아도 자연스럽게 대화를 시작할 수 있어요.

Step 4 — Whisper로 음성을 텍스트로 변환

OpenAI Whisper API 사용

녹음된 WAV 파일을 OpenAI Whisper API에 보내면 텍스트로 변환돼요. client.audio.transcriptions.create 메서드에 model을 whisper-1으로 설정하고, 녹음 파일을 전달하면 돼요. language 파라미터에 ko를 지정하면 한국어 인식 정확도가 높아져요.

Whisper API는 다국어를 지원하기 때문에 한국어, 영어, 일본어 등 다양한 언어의 음성을 인식할 수 있어요. 로봇이 여러 언어로 대화해야 하는 경우에도 유연하게 대응할 수 있답니다.

Step 5 — GPT로 지능적인 응답 생성하기

로봇 전용 시스템 프롬프트 설계

GPT에게 로봇의 성격과 역할을 부여하는 시스템 프롬프트를 설계해요. 너는 가정용 도우미 로봇이야. 친절하고 유쾌한 성격이며, 일정 관리, 날씨 안내, 간단한 대화를 할 수 있어. 답변은 2~3문장으로 짧고 자연스럽게 해줘라는 식으로 설정하면 돼요.

대화 기록을 리스트로 관리해서 GPT에게 전달하면 이전 대화의 맥락을 유지한 자연스러운 대화가 가능해요. 너무 긴 대화 기록은 토큰 소비를 늘리므로, 최근 10개 대화만 유지하는 방식을 추천합니다.

Step 6 — TTS로 음성 출력하기

OpenAI TTS API 활용

GPT가 생성한 텍스트 응답을 OpenAI TTS API로 음성으로 변환해요. client.audio.speech.create 메서드에 model을 tts-1으로, voice는 alloy, echo, fable, onyx, nova, shimmer 중 선택할 수 있어요. 로봇의 캐릭터에 맞는 음성을 골라보세요.

생성된 음성 파일을 PyAudio나 playsound 라이브러리로 재생하면 로봇이 말하는 것처럼 들려요. response_format을 mp3나 opus로 설정하면 파일 크기를 줄여서 응답 속도를 높일 수 있어요.

Step 7 — 전체 파이프라인 통합

지금까지 만든 녹음, STT, LLM, TTS 모듈을 하나의 메인 루프로 통합해요. while 루프 안에서 음성 녹음, Whisper 변환, GPT 응답 생성, TTS 출력을 순서대로 실행하면 연속적인 음성 대화가 가능해져요.

종료 명령으로 대화 끝이나 종료해줘 같은 특정 키워드를 인식하면 루프를 종료하도록 설정해줍니다. 또한 에러 처리를 추가해서 네트워크 오류나 API 실패 시에도 시스템이 안정적으로 동작하도록 해요.

Step 8 — 응답 속도 최적화

음성 대화에서 지연 시간은 사용자 경험에 큰 영향을 미쳐요. 응답 속도를 높이는 팁을 알려드릴게요. 첫째, GPT의 스트리밍 응답을 활용해서 첫 문장이 생성되자마자 TTS로 전달하는 방식으로 체감 지연을 줄일 수 있어요. 둘째, TTS에서 tts-1 모델이 tts-1-hd보다 빠르니 실시간 대화에는 tts-1을 사용하세요. 셋째, Whisper API 대신 로컬 Whisper 모델을 사용하면 네트워크 지연을 없앨 수 있어요.

마무리 — 더 발전시킬 수 있는 방향

축하해요! 음성으로 대화하는 로봇 시스템이 완성되었어요. 여기서 더 발전시키고 싶다면, 로봇의 표정이나 제스처와 음성을 동기화하는 기능, 외부 API와 연동해서 실제 일정 관리나 스마트홈 제어를 수행하는 기능, 화자 인식으로 사용자를 구분하는 기능 등을 추가해볼 수 있어요.

음성 대화는 인간과 로봇의 가장 자연스러운 소통 방식이에요. 이 튜토리얼이 여러분의 AI 로봇 프로젝트에 도움이 되길 바랍니다!