TL;DR
Alexa Hosted Skill(無料) + Google Gemini API Free Tier で「運用コストゼロのGemini搭載スマートスピーカー」を作りました。シミュレーターでは完璧に動きます。実機のEchoでも動きます。ただし文字入力に限ります。 音声認識が「ジェミニ」を聞き取れず、実用になりませんでした。
モチベーション
AI Chatbotが登場してから、スマートスピーカーにLLMを載せたいとずっと思っていました。ただ面倒でやらなかった。AIエージェント(Claude Code)が出てきたので、コーディングは任せて楽できそうだと思い、やってみることにしました。
調べてみると、Alexa Hosted SkillとGemini API Free Tierを組み合わせれば、サーバー代もAPI代もゼロで実現できそうなことが分かりました。
構成はシンプルです。
ユーザー → Echo(音声入力)
→ Alexa Cloud(音声→テキスト変換、Intent解析)
→ Alexa Hosted Skill(Lambda / Node.js)
→ Google Gemini API(Free Tier)
← Geminiの回答を整形
← Alexaが読み上げ
ユーザー ← Echo(音声出力)
自前サーバー不要。AWSアカウント不要。すべてAlexa Developer Console上で完結します。
開発環境: スマホ1台で全部やりました
今回の開発はすべてスマホから行いました。
| ツール | 役割 |
|---|---|
| Termius | スマホ用SSHクライアント |
| Tailscale | 自宅のMacにどこからでもSSH接続するためのVPN(鍵認証) |
| Claude Code | AIエージェントによるコーディング・デバッグ |
流れはこうです。
- スマホのTermiusからTailscale経由で自宅MacにSSH接続
- Mac上でClaude Code(Anthropic公式のCLIエージェント)を起動
- 「Alexa Hosted SkillでGemini連携するコードを書いて」と指示
- Claude Codeがコードを生成・修正・リファクタリング
- 出力されたコードをAlexa Developer Consoleにコピペしてデプロイ
PCを開かずに、電車の中でもベッドの上でもスキル開発ができました。Claude Codeが地雷を踏んでは修正し、踏んでは修正してくれるので、スマホのソフトキーボードでコードを打つ苦行からも解放されます。
開発体験としてはかなり快適でした。問題はAlexaの方にありました。
実装のポイント
| 制約 | 対応 |
|---|---|
AMAZON.SearchQuery にキャリアフレーズ必須 |
Dialog.ElicitSlot ディレクティブで回避 |
| Alexaの8秒タイムアウト |
gemini-2.5-flash-lite(非思考モデル)を採用、回答を300文字以内に制限 |
| Gemini API失敗時 | セッションを終了し、通常のAlexaに戻すフォールバック |
ソースコードの詳細は割愛します。作りたい方はこの構成を参考に、AIエージェントにお願いしてみてください。
テスト結果
シミュレーター: 完璧 ⭕
Alexa Developer Consoleのテストタブで動作確認を行いました。すべてのパターンが正常動作しました。
ユーザー: ジェミニを開いて
Alexa: Geminiです。何でも聞いてください。
ユーザー: ポケカの最新弾はいつ出るの ← キャリアフレーズ不要
Alexa: (Geminiの回答)
ユーザー: それは何パックから当たりが出る? ← 続けて自由に質問
Alexa: (Geminiの回答)
ユーザー: 終了
Alexa: ご利用ありがとうございました。
実機(Echo)テキスト入力: 動く ⭕
Alexaアプリからテキスト入力で「ジェミニを開いて」と送信しました。正常に起動し、Geminiの回答が返ってきます。
実機(Echo)音声入力: 動かない ❌
Echoに向かって「アレクサ、ジェミニを開いて」と話しかけます。
「お役に立てません」
何度言っても「お役に立てません」。声を変えても「お役に立てません」。ゆっくり言っても「お役に立てません」。
Alexaが「ジェミニ」を聞き取れていません。
Alexaアプリの音声履歴を確認すると、「ジェミニ」が正しく認識されていないことが分かりました。呼び出し名(Invocation Name)は間違いなく「ジェミニ」に設定されているのに、音声認識がそもそも「ジェミニ」という音を正しくテキスト化できていないのです。
結論: Alexaの音声認識がクソすぎて使い物にならない
技術的には完成しました。アーキテクチャは正しい。コードも動く。シミュレーターでもテキスト入力でも完璧に動きます。
問題はAlexaの音声認識精度です。
そもそも「アレクサ」のあとに続くスキル呼び出し名の認識精度が壊滅的に低い。カスタムスキルの呼び出し名がまともに認識されない以上、どんなに優れたバックエンドを作っても意味がありません。
Alexaスキル開発で最も重要なのは、実はコードでもアーキテクチャでもなく、音声認識に引っかかる呼び出し名を選ぶこと でした。「ジェミニ」のような外来語は特に厳しいです。
学んだこと
- Alexa Hosted Skill + Gemini API Free Tierの組み合わせ自体は有効です。運用コストゼロでLLM連携が実現できます
- Alexaの音声認識は2026年になっても改善されていません。特にカスタムスキルの呼び出し名
改善の余地
- 呼び出し名を音声認識されやすい日本語に変更する(例: 「チャット」「かしこい」など)
- そもそもAlexaをやめてGoogle Home + Geminiにする
技術的には面白いプロジェクトでした。ただ、Alexaの音声認識という、開発者にはどうしようもない壁にぶつかって終わりました。
スマートスピーカーの価値は音声インターフェースにあります。その音声認識がまともに動かないなら、それはもう置物です。
参考
© 2026 この記事はClaude (Anthropic)によって生成されました。