메뉴
HN
Hacker News 15일 전

Strands Agents로 빅마우스 빌리 베스를 실시간 음성 AI 비서로 만들기

IMP
6/10
핵심 요약

장난감 빅마우스 빌리 베스(Big Mouth Billy Bass)를 라즈베리파이와 AWS 음성 모델을 활용해 실시간으로 대화하는 AI 비서로 개조하는 프로젝트가 공개되었습니다. Strands Agents의 양방향 스트리밍과 Amazon Nova 2 Sonic 모델을 결합하여 사용자의 질문에 맞춰 입 모양을 맞추고 움직이는 물고기 로봇을 구현했습니다. 코딩이나 납땜 경험이 없어도 Claude 같은 AI 코딩 어시스턴트의 도움을 받아 주말 만에 쉽게 완성할 수 있는 것이 특징입니다.

번역된 본문

🐟 BillAI Bass 빌더 가이드: Strands Agents 기반

Strands Agents의 양방향 스트리밍(Bidirectional Streaming)과 Amazon Bedrock의 Amazon Nova 2 Sonic을 활용한 빌보드 데모 영상을 확인해 보세요.

장난감 '빅마우스 빌리 베스(Big Mouth Billy Bass)'를 실시간 음성 비서로 바꿔보세요. 사용자가 말을 걸면 물고기가 대답하며, 머리를 돌리고 자신의 목소리에 맞춰 립싱크를 하며, 강조할 때는 꼬리를 흔듭니다. 이 물고기는 라즈베리 파이 5(Raspberry Pi 5)에서 구동되는 Strands Agents 양방향 스트리밍 에이전트(BidiAgent)를 사용하여 Amazon Bedrock의 Amazon Nova 2 Sonic과 실시간으로 오디오를 스트리밍합니다.

로봇 공학 경험이나 납땜 경험이 전혀 필요하지 않습니다. 이 가이드의 원작자조차 라즈베리 파이를 연결해 본 적이 없었지만, 주말 하루 만에 말하는 물고기를 완성했습니다. 훌륭한 'billy-b-assistant' 프로젝트에서 영감을 받아 Strands 프레임워크 기반으로 새롭게 제작되었습니다.

저장소(Repo) 구성 파일 설명:

  • README.md: 지금 보고 계신 이 가이드입니다. 여기서 시작하여 위에서 아래로 순서대로 진행하세요.
  • billy.py: 말하는 물고기를 구동하는 완성된 파이썬(Python) 코드입니다.
  • motors.py: 독립적인 모터 테스트 스크립트입니다. billy.py를 실행하기 전에 배선을 확인하기 위해 먼저 실행하세요.
  • asoundrc.example: USB 마이크와 스피커를 기본 오디오 장치로 고정하는 ALSA 설정 파일입니다.
  • requirements-frozen.txt: 검증된 라즈베리 파이 빌드의 정확한 의존성 버전입니다. 오류 없는 환경 구축을 위해 pip install -r로 설치하세요.
  • iot-identity/: (선택 사항) 프로덕션 수준의 자격 증명입니다. 액세스 키 대신 X.509 인증서 기반 인증을 위한 CloudFormation 템플릿과 사용 가이드가 포함되어 있습니다.

AI 어시스턴트와 함께 빌드하는 방법: 이 README(설명서) 전체를 Claude(또는 다른 AI 어시스턴트)에 복사해서 붙여넣고 다음과 같이 프롬프트를 입력하세요: "이 프로젝트를 만들려고 해. 한 단계씩 차근차근 안내해 줘. 내가 각 단계를 완료하고 확인하기 전까지는 다음 단계를 알려주지 마." 이 프로젝트는 원래 이런 방식으로 만들어졌으며, 이렇게 진행할 때 가장 성공적으로 완성됩니다. 진행 중 막히는 부분이 있다면 아래의 'AI 어시스턴트와 함께 빌드하기' 섹션을 참고하세요.

