Fox village by aki310

For the future of someone, somewhere

音声感情認識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とかみないので,いかにプレゼンで伝えるかが大事だったなという印象でした.(でも他のチームは技術的にすごいことやってるとこばっかだったので順当という感じです.一日で機械学習のモデル組むとかアプリの形にするとか機械系には想像できない)

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

良かったです.

Magic duelsで画面サイズを自由に変更する方法メモ

 SteamでMagic duelsを遊んでいる際に,

・ながら作業で片画面で遊びたい!!でも公式で設定できるものは大きすぎる

・ノートPCの画面とあってなくて右下のアイコンが押しづらい,

といった方向けの画面サイズを変える方法です.

(元々どっかで変更方法を見たけどそこのソースが見当たらないので書きました)

 

わりと簡単で,初期設定そのままだと

C:\Program Files (x86)\Steam\steamapps\common\Magic Duels にある

config.cfgを開き,下画面のwidthとheightを変えるだけです.シンプル!!

f:id:akisatooo:20170914213003p:plain

名古屋⇔仙台の移動手段まとめ

そこそこの人口があるけど,目立った観光名所がなく,「どうせ行くなら東京!!大阪!!」となりがちな両都市間の移動手段についてのメモ.

・新幹線

・夜行バス

太平洋フェリー

青春18切符

・飛行機

 

1.新幹線

名古屋駅⇔東京駅⇔仙台駅 で乗り継ぎ

往復割引(1割)と学割(2割)が適用可能.最終的に28%割引にできる.

時間 約3時間30分

費用 乗車券10150円⇒9135円(往復割引)⇒7308円(学割)

   +特急券

座席乗車券代特急券合計往復学割往復 
普通車自由席 10150円  8530  18680  15838  31676
普通車指定席(ひかり+やまびこ) 10150円  9570  19720  16878  33756
普通車指定席(のぞみ+はやぶさ

10150円

 10090  20240  17398  34796

 

 

2.夜行バス

・直通 片道7000円~13000円

 

・乗り継ぎ(仙台⇒東京,東京⇒名古屋)

2000~8000円+2000~8000円

 

3.太平洋フェリー

28日前に予約で半額にできる 

 

4.青春18切符

仙台⇒東京⇒名古屋ルートで14時間くらい.

仙台⇒富山⇒名古屋の北陸ルートは私鉄利用で1000円ほど課金する必要あり,また時間も24時間くらいかかる. 

 

5.飛行機

片道 ANA 34710円

参考

新幹線で名古屋・仙台間を格安料金で行く方法|新幹線旅行研究所