안녕하세요! 마누카입니다.
이번에는 연구실에 방치되어 있던 M5Stack Core2를 사용하여, 질문을 녹음하고 전송 버튼을 누르면 AI가 여러 가지를 조사하여 조사 보고서를 PDF로 보내주는 장치를 만들어 보았습니다.
굳이 M5Stack을 사용하지 않고 주기적으로 실행시키면 좋지 않을까 생각했지만, '장치(gadget)'라는 로망이 저를 방해했습니다.
마지막으로 리포지토리를 공개했으니 활용해 보시면 좋을 것 같습니다.
제대로 조사 내용을 정리한 보고서가 돌아왔습니다!!
(문장이 조금 읽기 어려웠던 부분이 있어서, 조사용 프롬프트 등의 수정이 필요할 것 같습니다...)
・M5Stack Core2 by AWS (아래에 완전히 동일한 상품 링크를 붙여 놓겠습니다)
M5Stack Core2 - Amazon.co.jp
・Arduino IDE
・PC(Windows11)(아래 스펙)
{EDFA2759-B5E7-4FD5-89CD-A7DD8C0B0C65}.png
・Claude Code Pro 플랜 (이번에는 구독 내 토큰을 이용합니다)
・Docker
・Python
・사용 라이브러리에서는 GitHub 리포지토리의 requirements.txt를 적절히 참고해 주세요(아래가 내용입니다)
{F5574338-C25C-4613-BBD8-8E92A268404D}.png
・Google Gemini 모델 -> gemini-3.8-flash
음성 입력 → 음성 텍스트 변환 → 문장 정리 (필러 제거 + 조사 요청 구조화) → 에이전트에 의한 웹 조사 → PDF 생성 → Discord 전송
의 일직선입니다.
| # | 단계 | 사용한 것 | 하는 일 | 출력 |
|---|
| ① | 음성 텍스트 변환 | faster-whisper (small , CPU, int8 , 일본어) | 녹음된 음성을 텍스트로 변환 | transcription.json |
| ② | 문장 정리 | Gemini Flash (gemini-3.8-flash) | 오인식 보정(예: | |
각 단계의 입출력은 Pydantic 모델로 정의되어 있으며, 단계들 간에는 이 JSON 파일만으로 연결됩니다. 덕분에 다음과 같은 장점이 있습니다.
- 중간 JSON이 남아 있다면 해당 단계를 건너뛰고 재실행할 수 있습니다 (Discord 전송만 실패해도 전체 조사를 다시 할 필요가 없습니다).
- 'Whisper가 무엇을 들었는지', 'Gemini가 어떻게 해석했는지'를 나중에 확인할 수 있습니다.
- STT 엔진이나 알림 대상(Slack 등)을 쉽게 교체할 수 있습니다.
4. 서버는 즉시 응답하고, 조사는 백그라운드에서 진행합니다
조사에는 몇 분에서 몇십 분이 걸리기 때문에, 서버는 음성을 저장하는 시점에 M5Stack에 즉시 응답을 반환하고, 조사는 백그라운드 워커가 순차적으로 처리합니다. M5Stack 측에서는 '접수되었습니다'만 표시하면 되고, 결과는 Discord로 도착하기를 기다리면 됩니다.
(Arduino IDE 내 코드)
#include <M5Unified.h>
#include <WiFi.h>
#include <HTTPClient.h>
...