🤝 AI 어시스턴트와 함께 빌드하기 이 프로젝트는 Claude Code의 도움으로 제작되었으며, 여러분도 모든 AI 어시스턴트를 활용해 진행할 수 있습니다. 가이드 전체를 AI에게 붙여넣고 위에서 언급한 프롬프트를 입력하세요. 그러면 AI가 여러분의 속도에 맞춰 빌드 과정을 이끌어주고, 정확한 에러 메시지를 디버깅해 주며, 여러분의 하드웨어가 가이드와 약간 다를 경우 유연하게 대처해 줄 것입니다.

빌드 중에 AI가 아주 훌륭하게 해줄 수 있는 작업들:

  • 정확한 에러 메시지 붙여넣기: 무서운 50줄짜리 파이썬 트레이스백(traceback) 에러 코드에서 보통 단 한 줄의 핵심 원인을 AI가 찾아냅니다.
  • 사진 전송: 모터 식별이 막히셨나요? 핀이 어느 것인지 모르겠나요? 사진을 찍어서 물어보세요. (Mac의 Claude Code에서는 터미널에 이미지 파일을 드롭하거나, "look at ~/Downloads/IMG_1234.jpg"라고 입력하면 됩니다.)
  • "X에 대해 아무것도 몰라"라고 말하세요: AI가 한 발짝 물러나 설명해 드립니다. 부끄러운 질문은 없습니다. 자신 없는 부분은 자르거나 납땜하기 전에 무조건 물어보세요.
  • 만약 이 가이드가 다루지 않는 문제에 부딪혔다면, 그것은 여러분의 실패가 아닙니다. 단지 가이드의 비어 있는 부분일 뿐입니다. AI와 여러분의 에러 메시지가 해결해 줄 것입니다.

🛒 준비물 쇼핑 리스트

  • 키트를 구매하셨다면: 아래 표의 모든 물건을 이미 가지고 계실 것입니다.
  • 처음부터 조립하신다면: 아래는 원래의 아마존 주문 내역입니다 (2026년 1월 기준 총 약 $240).
