人工知能があらゆるものに導入され、モノのインターネット(IoT)の領域は急速に変化しています。AI とクラウド サービスが進化したおかげで、標準センサーやアクチュエーターだけでなく、シンプルなマイクロコントローラをさまざまなものに組み込めるようになり、インタラクティブでインテリジェントなデバイスを作れるようになっています。この投稿では、IoT デベロッパーが Gemini REST API を使って、カスタム音声コマンドを理解して応答するデバイスを作る方法を説明します。デジタル世界と現実世界のギャップを埋め、以前は困難だった現実の問題を解決しましょう。
話を簡単にするため、この投稿では概念のみをお伝えします。ESP 32 マイクロコントローラの活用方法については、GitHub の完全なコード例とデバイスの回路図をご覧ください。
これまでは IoT デバイス、特にメモリが限られたデバイスに音声認識を組み込むことは複雑な作業でした。マイクロコントローラ用 LiteRT のようなソリューションは、キーワードを認識する基本モデルを実行できます。しかし、人間の言語はそれよりもはるかに幅広く、微妙な意味合いを含む入力です。Gemini API を使えば、デベロッパーが言語を簡単に利用することができます。Gemini API は強力なクラウドベースのソリューションで、1 つのツールだけでさまざまな音声言語を理解できます。複数の異なる言語に対応することも、組み込みデバイスで実行するアクションをユーザーからの入力に基づいて決めることもできます。
こういった機能を実現するのが Gemini API です。Gemini API は、IoT デバイスから取得したオーディオ データを処理して解釈し、デバイスが取るべき次のステップを決定できます。これは次のプロセスに従って行われます。
1. オーディオ キャプチャ: マイク付きの IoT デバイスが音声をキャプチャします。
2. オーディオ エンコーディング: 音声をインターネット送信用の形式にエンコードします。前述の公式サンプルでは、アナログ信号を WAV 形式のオーディオに変換し、Gemini API 用に base64 エンコード文字列に変換します。
3. API リクエスト: REST API 呼び出しを行い、エンコードしたオーディオを Gemini API に送信します。この呼び出しには Gemini への指示を含めます。たとえば、音声コマンドのテキストを要求したり、あらかじめ定義されているカスタム関数(照明を付けるなど)を Gemini に選択させたりします。Gemini API の関数呼び出し機能を使う場合は、リクエスト JSON で、名前、説明、パラメータなどの関数を定義する必要があります。
4. 処理: Gemini API の AI モデルは、エンコードされたオーディオを分析し、適切な応答を決定します。
5. 応答: API から IoT デバイスにオーディオの文字起こし、呼び出すべき次の関数、追加の手順を含むテキスト応答などの情報が返されます。
たとえば、音声コマンドで LED を制御し、電源をオンまたはオフにしたり、色を変更したりすることを考えてみましょう。ここでは、2 つの機能を定義できます。1 つは LED のオンとオフを切り替える機能、もう 1 つは色を変える機能です。あらかじめ設定された色に限定するのではなく、0 から 255 までの任意の RGB 値を使えるようにすることで、1600 万色以上の組み合わせを実現できます。
次のリクエストは、その方法を示しています。このリクエストには、base64 でエンコードしたオーディオ文字列($DATA
)が含まれています。
{
"contents": [
{
"parts": [
{
"text": "Trigger a function based on this audio input."
},
{
"inline_data": {
"mime_type": "audio/x-wav",
"data": "$DATA"
}
}
]
}
],
"tools": [
{
"function_declarations": [
{
"name": "changeColor",
"description": "Change the default color for the lights in an RGB format. Example: Green would be 0 255 0",
"parameters": {
"type": "object",
"properties": {
"red": {
"type": "integer",
"description": "A value from 0 to 255 for the color RED in an RGB color code"
},
"green": {
"type": "integer",
"description": "A value from 0 to 255 for the color GREEN in an RGB color code"
},
"blue": {
"type": "integer",
"description": "A value from 0 to 255 for the color BLUE in an RGB color code"
}
},
"required": [
"red",
"green",
"blue"
]
}
},
{
"name": "toggleLights",
"description": "Turn on or off the lights",
"parameters": {
"type": "object",
"properties": {
"toggle": {
"type": "boolean",
"description": "Determine if the lights should be turned on or off."
}
},
"required": [
"toggle"
]
}
}
]
}
]
}
とても簡単な例ですが、ここから IoT 開発の多くの実用的なメリットが明らかになります。
デベロッパーは、関数呼び出しやオーディオ入力を Gemini API と組み合わせることで、音声コマンドにインテリジェントに応答する IoT デバイスを作成できます。
オーディオと関数呼び出しは、AI で IoT デバイスを拡張するために不可欠なツールです。しかし、驚くほど便利なインテリジェント デバイスを作成するために、さらにほかのものを使うこともできます。次のような領域を考えてみるとよいでしょう。
Gemini API を使って開発したすばらしい作品を見るのがとても楽しみです。皆さんのアプリケーションは、私たちが周囲の世界と対話する方法を変え、AI の力で現実世界の問題を解決できます。LinkedIn の Google AI for Developers や X の Google AI Developers で、ぜひプロジェクトを共有してください。