0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

うちのお婆ちゃん用に視覚障碍者向けAIガジェットを個人開発した件

Posted at

自己紹介

こんにちはー!はじめましての人ははじめまして!
NTTデータ先端技術で新卒エンジニアやってる者です!
趣味はDIY、特技は特殊調理免許もっていてフグが捌けます!
どうぞよろしくお願いします!

今日はアドベントカレンダー始まって初めての休日(土曜)です!
今週もお疲れ様でした。なので、ちょっと今日はユルめの記事を執筆したいと思います。
先に発表された記事を見てそのクオリティと筆者の技術レベルの高さに打ち震えました...
だからまぁ高度に技術的な記事は素晴らしい先輩方がやってくれると思うし、私は「こんな面白いことしてます!モノづくり大好き!」みたいな軽いノリでお話させていただきます。新人の休日の一コマって感じです。
折角の休日、気軽に「こんな奴いるんだなぁ」と読んで頂けると幸いです!

今回やること

視覚障害のある祖母の生活をすこしでも便利にしたい。その気持ちから、あるアイデアが浮かびました。

「OpenAI API × Raspberry Pi」で、
“目の前にあるもの”を撮影 → “AIが説明” → “音声で伝える”
そんなガジェットを作れないだろうか?

というわけで、AI画像認識と音声読み上げを組み合わせた“おばあちゃん用スマート視覚補助デバイス”を試作してみました!
(実はこれ作ったのだいぶ前の9月なのですが、AIを用いたガジェット開発と言うことで今回のアドベントカレンダーで紹介させていただきます!)

うちの婆ちゃんってこんな人

若い頃に患った病気の影響で視力を徐々に失い、
今は「明るい/暗い」程度しか分からない状態です。

私が生まれた頃は、なんとか顔が見えていたらしいのですが…。

余談ですが、昔、祖母の家にテープライトを貼り巡らせて、
“空港の滑走路”みたいに光で空間が分かるようにしてみたことがあります。
祖母には喜ばれましたが、
他の家族には「おばあちゃんちディスコで草」と酷評されました。
IMG_0044.jpeg

開発コンセプト図

IMG_0436.jpeg

想定する操作方法

  1. 目の前の情報を知りたいときにボタンを押す
  2. スピーカーから目の前の情報が音声で伝えられる

以上!超シンプル!

いざ開発

フェーズ1「ハードウェアをつくろう!~ラズパイとスピーカー・カメラ・ボタンを合体~」

まずは、ガジェットの肝となるハードウェアから作成する。今回は試作機と言うことで「動いているからヨシ!」の精神で簡単なものを作っていきます。

スピーカー接続

スピーカーの接続は超単純にダイソーで売っていた1000円のBluetoothヘッドフォンを接続します。

カメラ接続

こちらもカメラを簡単に取り付けるだけ...と思いきや、なんとラズパイ4までのリボンケーブルとラズパイ5のリボンケーブルでは仕様変更により互換性がなかった。急いでAmazonでラズパイ5用ケーブルを購入し接続。
簡単に撮影するコードを試しに書いてみた所、問題なく撮れました!

ボタン接続

そして、ガジェットに搭載するボタン。ボタンはGPIO接続でラズパイに対しシリアルで繋げます。
GPIOはよく初心者がLEDを繋げたりするやつです。頑張れば画面出力や指紋認証デバイスも接続できる優れもの。
今回はここに想定外に時間を要しましたが、何とか接続できました。その時の体験記は以前Qiitaに投稿したので良ければそちらも見てください!

Raspberry Pi 5にリボン接続カメラとGPIO物理ボタンをくっつけて写真とるまで。

フェーズ2「ソフトウェアをつくろう!~OpenAI APIによる画像解析と人工音声の生成~」

Open AI APIに接続(主にプロンプトエンジニアリング)

OpenAI APIで画像をプロンプトと共にリクエストを送信、テキストベースで撮影した写真を説明してもらう。
しかし