품목 용도 예상 가격
빅마우스 빌리 베스 (최신 "Gemmy" 버전) 말하는 물고기 본체. 이 가이드는 모터가 2개인 최신 버전을 기준으로 합니다. $30
라즈베리 파이 5 (Raspberry Pi 5), 8GB 두뇌 역할. 4GB 모델도 무방합니다. $80
27W USB-C PD 전원 어댑터 (공식 Pi 또는 RasTech GaN) 스마트폰 충전기로 대체하지 마세요. 적절한 전원 공급이 없으면 Pi가 USB 포트 전력을 제한합니다. $15
공식 라즈베리 파이 5 액티브 쿨러 방열판과 팬입니다. 없으면 Pi가 너무 뜨거워집니다. $10
MicroSD 카드, 64GB (예: Transcend USD340 등 유명 브랜드) Pi의 하드 드라이브 역할 $12
USB 미니 스피커 (예: HONKYOB) 물고기의 목소리 출력 $15
USB 플렉서블(gooseneck) 미니 마이크 (예: CGS-M1) 물고기의 귀(음성 입력) 역할 $13
MX1508 듀얼 H-브릿지 모터 드라이버, 5개입 (예: Aideepen, "L298N 대체품"으로 판매됨) Pi가 모터를 안전하게 구동할 수 있게 해주는 부품. 1개만 필요하지만, 실수를 만회하기 위해 여분을 줍니다. $9
두Pont(DuPont) 점퍼 와이어 키트, 120개입 수컷/암컷 혼합 (예: ELEGOO) 드라이버 보드와 Pi를 연결합니다. 암컷-암컷(Female-to-Female) 연결선 약 6개를 사용합니다. $7
납땜 인두 키트, 60W (팁과 납 포함) 총 10곳을 납땜해야 합니다. 저렴한 키트면 충분합니다. $20
라인 니퍼/플러시 커터 (예: KATA 2개입) 선을 자르고 다듬는 데 사용 (누락)
원문 보기
원문 보기 (영어)
🐟 BillAI Bass Builder Guide Powered by Strands Agents Bidirectional Streaming + Amazon Nova 2 Sonic billai-bass-demo-strands.mp4 Turn a Big Mouth Billy Bass into a real-time voice assistant: you talk, the fish talks back — head swiveling, mouth lip-syncing to its own voice, tail flapping for emphasis. The fish runs a Strands Agents bidirectional streaming agent ( BidiAgent ) on a Raspberry Pi 5, streaming live audio to and from Amazon Nova 2 Sonic on Amazon Bedrock. No robotics experience needed. No prior soldering experience needed. The person this guide is based on had never plugged in a Raspberry Pi before and got a talking fish in a weekend. Inspired by the excellent billy-b-assistant project, rebuilt on Strands. What's in this repo File What it is README.md This guide — start here, work top to bottom billy.py The final working Python — the talking fish motors.py Standalone motor test rig — run this before billy.py to verify wiring asoundrc.example The ALSA config that pins the USB mic + speaker as defaults requirements-frozen.txt Exact dependency versions from a known-good Pi build — pip install -r for guaranteed-working setup iot-identity/ Optional production-grade credentials: CloudFormation template + walkthrough for X.509-cert auth instead of access keys How to use this with an AI assistant Paste this README into Claude (or another AI assistant) and say: "I'm building this. Walk me through it one step at a time — wait for me to confirm each step before giving the next." That's the way it was built; that's the way it builds best. See the Build this WITH an AI Assistant section below for what to send when stuck. 🤝 Build this WITH an AI Assistant This project was created with help from Claude Code and you can use any AI assistant to help you get through. Paste this entire guide into your AI and say: "I'm building this. Walk me through it one step at a time — wait for me to confirm each step before giving the next." Your AI will pace the build to you, debug your exact error messages, and adapt when your hardware differs slightly from this guide. Things AI is great at during this build: Paste your exact error message — the scary 50-line Python traceback usually has one meaningful line, and AI will find it. Send photos — stuck identifying a motor? Can't tell which pin is which? Photograph it and ask. (In Claude Code on a Mac: drop the image file into the terminal, or say "look at ~/Downloads/IMG_1234.jpg".) Say "I know nothing about X" — AI will back up and explain. There are no dumb questions. Ask before cutting/soldering anything you're unsure about. If you hit something this guide doesn't cover, that's not a failure of you. It's probably a gap in the guide. AI + your error message will get you through. 🛒 Shopping list If you got a kit: you have everything in this table already. Building from scratch: this is the original Amazon order (~$240 total, January 2026 prices). Item What it's for ~Price Big Mouth Billy Bass (current "Gemmy" version) The fish. The modern version has 2 motors, which this guide assumes $30 Raspberry Pi 5, 8GB The brain. 4GB would also work $80 27W USB-C PD power supply (official Pi or RasTech GaN) Don't substitute a phone charger — the Pi limits power to USB ports without a proper supply $15 Official Raspberry Pi 5 Active Cooler Heatsink + fan. The Pi runs hot without it $10 MicroSD card, 64GB (e.g. Transcend USD340, any name brand) The Pi's hard drive $12 USB mini speaker (e.g. HONKYOB) Billy's voice $15 USB gooseneck mini microphone (e.g. CGS-M1) Billy's ears $13 MX1508 dual H-bridge motor driver, 5-pack (e.g. Aideepen, sold as "L298N replacement") Lets the Pi safely drive the motors. You need 1; the spares forgive mistakes $9 DuPont jumper wire kit, 120pc male/female mix (e.g. ELEGOO) Connects driver board to Pi. You'll use ~6 female-to-female $7 Soldering iron kit, 60W adjustable with tips + solder 10 solder joints total. Cheapest kit is fine $20 Flush cutters (e.g. KATA 2-pack) Snipping and stripping wires $9 JST XH connector kit Optional — handy for tidy splices, but the build works without it $9 Also needed, not in the kit: A personal computer (Mac/Windows/Linux) to flash the SD card — ⚠️ corporate laptops often block USB storage; use a home machine A way to plug a microSD into that computer (most cards include an SD adapter) An AWS account (personal, not your employer's) with a payment method — you'll create a locked-down, fish-only IAM user in the prerequisites below Tape (electrical ideally, Scotch works), a small Phillips screwdriver Home WiFi that both your computer and the Pi can join ✅ Prerequisites (do these before build day) 1. AWS / Amazon Bedrock setup (least privilege — do it right) 💸 No AWS account yet? The free tier covers this project. New AWS accounts get $100 in credits (up to $200 with activities), and Amazon Bedrock is usable on the free plan with credits applied to Nova usage. Voice chat is cheap — roughly a penny per few minutes of conversation — so credits buy on the order of 100+ hours of fish banter. Two free-plan caveats: Brand-new accounts sometimes start with Bedrock invocation quotas set to zero (no payment history yet). If model access is granted but every call fails with ValidationException: Operation not allowed , that's the quota — file a (free) AWS support case asking for Nova Sonic on-demand quota, or upgrade to the paid plan (your remaining credits carry over). Free-plan accounts auto-close after 6 months (or when credits run out). Fine for a demo fish; if Billy's becoming a permanent housemate, upgrade to paid before the deadline — unused credits survive the upgrade. Your AWS keys will live in a plaintext file on a Pi inside a fish. Fish get demoed, lent out, and left on desks; SD cards pop out. So the keys must be able to do exactly one thing : talk to Nova Sonic. If they leak, the worst case is someone chats with a fish on your dime — not someone mining crypto in your account. Step 1 — Enable model access: In the AWS console, switch region to us-east-1 (N. Virginia) — Nova Sonic lives there. Go to Amazon Bedrock → Model access and request access to Nova 2 Sonic ( amazon.nova-2-sonic-v1:0 ). Usually instant. (Not v1 — original Nova Sonic hits end-of-life September 2026.) Step 2 — Create a dedicated IAM user: Console → IAM → Users → Create user . Name it something honest like billy-bass . Do NOT check "Provide user access to the AWS Management Console" — this user is a robot fish; it never logs into anything. On the permissions screen, choose "Attach policies directly" but don't select any of the AWS-managed policies (no AmazonBedrockFullAccess — that grants far more than the fish needs). Just click through and create the user with zero permissions. Step 3 — Attach a policy that allows only Nova Sonic: Open the new user → Permissions → Add permissions → Create inline policy → JSON tab. Paste: { "Version" : " 2012-10-17 " , "Statement" : [ { "Sid" : " BillyTalksToNovaSonicOnly " , "Effect" : " Allow " , "Action" : " bedrock:InvokeModelWithBidirectionalStream " , "Resource" : " arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-sonic-v1:0 " } ] } Name it billy-nova-sonic-only , save. That's one action on one model in one region. No S3, no EC2, no other Bedrock models, no ability to see or change anything else in your account. (If you later give Billy tools that touch AWS — say, reading a DynamoDB table — add that specific permission to this policy then, not broad access now.) Step 4 — Create the access key: User → Security credentials → Create access key → choose "Application running outside AWS". Copy the access key ID + secret somewhere safe — the secret is shown exactly once. These go on the Pi later (§1.6). Step 5 — Optional but smart: set a billing alarm. Console → Billing → Budgets → create a $10/month budget with an email alert. Casual Nova Sonic chat costs cents; the alarm is there so a stuck always-listening fish (or leaked key) can't surprise you. If the keys
관련 소식