SmartWalk
製品概要
Safe Tech ―”安全”と”便利さ”の両立―
背景(製品開発のきっかけ,課題等)
スマートフォンの普及に伴い,「歩きスマホ」が問題視されている. 歩きスマホはLINEなどのSNS,Pokemon Goなどのソーシャルゲームの普及に伴い,社会問題としても取り上げられるようになってきている.
歩きスマホをする人は,どんなアプリを使っているのだろうか. 調査によると,半数以上がメールやSNSといった,コミュニケーションに関係するもののようである.[1] 友人などから連絡が来れば,たとえ歩行中であっても気になってしまうのだろう.
歩きスマホは一般に危険であるとされ,歩きスマホをしないように呼びかける駅のアナウンスなどもよく耳にする. しかし,アンケート調査[1]でも「急用がある際,「歩きスマホ」をしながら連絡をとるのは必要」などの声があるように,やるべきことをその場でこなすので余計なストレスを増やさずに済む,時間の節約になる,などの意義を感じている人々も多い. また,最近の東北大学の研究でも,歩きスマホは脳を活性化させる働きがあるとされている.[2]
そこで私達// TODO は,スマートフォン画面を見ずにコミュニケーションを取ることができれば,歩きスマホの危険を減らすことができるのではないかと考えた. 今回開発したSmartWalkは,歩きスマホを一律に禁止するのではなく,安全上の問題を解決した歩きスマホの有効な活用法を提案するシステムである.
[1] https://www.smartsurvey.jp/board/press_view/90
[2] http://www.tohoku.ac.jp/japanese/newimg/pressimg/tohokuuniv-press20160203_01web.pdf
製品説明(具体的な製品の説明)
SmartWalkは,受信したLINEメッセージを音声で読み上げ,音声認識機能を用いて返信することで,スマートフォン画面を見ずにLINEによるコミュニケーションが取れるAndroidアプリである.
Aさんが友人のBさんとSmartWalkを使ってLINEメッセージのやりとりをしたい場合,次のような準備が必要である.
- Aさん,BさんはSmartWalkのAndroidアプリをそれぞれダウンロードする.
- Aさん,BさんはSmartWalkのAndroidアプリのメニューから『LINEにログイン』をクリックしてLINEの認証をする.
- Aさん,BさんはSmartWalkのLINE BOTとそれぞれ友達になる.
- Aさん,BさんはSmartWalkのBOTから送られてくる1つ目のURLにアクセスし,そのURLからSmartWalkアプリを立ち上げる.
- Aさんは,SmartWalkのBOTから送られてくる2つ目のURLをBさんに(LINEなどで)教える.
- BさんはAさんに教えてもらったURLにアクセスする.これでSmartWalkは2人が友達であると認識する.
あとは音声の指示に従って気軽にメッセージをやりとりするだけ!
特長
1. スマートフォンの画面を見なくてもLINEによるテキストメッセージの送受信ができる.
2. アプリが返信メッセージを解析し自動で句読点を入れてくれる.
解決出来ること
LINEの確認・返信による歩きスマホの危険をなくすことができる.
今後の展望
アイディア面
歩きスマホ対策に限らず,次のような用途への転用も可能である.
- 他の作業をしながらの,テキストメッセージの確認
- 視覚障がいをもった方々を含めたより多くの参加者によるテキストチャット
技術的面
- twitterやFacebookといった他のSNSにも対応する.
- 句読点付与のアルゴリズム・分類器を,より自然な位置に句読点がつくように改良する.また,"!"や"?"の挿入にも対応できるようにする.
注力したこと(こだわり等)
音声による操作
”歩きスマホの危険を減らし,便利で安全な歩きスマホの活用法を提案する”という目的のため,極力音声による操作ができるようにした.
ユーザ特定のための仕組み
LINEのAPIについて,同じユーザでもAPIによって取得できるidが異なっていた.そのため,ユーザに特定のURLへアクセスさせることで,ユーザの特定に活かした.
メッセージへの句読点の自動付与
この機能は機械学習と人手で書いたルールの両方を用いて実装した.音声認識の結果の文字列には句読点はついていないが,後でテキストでメッセージを確認したり,受け取った相手が音声でメッセージを確認する際に役に立つ.
活用した外部技術
- さくらのクラウド
API・データ
- 形態素解析API (NTTレゾナント)
- Line::Bot::API (SDK of the LINE Messaging API for Ruby)
フレームワーク・ライブラリ・モジュール
Android関連
- TextToSpeech (テキスト読み上げ)
- SpeechToText(音声認識)
- NotificationService (通知の取得等)
- Line Android SDK(ログイン処理)
サーバ側
- Ruby on Rails
- Unicorn
- Nginx
- SQLite
デバイス
- Android端末
独自技術
期間中に開発した独自機能・技術
句読点のない文字列(音声認識結果)に対する句読点の付与
- 句点→スクレイピングで獲得したテキストデータをベクトル化し,SVMに学習させる.
より具体的には
- スクレイピングで獲得したweb小説の台詞データを,N=5の単語n-gramでベクトル化する.
- a.でできたベクトルを200次元の2値ベクトルとそれに対する2値のラベルに変換する. 200次元のベクトルの中身は,{1,2,4,5}単語目×50種類の品詞に対応する2値. それに対応する2値のラベルは,3単語目が句点であるかどうか.
- b.でできたベクトルを学習データとして,SVMを用いて「1,2,4,5単語目が与えられた時,3単語目が句点であるかどうかで分類する分類器」を作成する.
- c.でできた分類器を使って,入力されたテキストデータどこに句点が入るのかを判定する.
- 判定結果に関係なく終助詞の後には句点を入れる.
- 読点→使う際の明確な基準のない記号だが,多くの人が読点を入れる「接続詞の後」「独立詞の後」に読点を入れる.
- 句点→スクレイピングで獲得したテキストデータをベクトル化し,SVMに学習させる.
より具体的には
Androidアプリのビルド済みバイナリ
以下のURLからビルドされたバイナリをダウンロード出来ます.
Log in or sign up for Devpost to join the conversation.