プロンプト:画像を説明してください
だと、画像に映りこんだ様々なものに対する説明を始めてしまいました。
これでは、例えば手に持ったものだけ説明してほしい時、ユーザーに余計な情報を与え、混乱させてしまう可能性があります。
そこで解答の簡潔さを優先し

プロンプト:この画像を簡潔に説明してください
のようにすると、確かに画像中央に映ったものにフォーカスして説明するようになりました。
しかし、ユーザーの視点に立って考えた際、時には外出時の風景など、特定の物体だけではなく全体像を説明してほしいこともあるかもしれません。
そこでプロンプトを以下のように書き換えます。

プロンプト:あなたは優秀な介護士で視覚障碍者の日常生活をサポートしています。この画像は今の視覚障碍者の目前の光景です。視覚障碍者が必要としていると思われる情報を取り込み、説明してください。
これにはプロンプトエンジニアリングの大原則

  • 役割を与える
  • 背景情報を与える
  • 命令を明確にする

が含まれています。この結果、

  • 画面中央に書類や具体的な物がある場合は簡潔・具体的にそれを説明する
  • 視野の広い画像などの場合は、画像に映っている風景などを抽象度高めに説明する
    などより適切な回答を引き出すことに成功しました!

人工音声でAIのレスポンスを音読

次にAIの返答を音声にしてスピーカーから流す必要があります。
ラズパイガジェット開発ということで、今回はラズパイで処理できるほど高速で軽量な人工音声生成機能を載せなくてはいけません。
本当は音質が良いVoicePeakを使用したいのですが、GPU系の音声最適化処理が入っていて超重い&ラズパイのARM Linuxアーキテクチャに対応していないので今回は断念。
そして軽量・音質を目指すとなると、Piperが挙げられるかもしれませんが、残念ながらPiperは日本語対応が限定的であまり使い物にならないというのが実情...
そこで今回はOpen JTalkを使用します。こちらは音質に若干の難点があるものの、日本語にしっかり対応している上、メモリ使用量は50MB程度と非常に軽量でラズパイでもサクサク動作するので、このプロジェクトにはぴったりです!

フェーズ3「ハードです。ソフトです。合体!」

開発したコードをMicroSDカードに書き込み、ラズパイに差し込むだけ!
OS立ち上げ時にソフトが自動起動するように設定して完成!
ここからは作ったデバイスをお婆ちゃんに被せてフィードバックをもらいつつ、改良していく段階です。

結果と今後の展望

色々失敗を経て一先ず、「OpenAI APIとRasberryPiを使用して目の前のモノをカメラで撮り、何なのか音声で伝えるシステム」が完成しました!MiMiと名付けてかわいがってもらっています。
どうしても周りに人がいないときはこれを使ってみてくれているようです。
が、当の祖母は結構不満タラタラです。API使用量を見るにあまり使ってくれていないことが見て取れます。

現状の課題

  • 重い
    トータル重量900gを頭に乗せ続けるのは結構しんどい
  • 遅い
    OpenAIのVision APIの解析速度がワンテンポ挟んでしまい、リアルタイム処理まであと一歩工夫が必要
  • 音質悪い
    耳の遠い老人に、機械的な人工音声は聞き取りづらい

最重要:そしてなにより見た目がダサい。
祖母曰く、こんなもの頭につけて老人ホーム徘徊していたら絵面がヤバすぎる。とのこと...

しょうがない、3Dプリンター使ってもうちょいマトモな見た目に仕上げてみよう!
というのが次やろうとしていることです。

実はこの開発の後、お仕事が忙しくなっちゃってあまりMiMiの改良機制作に取り掛かれていないので、お正月暇が出来たら改良に進もうかなぁと思ってます。

もういくつ寝るとお正月~♪
時が経つのは早いものでもうすぐ2025年も終わりです。
寒くなってきましたので、皆様もどうかご自愛ください!これからもアドベントカレンダーを楽しみにしています。
ここまで読んでくださり本当にありがとうございました!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?