🧪 새 튜토리얼이 계속 업데이트 중 — 로봇 팔부터 센서까지
본문으로 건너뛰기

9장: 음성 대화

스토어에서 구매

이번 장의 목표: 샤오즈 AI 클라우드 서비스에 연결하여 NanoCam과 자연스러운 음성 대화를 진행합니다.

이번 장 안내

이번 장은 XiaoZhi AI 모드(ai_mode:6)를 다룹니다. 중요: 모드 6(음성 대화)과 모드 7(ESP-Claw)은 동일한 펌웨어(nanocam_espclaw/)를 공유하며, 기기 부팅 시 NVS에 저장된 ai_mode 값에 따라 서로 다른 MCP 도구 세트를 로드할 뿐입니다.

비교 항목XiaoZhi AI (mode 6)ESP-Claw (mode 7)
음성 대화✅ ASR→LLM→TTS✅ 동일한 음성 파이프라인
MCP 도구범용 도구(볼륨/사진 촬영 등)범용 도구 + 하드웨어 전용 도구 5개
시각 이해self.camera.take_photoself.camera.inspect_image (멀티모달 비전)
LED 제어✅ 음성으로 색상 조절
적용 시나리오범용 AI 대화, 아동 교육하드웨어 제어, 비전 점검, 스마트 홈

이번 장은 **XiaoZhi AI(모드 6)**의 음성 대화 핵심 기능에 집중합니다. ESP-Claw의 하드웨어 제어 기능을 알아보려면 11장: ESP-Claw 음성 제어를 읽어 보세요.

원리

NanoCam은 샤오즈 AI 오픈소스 프레임워크를 통합하여 WebSocket / MQTT 프로토콜로 LLM 서버에 연결해 완전한 음성 상호작용 파이프라인을 구현합니다:

Plain
사용자 발화 → ES8311 마이크 수집 → Opus 인코딩
  → WebSocket → 클라우드 ASR 음성 인식
  → LLM 대규모 모델이 응답 생성
  → TTS 음성 합성 → Opus 디코딩
  → NS4150B 앰프 → 스피커 재생

전이중 설계: 사용자는 AI가 말하는 동안 바로 끼어들 수 있어(barge-in) 실제 사람과의 대화에 가까운 경험을 제공합니다.

하드웨어 요구 사항

이번 장은 오디오 기능을 다루므로 다음 하드웨어가 필요합니다:

  • NanoCam 코어 보드(ES8311 Codec + AP2718AT 마이크 포함)

  • NanoCam 베이스 보드(NS4150B 앰프 + CH340K 포함)

  • 스피커(베이스 보드의 스피커 커넥터 VON/VOP에 연결)

코어 보드만으로도 테스트할 수 있습니다(ES8311 헤드폰 출력으로 청취). 마이크는 AP2718AT 아날로그 MEMS 실리콘 마이크이며, C26 직류 차단 커패시터를 통해 ES8311 MIC1P에 연결됩니다.

단계

9.1 XiaoZhi AI 펌웨어 플래싱

XiaoZhi AI는 nanocam_espclaw/ 독립 펌웨어 프로젝트를 사용합니다:

Bash
cd nanocam_espclaw
idf.py set-target esp32s3
idf.py build
idf.py -p COMx flash monitor

부팅 후 기본값이 XiaoZhi AI 모드입니다.

9.2 xiaozhi.me 클라우드 서비스 연결

NanoCam은 출고 시 기본으로 xiaozhi.me 공식 클라우드 서비스(무료)에 연결되며, 자체 서버 구축이 필요하지 않습니다.

  1. xiaozhi.me에서 계정 등록

  2. 기기 전원을 켜면 6자리 활성화 코드가 자동으로 음성 안내됩니다

  3. xiaozhi.me 콘솔에 활성화 코드 입력 → 기기 바인딩

  4. 콘솔에서 LLM 모델 선택(Qwen / DeepSeek 등)

활성화는 한 번만 하면 되며, 이후 전원을 켤 때마다 자동으로 연결됩니다.

9.3 첫 대화

안내음이 들리면 대화할 수 있습니다:

Plain
나: "你好小智, 오늘 날씨 어때?"
NanoCam: "오늘 날씨를 확인해 드릴게요..."

웨이크 워드는 "你好小智"(기본값)입니다.

9.4 자주 쓰는 대화 시나리오

Plain
💬 "농담 하나 해줘"          → AI 음성 답변
💬 "5분 알람 맞춰줘"         → 알람 기능
💬 "지금 몇 시야"            → 시간 안내
💬 "경음악 한 곡 틀어줘"     → 네트워크로 음악 재생
💬 "블랙홀이 뭐야"           → 지식 질의응답

자체 구축 서버(선택 사항)

프라이버시 요구가 있거나 자체 LLM을 사용하려는 경우, 샤오즈 AI 오픈소스 서버를 배포할 수 있습니다:

Bash
git clone https://github.com/xinnan-tech/xiaozhi-esp32-server
cd xiaozhi-esp32-server
pip install -r requirements.txt
python app.py

펌웨어의 서버 주소는 OTA 시스템(sdkconfig의 CONFIG_OTA_URL)을 통해 전달되며, 기기는 전원을 켠 후 자동으로 서버 주소를 요청합니다.

XiaoZhi AI는 샤오즈 AI 오픈소스 서버(WebSocket 사설 프로토콜 + ASR/LLM/TTS 파이프라인)를 사용합니다. ESP-Claw 모드는 이를 기반으로 하며, 시각 분석 기능의 Vision API URL과 token은 MCP 핸드셰이크 단계에서 서버가 전달하므로 펌웨어에서 별도로 구성할 필요가 없습니다.

문제 해결

증상가능한 원인해결
소리가 들리지 않음스피커 미연결베이스 보드 스피커 커넥터 확인
음성 인식 부정확주변 소음이 너무 큼마이크에 가까이 대고 말하기(거리 < 1m)
연결 불가WiFi 미설정먼저 시리얼로 연결 설정 sta_ssid:xxx
활성화 코드 없음최초 부팅 미완료30초 기다리면 기기가 자동으로 음성 안내
답변이 느림LLM 서버 지연xiaozhi.me에서 더 빠른 모델 선택 또는 자체 서버 구축

시리얼 연결 설정 등 전체 명령은 시리얼 프로토콜 매뉴얼을 참조하세요.

다음 장: 10장: AI 비전 이해