1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

運用コストゼロでGemini搭載スマートスピーカーを作ろうとして、Alexaの音声認識に絶望した話

1
Posted at

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エージェントによるコーディング・デバッグ

流れはこうです。

  1. スマホのTermiusからTailscale経由で自宅MacにSSH接続
  2. Mac上でClaude Code(Anthropic公式のCLIエージェント)を起動
  3. 「Alexa Hosted SkillでGemini連携するコードを書いて」と指示
  4. Claude Codeがコードを生成・修正・リファクタリング
  5. 出力されたコードを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スキル開発で最も重要なのは、実はコードでもアーキテクチャでもなく、音声認識に引っかかる呼び出し名を選ぶこと でした。「ジェミニ」のような外来語は特に厳しいです。

学んだこと

  1. Alexa Hosted Skill + Gemini API Free Tierの組み合わせ自体は有効です。運用コストゼロでLLM連携が実現できます
  2. Alexaの音声認識は2026年になっても改善されていません。特にカスタムスキルの呼び出し名

改善の余地

  • 呼び出し名を音声認識されやすい日本語に変更する(例: 「チャット」「かしこい」など)
  • そもそもAlexaをやめてGoogle Home + Geminiにする

技術的には面白いプロジェクトでした。ただ、Alexaの音声認識という、開発者にはどうしようもない壁にぶつかって終わりました。

スマートスピーカーの価値は音声インターフェースにあります。その音声認識がまともに動かないなら、それはもう置物です。

参考


© 2026 この記事はClaude (Anthropic)によって生成されました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?