Fox village by aki310

For the future of someone, somewhere

JPHACKS2018仙台予選に出てきました

今年もJPHACKS2018仙台予選に出てきました.こちらが作った作品のページ&動画です.LineのスマートスピーカーのClovaを使い,快眠を促すスキル(Clovaのアプリをスキルというらしい)を作成しました.

github.com

このアイディアに至った背景としては

・前々日にメンタリストDaigoさんのニコ生で睡眠の科学についての放送をみて,2分で96%の人が寝落ちする方法をしった

・睡眠を自分で記録するアプリは結構あるけど,快眠を促すってのはなさそう

・三大欲求は需要が大きい

・個人的にガジェットオタクとしてスマートスピーカーの開発をしてみたかった(みんな我儘聞いてくれてありがとう

・ラインアワードにも応募したかった

こんな感じです.

 

ch.nicovideo.jp

www.naruho-blog.net

 

前日に調べていたところ,かなり参考になる良いサイトが見つかり,当日触ってみて意外と性能よく,簡単に動かせたので,このアイディアで進めました.

qiita.com

 

qiita.com

快眠を促す条件として光の強さ,温度,血糖値,脈波,無思考などがあるとわかったので,Clovaでやることの指示と音声を流しつつ,IFTTTでマイコンと連携して色々アクションを付けれたら結構いいところまで行けるかな~(ヘラヘラとしてたんですが,マイコン→Clovaの動作例はあったけどClova→マイコンへの例が見つからなく,明日応用情報技術者試験でほぼ開発できないので断念しました.(+ArduinoとかRaspiと連携してる例が少なくて怖い><

これが出来てたらインパクトあっただろうなあ.

 

とはいえ,僕もメンバーもかなり忙しい中の参戦でどうなるかと思ってましたが,新しい技術が触れて楽しかったです.Lineさんが所属団体にClovaを寄贈して下さったので,これで好きに開発もできる!

あと以前某家電メーカーで音声デバイスハッカソンをやったのですが,そのデバイスより音声認識の性能の高さと開発のしやすさに驚きました.今後の進化も楽しみです.

 

 

厳しくなったTwitterAPIの申請をしてみた.

厳しくなったTwitterAPIの申請がようやく通ったので経過を纏めてみる.

 

2018/08/06

第一回申請.300字の英文をCourseraの学費援助申請の文章を少し変えて提出

現在審査中だから待っててねというメールが来た.

 

2018/08/28

やっと返信が返ってきた.要約すると「もっと使用例について情報くれ」

ハッカソンで感情の可視化をしたい的なこと書いて9月3日に再提出

 

 

2018/09/03

その日の内に返信返ってきた.前回は夏休みだったから遅かったのかもしれない.

使用例や具体的な実装方法についてや,政府や企業のプロジェクトに関係あるのか聞かれた.すぐに返信.

 

 

2018/09/03

30分で返ってきた.使用例もっと詳しくかけ,詳しく書かないと却下するという文がきて一旦やる気なくなる.

16日に奮起して再度提出.ここに書いた単語数をカウントしたら344字だった.かなり詳しく書かないと駄目なのかなあ.

 

2018/09/17

ようやくアクセプト.長い戦いだった...

おそらくポイントは以下の3点だと感じた.

・政府や企業などの金の絡むプロジェクトか,単なる学生の趣味開発か

・作る予定のプロダクトの具体的な内容と,その実装方法

ツイッターのコンテンツをどのように利用するか

 

アカデミック論文のレビュワーかよ,みたいな返信くるので中々メンタル的にきついかったです.

音声感情認識APIのEmpathを使った話

現在,生体情報(顔画像,音声,SNSテキスト,脈波)を利用した感情の推定手法を色々と調べていて,その中で「音声による感情認識ができるAPI」を探したところ,「Empath」というWebAPIが良さげだったので使ってみました.

 

jp.techcrunch.com

wired.jp

Empathの使い方としては,公式ページに行って申し込みの申請と会員登録をすることで,下画像のようなAPIのKeyとURLが取得できるサイトが観覧できるようになります.

webempath.net

f:id:akisatooo:20180826193742p:plain

ドキュメントにあるwavファイルをpostして解析結果を返すサンプルコードがあったので,その通りにやってみようとしたのですが,解析する音声データの指定が厳密に指定してあり(詳しくは仕様書を参照.サンプリング周波数11025Hzが特に厄介),良くある録音ソフトで用意するのが困難だったのでコードから書きました.

使用言語はサンプルで使われてたpython2.7です.(python3.6に書き換えたい)

「recording start...」と表示された後の5秒間の音声データを「output.wav」に保存し,これをWebAPIに送信します.YOUR API KEYの部分は自分のものに書き換えて下さい.

from poster.encode import multipart_encode, MultipartParam
from poster.streaminghttp import register_openers
import urllib2
import pyaudio
import wave

rec_time = 5
file_path = "output.wav"
fmt = pyaudio.paInt16
ch = 1
sampling_rate = 11025
chunk = 2 ** 11
audio = pyaudio.PyAudio()
index = 1

stream = audio.open(format=fmt, channels=ch, rate=sampling_rate, input=True,
                    input_device_index=index,
                    frames_per_buffer=chunk)
print("recording start...")

frames = []
for i in range(0, int(sampling_rate / chunk * rec_time)):
    data = stream.read(chunk)
    frames.append(data)

print("recording  end...")

stream.stop_stream()
stream.close()
audio.terminate()
wav = wave.open(file_path, 'wb')
wav.setnchannels(ch)
wav.setsampwidth(audio.get_sample_size(fmt))
wav.setframerate(sampling_rate)
wav.writeframes(b''.join(frames))
wav.close()




url="https://api.webempath.net/v2/analyzeWav"
register_openers()
items = []
items.append(MultipartParam('apikey', "YOUR API KEY"))
items.append(MultipartParam.from_file('wav', "output.wav"))
datagen, headers = multipart_encode(items)
request = urllib2.Request(url, datagen, headers)
response = urllib2.urlopen(request)
if response.getcode() == 200:
    print(response.read())
else:
    print("HTTP status %d" % (response.getcode()))

試しに,「安西先生,バスケがしたいです」という音声を分析に投げたところ(後で音声も載せます),

{"error":0,"calm":18,"anger":0,

"joy":0,"sorrow":31,"energy":0}

という結果が返ってきました.感情を込めるのが下手なのでcalm(冷静さ)も結構大きいですが,sorrow(悲しみ)が検出できて満足です.

 

 

 

 

AzureのFaceAPIでResourceNotFoundと出たやつ

AzureのFaceAPIという,画像から顔を検出したり,顔画像から年齢や感情を推定する非常に便利なものがあります.

最初の7日間は無料で使えるんですけど,その後は有料となり,Azureからプロジェクトを作成してAPIのKeyとURLを取得する必要があります.

公式の通りにプロジェクト作ると下画像のようなQuick startの画面が出て,ここの項目1,2からAPIのKeyとURLが得られます.(多分地域の選択はどこでも良さそうです.)

f:id:akisatooo:20180817225553p:plain

この二つを使ってチュートリアルのKeyとURLを書き換えて実行しました.

Face API C# quickstart - Microsoft Cognitive Services | Microsoft Docs

結果として下記のようなエラーが返ってきました.

Response:

 

{

   "error": {

      "code": "ResourceNotFound",

      "message": "The requested resource was not found."

   }

}

 

で,原因をググったところ↓のサイトで解決しました.

Using Face API with PHP gives ResourceNotFound : AZURE

 

Azureに掲載されているサイトが下なのですが/detectをつける必要がありました.

× https://westcentralus.api.cognitive.microsoft.com/face/v1.0

○ https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect

 

よく見るとチュートリアルに乗ってるコードにもdetect付きで書いてありました.なんでAzureのとこだけdetect抜きなんだろ...

kindle Unlimitedで読んで良かった本まとめ

コーチングのプロが教える 「ほめる」技術

https://www.amazon.co.jp/%E3%82%B3%E3%83%BC%E3%83%81%E3%83%B3%E3%82%B0%E3%81%AE%E3%83%97%E3%83%AD%E3%81%8C%E6%95%99%E3%81%88%E3%82%8B-%E3%80%8C%E3%81%BB%E3%82%81%E3%82%8B%E3%80%8D%E6%8A%80%E8%A1%93-%E9%88%B4%E6%9C%A8%E7%BE%A9%E5%B9%B8-ebook/dp/B00JGR3T5G/ref=redir_mobile_desktop?_encoding=UTF8&%2AVersion%2A=1&%2Aentries%2A=0

 

筋トレビジネスエリートがやっている最強の食べ方

https://www.amazon.co.jp/%E7%AD%8B%E3%83%88%E3%83%AC%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E3%82%A8%E3%83%AA%E3%83%BC%E3%83%88%E3%81%8C%E3%82%84%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E6%9C%80%E5%BC%B7%E3%81%AE%E9%A3%9F%E3%81%B9%E6%96%B9-Testosterone-ebook/dp/B073CD4KYY/ref=redir_mobile_desktop?_encoding=UTF8&%2AVersion%2A=1&%2Aentries%2A=0

 

左ききのエレン(1~10)

https://www.amazon.co.jp/%E5%B7%A6%E3%81%8D%E3%81%8D%E3%81%AE%E3%82%A8%E3%83%AC%E3%83%B3%EF%BC%88%EF%BC%91%EF%BC%89-%E6%A8%AA%E6%B5%9C%E3%81%AE%E3%83%90%E3%82%B9%E3%82%AD%E3%82%A2-%E3%81%8B%E3%81%A3%E3%81%B4%E3%83%BC-ebook/dp/B01JZ70G84/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1532235773&sr=1-1&keywords=%E5%B7%A6%E3%81%8D%E3%81%8D%E3%81%AE%E3%82%A8%E3%83%AC%E3%83%B3

 

人生の勝算

https://www.amazon.co.jp/%E4%BA%BA%E7%94%9F%E3%81%AE%E5%8B%9D%E7%AE%97-NewsPicks-Book-%E5%89%8D%E7%94%B0%E8%A3%95%E4%BA%8C-ebook/dp/B071GX8V8F/ref=pd_sim_351_6?_encoding=UTF8&pd_rd_i=B071GX8V8F&pd_rd_r=9f894d3b-8d6c-11e8-8a71-0185372cf18d&pd_rd_w=xboPw&pd_rd_wg=Cx8CH&pf_rd_i=desktop-dp-sims&pf_rd_m=AN1VRQENFRJN5&pf_rd_p=7990452376513976631&pf_rd_r=3MB009FP93NQR0P70N6W&pf_rd_s=desktop-dp-sims&pf_rd_t=40701&psc=1&refRID=3MB009FP93NQR0P70N6W

 

 笑いのカイブツ

https://www.amazon.co.jp/dp/B06XRQ89G8/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

 

認知科学への招待

https://www.amazon.co.jp/%E8%AA%8D%E7%9F%A5%E7%A7%91%E5%AD%A6%E3%81%B8%E3%81%AE%E6%8B%9B%E5%BE%85-%E8%8B%AB%E7%B1%B3%E5%9C%B0%E8%8B%B1%E4%BA%BA-ebook/dp/B00NVLCKX0/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1532787444&sr=1-1&keywords=%E8%AA%8D%E7%9F%A5%E7%A7%91%E5%AD%A6

 

メンタリズム人の心を自由に操る技術 (扶桑社BOOKS)

https://www.amazon.co.jp/%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AA%E3%82%BA%E3%83%A0%E4%BA%BA%E3%81%AE%E5%BF%83%E3%82%92%E8%87%AA%E7%94%B1%E3%81%AB%E6%93%8D%E3%82%8B%E6%8A%80%E8%A1%93-%E6%89%B6%E6%A1%91%E7%A4%BE%EF%BC%A2%EF%BC%AF%EF%BC%AF%EF%BC%AB%EF%BC%B3-%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AA%E3%82%B9%E3%83%88DaiGo-ebook/dp/B00HS9ZI3U/ref=sr_1_9?s=digital-text&ie=UTF8&qid=1532787361&sr=1-9&keywords=%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AA%E3%82%B9%E3%83%88

 

SPAJAM仙台予選体験記

※ただのメモなので読み物としては適してないと思います.

 

4月28,29日にSPAJAM仙台予選に参加しました.SPAJAMは温泉をテーマにしたハッカソンで全国6ッ所で行われる地方予選後,最優秀賞を取ったチーム+優秀賞3チームが本選でとても豪華な温泉旅館を楽しみながら開発ができ,さらに本選で優勝するとシリコンバレーに行けるというワクワクなイベントです.

私は全脳アーキテクチャ若手の会東北支部の一員として,仙台予選に参加しました.このグループは機械学習と脳に興味を持つ人が集まる団体で,東京に本部があり今年の4月に東北支部が立ち上がりました.個人としても会としても実績つくれたらな,久しぶりにハッカソン参加したいな,うまくいけば温泉!!という気持ちで参加しました.

せっかくの全脳のチームなので機械学習をいれたいとは思っていたのですが,このSPAJAMはスマホIOSアプリの開発がテーマであり,アプリ開発に詳しい人がいないという問題がありました.この辺どうしよっかな~と悩んでいたところ,以前見た(多分ツイッターか仙台IT文化祭で)ちょまどさんの牛丼判定アプリを思い出し,スライドを見たところCustom Vision Service というMicrosoft Azureを知りました.しかもこれはgithubXcodeやxamarinと連携したサンプルがあり,これの学習部分を変えればほぼコード触ることなくそれっぽいアプリが作れる!!ということでメンバーに紹介したところ,10分くらいでデモアプリを実行してくれ,「とりあえず画像分別のアプリは作れる」と少し目途が立ちました.

(なお私もXamarin+Custom Vision Serviceのデモアプリを実行しようと色々試したのですが,うまくいかなかったので誰かやり方教えてくれると嬉しいです..

github.com

当日発表されたテーマは「旅行」ということで,かなり適応しやすくツイているなと思いました.あとはメンバーが素敵なアイディアを考え,料理し,そして動画や実際に素材を買うといった「投票をしてもらえるような要素」を揃えられたことが優秀賞に繋がれたと思っています.後輩の喜ぶ顔が見れたのが凄く嬉しかったです.

また,運営をして下さった方々との繋がりが出来たのが今後の全脳の会にとって一番の財産になれたかなと思っています.私個人は今年度で就職し仙台を離れる+Sechackというイベントに採用されたのであまり全脳の会としての活動はできないかもしれませんが,今後もメンバーと一緒になにかしら実績を残せたらなと思ってます!!

 

 

JPHACKS2017体験談メモ

先週JPHACKSに参加してきました.布教とメモを兼ねて体験談を綴ります.

 

理学部の後輩と2人チームでエントリーしました.彼とは某生物系コンテストで一緒に戦った仲で,こういった開発系イベントに興味があり,作ってみたいものがあるということで乗ってくれました.(個人で参加するにはハードルが高く,また私自身機械系であまり実装力・プログラミング力がなく組んだ方に迷惑をかけるのもアレだし,彼なら最悪失敗しても一緒に被ってくれるでしょう!!ということで彼にはかなり助けられました)

 

事前に軽くアイディア出ししたところ,共感覚と再現とか音楽の可視化とかバックダンサーの自動生成とか二人とも音声や映像でパフォーマンスしたいね~と話していました.とりあえず後輩君がDJやってて,ある曲のドラムやポーカルを抜きとるシステムが欲しい,またそれで自由に色々な曲の一パートを寄り添って新しい曲作りたい,という希望があったのでそれでいくことにしました.

ということでpythonで音楽を処理する練習をして,あとは当日ドラムやギターなどの音源を機械学習し,そこに曲を流して「演奏している楽器とその時間」の情報を得て,それらを除きたいね,と予定()を立てました.

 

当日,行ってみると(10分遅刻)メンバーを追加してほしいとの要請をうけ,急遽高専の方が加わりました.軽く打ち合わせをして始めたのですが,どうも音声認識APIが上手く使えず,なかなか進まない.私以外にpythonを使える人もいないしグループとしてうまく進められない感を感じもやもら.ここで急遽,追加メンバーの方がunityandroidstudioの扱いに長けているとのこので,unityでセンサデータをもとに音声処理をしてDJっぽいことをしよう,という話になりました.ここで一日目17時.やばい.

アルゴリズムを決める係,Unityで単純にプログラムする係,方針や意思決定,wiki動画を作る係にわかれ急ピッチに進め,一日目解散時刻の20時に何とかセンサデータをUnityで扱い,フィルタをかけれるようになる.良かった.とりあえず4時間30分は寝ることを合言葉に解散.

 

2日目は淡々と今できることを進め,Wikiと動画をまとめました.やっぱ技術なきアイディアは意味ないなあと感じました.動画も14時に素材が揃い,14時50分に全体像が完成.(しかし50MBくらいあってYoutubeに挙げるとちらつきエラー.結局低品質化しまくって5MBくらいで上げたら大丈夫でした.)

しかし動画の完成を意識しすぎてプレゼンの構成が準備不足で,機能を1/3しか説明できずに終了.

当日賞とか考えると,あんまりwikiとかみないので,いかにプレゼンで伝えるかが大事だったなという印象でした.(でも他のチームは技術的にすごいことやってるとこばっかだったので順当という感じです.一日で機械学習のモデル組むとかアプリの形にするとか機械系には想像できない)

色々あったけど終わった後「また機会があれば参加したいね」,って言い会えたので

良かったです.