AI・機械学習
Show HN: Strands Agents を使用した AI パワードの Big Mouth Billy Bass、BillAI Bass
Show HN: BillAI Bass, an AI-Powered Big Mouth Billy Bass Using Strands Agents (github.com)
要約
本プロジェクトは、Big Mouth Billy Bass をリアルタイム音声アシスタントに変身させる方法を解説しています。Raspberry Pi 5 と Amazon Bedrock 上の Amazon Nova 2 Sonic を Strands Agents の双方向ストリーミングエージェントと連携させ、話すと魚がそれに反応して頭を動かし、口を動かし、尻尾を振って強調する仕組みを実現します。ロボット工学やハンダ付けの経験がなくても、週末で完成させることが可能です。
全文翻訳
🐟 BillAI Bass ビルダーガイド Strands Agents による双方向ストリーミング + Amazon Nova 2 Sonic
billai-bass-demo-strands.mp4
Big Mouth Billy Bass をリアルタイム音声アシスタントに変身させましょう。あなたが話すと、魚がそれに反応して頭を動かし、自身の声に合わせて口を動かし、強調のために尻尾を振ります。この魚は Raspberry Pi 5 上で Strands Agents の双方向ストリーミングエージェント(BidiAgent)を実行し、Amazon Bedrock 上の Amazon Nova 2 Sonic とライブオーディオをストリーミングします。ロボット工学の経験は不要です。ハンダ付けの経験も不要です。このガイドの基になった人物は、Raspberry Pi を一度も接続したことがありませんでしたが、週末で話す魚を完成させました。優れた billy-b-assistant プロジェクトに触発され、Strands 上で再構築しました。
このリポジトリに含まれるもの
ファイル | 内容
------- | --------
README.md | このガイド — ここから始めて、上から下へ進んでください
billy.py | 最終的な動作する Python コード — 話す魚のモーターを制御します
motors.py | 独立したモーターテストリグ — billy.py の前にこれを実行して配線を確認してください
asoundrc.example | USBマイクとスピーカーをデフォルトとして固定する ALSA 設定
requirements-frozen.txt | 既知の良好な Pi ビルドからの正確な依存関係バージョン — pip install -r で確実に動作するセットアップを保証します
iot-identity/ | オプションのプロダクショングレード認証情報: CloudFormation テンプレート + ウォークスルー (アクセスキーの代わりに X.509 証明書認証用)
AI アシスタントでこれをどう使うか
この README を Claude(または他の AI アシスタント)に貼り付けて、「これを構築しています。1ステップずつ説明してください — 次のステップに進む前に、各ステップの確認を待ってください」と言ってください。
それが構築された方法であり、それが最も良く構築される方法です。
詰まった場合に送信する内容については、以下の「AI アシスタントと一緒に構築する」セクションを参照してください。
🤝 AI アシスタントと一緒に構築する
このプロジェクトは Claude Code の助けを借りて作成されました。AI アシスタントを使用して、ビルドを完了させることができます。
このガイド全体を AI に貼り付けて、「これを構築しています。1ステップずつ説明してください — 次のステップに進む前に、各ステップの確認を待ってください」と言ってください。
AI はビルドをあなたに合わせてペース配分し、あなたの正確なエラーメッセージをデバッグし、ハードウェアがこのガイドとわずかに異なる場合に適応します。
ビルド中に AI が得意なこと:
* 正確なエラーメッセージを貼り付ける — 恐ろしい 50 行の Python トレースバックには、通常 1 つの意味のある行があり、AI がそれを見つけます。
* 写真を送信する — モーターを特定するのに困っていますか? どのピンがどれかわかりませんか? 写真を撮って質問してください。(Mac の Claude Code では、画像ファイルをターミナルにドラッグするか、「~/Downloads/IMG_1234.jpg を見て」と言います。)
* 「X について何も知りません」と言う — AI はバックアップして説明します。愚かな質問はありません。
* 切断/ハンダ付けする前に、不明な点があれば質問してください。
* このガイドでカバーされていないことに遭遇した場合、それはあなたの失敗ではありません。おそらくガイドのギャップです。AI + あなたのエラーメッセージがあなたを乗り越えさせます。
🛒 ショッピングリスト
キットを入手した場合: この表のすべてをすでに持っています。
スクラッチから構築する場合: これは元の Amazon 注文(約 240 ドル、2026 年 1 月の価格)です。
アイテム | 用途 | 約価格
------- | -------- | --------
Big Mouth Billy Bass (現行 "Gemmy" バージョン) | 魚本体。最新バージョンには 2 つのモーターがあり、このガイドはその前提で進みます | $30
Raspberry Pi 5, 8GB | 頭脳。4GB でも動作します | $80
27W USB-C PD 電源アダプター (公式 Pi または RasTech GaN) | 電話充電器を代用しないでください — Pi は適切な電源なしでは USB ポートへの電力を制限します | $15
公式 Raspberry Pi 5 アクティブクーラー ヒートシンク + ファン | これがないと Pi は熱くなります | $10
MicroSD カード, 64GB (例: Transcend USD340, どの有名ブランドでも可) | Pi のハードドライブ | $12
USB ミニスピーカー (例: HONKYOB) | Billy の声 | $15
USB グースネック ミニマイク (例: CGS-M1) | Billy の耳 | $13
MX1508 デュアル H ブリッジモータードライバー, 5 個パック (例: Aideepen, "L298N 交換用" として販売) | Pi がモーターを安全に駆動できるようにします。1 つ必要です。予備は間違いを許容します | $9
DuPont ジャンパーワイヤーキット, 120 本入り オス/メス混合 (例: ELEGOO) | ドライバーボードを Pi に接続します。約 6 本のメス-メスを使用します | $7
ハンダごてキット, 60W 調節可能 チップ + ハンダ付き | 合計 10 箇所のハンダ付け。最も安いキットで十分です | $20
フラッシュカッター (例: KATA 2 個パック) | ワイヤーの切断と被覆剥き | $9
JST XH コネクタキット | オプション — きれいな接続に便利ですが、ビルドはこれなしでも動作します | $9
キットに含まれないものも必要です:
* SD カードをフラッシュするためのパーソナルコンピューター (Mac/Windows/Linux) — ⚠️ 企業用ラップトップは USB ストレージをブロックすることがよくあります。自宅のマシンを使用してください
* そのコンピューターに microSD を接続する方法 (ほとんどのカードに SD アダプターが含まれています)
* 支払い方法が設定された AWS アカウント (個人用、雇用主のものではない) — 後で前提条件で、魚専用のロックダウンされた IAM ユーザーを作成します
* テープ (できれば電気テープ、セロハンテープでも可)、小さなプラスドライバー
* コンピューターと Pi の両方が参加できるホーム WiFi
✅ 前提条件 (ビルド日前にこれらを完了してください)
1. AWS / Amazon Bedrock セットアップ (最小権限 — 正しく行う)
💸 まだ AWS アカウントをお持ちでない場合: 無料利用枠でこのプロジェクトはカバーされます。新規 AWS アカウントには 100 ドルのクレジットが付与され (アクティビティで最大 200 ドル)、Amazon Bedrock は無料プランでクレジットを Nova の使用量に適用して利用できます。音声チャットは安価です — 数分間の会話あたり約 1 セントなので、クレジットは魚の雑談に 100 時間以上購入できます。
無料プランの 2 つの注意点: ブランド新規アカウントでは、Bedrock 呼び出しクォータがゼロに設定されている場合があります (まだ支払い履歴がないため)。モデルアクセスは許可されているが、すべての呼び出しが ValidationException: Operation not allowed で失敗する場合、それはクォータです — (無料の) AWS サポートケースに Nova Sonic オンデマンドクォータを要求するようファイルするか、有料プランにアップグレードしてください (残りのクレジットは引き継がれます)。
無料プランのアカウントは 6 ヶ月後 (またはクレジットが尽きたとき) に自動的に閉じられます。デモ用の魚には十分ですが、Billy が永続的な同居人になる場合は、期限前に有料プランにアップグレードしてください — 未使用のクレジットはアップグレード後も有効です。
AWS キーは Pi 上のプレーンテキストファイルに保存されます。魚はデモされたり、貸し出されたり、デスクに置かれたりします。SD カードは取り外されます。そのため、キーは 1 つのことだけを実行できる必要があります: Nova Sonic と通信すること。漏洩した場合、最悪のケースは、あなたの費用で魚とチャットすることです — あなたのアカウントで暗号通貨をマイニングする人がいるわけではありません。
ステップ 1 — モデルアクセスを有効にする: AWS コンソールで、リージョンを us-east-1 (バージニア北部) に切り替えます — Nova Sonic はそこにあります。Amazon Bedrock → モデルアクセスに移動し、Nova 2 Sonic (amazon.nova-2-sonic-v1:0) へのアクセスをリクエストします。通常は即時です。(v1 ではありません — 元の Nova Sonic は 2026 年 9 月にサポート終了します)。
ステップ 2 — 専用 IAM ユーザーを作成する: コンソール → IAM → ユーザー → ユーザーを作成します。billy-bass のような正直な名前を付けます。 "AWS マネジメントコンソールへのユーザーアクセスを提供する" にはチェックを入れないでください — このユーザーはロボット魚であり、決してログインしません。権限画面で、「ポリシーを直接アタッチする」を選択しますが、AWS 管理ポリシーは選択しないでください (AmazonBedrockFullAccess は魚が必要とする以上のものを付与します)。単にクリックして、権限ゼロでユーザーを作成します。
ステップ 3 — Nova Sonic のみ許可するポリシーをアタッチする: 新しいユーザー → 権限 → 権限を追加 → インラインポリシーを作成 → JSON タブを開きます。以下を貼り付けます:
```json
{
"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"
}
]
}
```
billy-nova-sonic-only という名前を付けて保存します。これは 1 つのリージョンで 1 つのモデルに対する 1 つのアクションです。S3、EC2、他の Bedrock モデル、アカウント内の他のものを表示または変更する能力はありません。(後で Billy に AWS に触れるツールを与える場合 — 例えば、DynamoDB テーブルを読み取る場合 — その特定の権限をこのポリシーに追加してください。今すぐ広範なアクセス権を付与しないでください)。
ステップ 4 — アクセスキーを作成する: ユーザー → セキュリティ認証情報 → アクセスキーを作成 → "AWS 外で実行されるアプリケーション" を選択します。アクセスキー ID + シークレットを安全な場所にコピーします — シークレットは一度だけ表示されます。これらは後で Pi に配置します (§1.6)。
ステップ 5 — オプションですが賢明: 請求アラームを設定します。コンソール → 請求 → 予算 → 月額 10 ドルの予算を作成し、メールアラートを設定します。通常の Nova Sonic チャットは数セントしかかかりません。アラームは、常に聞き取っている魚 (または漏洩したキー) があなたを驚かせないようにするためのものです。キーが漏洩した場合、またはキットの魚が...