【Unity】VR ReadyでないPCでVive Trackerを使う
はじめに
来週 Laval Virtualで展示してくる予定なのですが、 荷物多いから軽めのPCで行きたいなーと思って 手元にあった2012年発売のノートPCで試してみたところ 意外とあっさり動いてしまったので、メモ程度に書いておきます。
今回は去年の11/30までにpaper(英語)を書いて、acceptされたので行ってこようと思います
— てんちょー@めぐるーまー (@shop_0761) 2018年3月21日
せっかくなので、現地からのストリーミング配信とかが出来ればと思ってます
配信以外にもイラストを描くプランやEnamCard(名札シール)、展示ブースにチラシを置くプランなども用意したのでよろしくお願いします! https://t.co/qxcJd7S41g
動作環境 Unity2017.1.2f1 (作り始めた時がこれだった 2.0からxRSettingsになりつらみ Windows 10 メモリ: 4GB CPU: i5-3210M GPU: Intel HD Graphics 4000
やり方
Vive Trackerの設定はこちらの記事を参考にしてください。
VR Ready PCでなくてもSteam VRを入れることはできるので、 Steamから順番にインストールすればよいかと思います。
ポイントはおそらく2点
- Steam VR はβじゃないと動かない…かも?
- Init_HmdNotFoundPresenceFailedエラー
1点目はそのままbetaにすればいい話なんですが、 2点目はHMDをPCに挿すことでインストールされるものが必要なのかも。 適当に手当たり次第、HMD側のUSBをPCに挿してドライバ的なやつを いっぱいいれてみたけどダメだったのでググってみたらみつけました。
ありがてぇ…ありがてぇ…
このとおりに2箇所編集するとヘリポートみたいなマークがでるようになりました。
ヘリポートみたいなやつ pic.twitter.com/DyvYlC8aM3
— てんちょー@めぐるーまー (@shop_0761) 2018年3月30日
このコンポジターを起動するとHeadset Windowが起動して、利用可能に変わるんですが 処理負荷になるので使わないことにします。それでもうごくのでまあいっかと思って。
このヘリポートっぽいマークが見えてればルームセットアップもできるようで、 とりあえず立位の方は実行できました。
何にもささってないのにセットアップ(立位)ができた(?) pic.twitter.com/JelTJCG9mK
— てんちょー@めぐるーまー (@shop_0761) 2018年3月30日
まとめ
今週 ちょうどえむにわさんが試していたようで、後発になってしまいました
— なっつー@4/11展示 (@yashinut) 2018年3月30日
PCを機内持ち込みにしたほうがいいよと言われたので、今日試したといったところです。 できてよかった。
実際、これが出来ると雑にいらない安いPCで海外展示が出来たり、 VTuberやりたいけどPCまでは買えない 先にViveだけ買う みたいなことができるかも。
【UE4】円形ゲージのはじまりの位置を変えてみた
はじめに
円形ゲージのような簡単なやつならサクッとUE4のマテリアルで作っちゃうんですが、 今回は円形ゲージの始点?をずらしたいなぁと思って作りました
こんなやつです
とりあえず90度刻みで時計、反時計できるのは確認できたのでまとめておきます
まあ手を加えればこんな感じのもTextureなしで作れたりします
謎の勢いでテクスチャ無しのマテリアルで円形ゲージをつくってしまった #UE4Study pic.twitter.com/twGtfVGgSf
— てんちょー (@shop_0761) 2017年12月12日
円形ゲージ
円形ゲージの作り方はこの辺が参考になるかと
で、今回の肝になるのは VectorToRadialValueの Vector or UVs(V2) Inputです
あんまりいい方法がパッと思いつかなかったので、Material Functionにえいと放り込んでますが、 適宜必要なとこだけ使うほうがパフォーマンス的にはよさそうです
1-x すると逆回転のも作れるのでとりあえず8通りですね
中身
RightはDefaultなのでなくてもいいですが、参考までに一緒に並べました。
ポイントはTexCoordのUVタイリングのとこです 2.0 にしましょう
まとめ
Textureの回転なら Custom Rotator なりを使えばいいんですが、TexCoordだとうまくいかなかったので試してみた といったところです
そんなに難しくないのでお試しあれ
【Unity】ViveのHMDなしにTrackerを使う
はじめに
お高いPerception Neuronとか買わなくても今流行のVirtual Youtuberになれる!!(かも)(Final IKは買おう)
ところで、こんなのを作っています
ちびっこミュージシャン が .@shop_0761 さんの新作のペーパー楽器ノリノリで演奏してる。 #MakerCarnival #Inst_paper pic.twitter.com/wNM9zqBLTq
— Somelu (@Somelu01) 2017年10月14日
Trackerしか使わない子供向けおもちゃの #Inst_Paper です。HMDいらないなーと思ってて、
つい最近
SteamVRでViveTrackerだけを使うのあるのかなと思ったら普通にあったわ。
— ねぎぽよ❣️/ニアちゃん👉 (@CST_negi) 2017年12月27日
これきっかけで調べたらまずこれを発見しました。
ここは Python使って取得するやつで、
HMDなしでTrackerの位置がとれるっぽいことを確認した pic.twitter.com/M05Iz8fPWo
— てんちょー / 筑野(ちくの)えり💕🍱 (@shop_0761) 2018年1月6日
その通りやったらできました。サンプルにUDPで送る方法もあったのでそれでやろうかなーと思っていたら、
今スマホからGitHubのTriad_openvrのPythonソースを読んでるけど中身でやってることは本当にOpenVRの生APIを叩いてるだけなので、vrsettingsを合わせてSteamVR for UnityのC#用OpenVR.csを入れとけばUnityでもそのまま取れそう
— 野生の男 WILDMAN (@yasei_no_otoko) 2018年1月7日
と言われたので調べてみよ と思っていたら、
ちょうど私も、HMDなしでTrackerだけ使いたいと思ってたところでした
— サイキック山口 / STYLY (@from2001vr) 2018年1月7日
Unityでの実現方法、こちら(コメント欄)に見つけました。まだ試せてないですhttps://t.co/fZT9myRDYH
おっ、やっぱりUnityVRサポートオフでVRApplication_Otherで初期化が現状の正解っぽいですねhttps://t.co/fgdVvvHkFX
— 野生の男 WILDMAN (@yasei_no_otoko) 2018年1月7日
と、次々情報が集まってきたのでやったら上手く行った という話です。
やること
VRSettingsを変える
ここらへんに設定ファイルの default.vrsettings があります。
<steamインストールフォルダ>\steamapps\common\SteamVR\resources\settings
これを開いて、 requiredHmd を falseにします。
--- 追記 2019/11/28 ---
default.vr.settingsについて
default.vrsettingsを編集する→まちがい
— あきら☎︎🗾@VMC"0.39"/0.35r2 (@sh_akira) 2019年11月7日
steamvr.vrsettingsを編集する→せいかい
steamvr.vrsettingsに書いた内容がdefault.vrsettingsの内容に上書きされて適用されます
とのことです
合わせて上記の設定のままだとHMDを1度PCに繋がなければいけないので、こちらも合わせてご確認ください。
--- 追記おわり 2019/11/28 ---
Steam VRを起動してたら再起動しておきましょう。 利用不可になりますが、通常HMDを繋がないとベースステーションやTrackerが見えるようになります。
Unity側の設定
とりあえずSteam VR Pluginを入れて、Virtual Reality Supportを切ります()
一応 Edit → Preferences からAutomatically Enable VR も切っておきます
これで準備完了 のはず
スクリプトを書く
のは、めんどくさいので用意しました。
これを適当にアタッチして使ってください。
こんな感じで使います。
すると
HMDなしでVive Tracker使えるようになったー #Vive #SteamVR pic.twitter.com/Mj5poqewGF
— てんちょー / 筑野(ちくの)えり💕🍱 (@shop_0761) 2018年1月7日
といった具合に使えます。ただ、途中でTrackerを追加したりした時に勝手には対応してくれない(監視するのが面倒い)ので、 Resetボタンを用意しました。デフォだとTabキーを押すといけます。(意味的にRefreshのがよかったかも
トラブルシューティング
Steam VR はβじゃないと動かない…かも?
これやってみたけど、SteamVR起動時に謎のVRInitError_IPC_CompositorConnectFailedエラーが出てベースステーションやトラッカーが認識されない。。たすけて… 【Unity】ViveのHMDなしにTrackerを使う - てんちょーの技術日誌 https://t.co/MsnMCbWq0u
— Takahiro Poly Horikawa 堀川隆弘 (@thorikawa) 2018年1月12日
SteamVRをbeta版にしたらうまくいった!HMDなしでもポジトラできる!
— Takahiro Poly Horikawa 堀川隆弘 (@thorikawa) 2018年1月18日
Init_HmdNotFoundPresenceFailedエラー
@shop_0761 ViveTracker単体動作を試していて、てんちょーさんのブログを見ながらやってるんですが、どうしてもスクリプトのOpenVR.InitのところでInit_HmdNotFoundPresenceFailedエラーが出ちゃうんですよね。SteamVR上の表示は同じなんですが…。良ければ開発環境を教えてもらえませんか?
— ねぎぽよ❣️/ニアちゃん👉 (@CST_negi) 2018年1月24日
本当に申し訳ない話をするんだけど、単体動作できました。
— ねぎぽよ❣️/ニアちゃん👉 (@CST_negi) 2018年1月24日
HMDを差し直したらSteamVRのコンポーネントが新しくインストールされてその後できるようになったので原因それっぽい…。😔😔
ビルドした時に動かない
development buildでビルドして、デバッグしてみるとか?
— てんちょー / 筑野(ちくの)えり💕🍱 (@shop_0761) 2018年1月25日
あ、たぶん openvr_api.dll がないのでは
Projectにdllいれてビルドすればいいかもhttps://t.co/S8b3bQFhhK
openvr_api.dll がない可能性があります。win64の場合はこのdllをUnityのAssets/Plugins 以下などに適当に放り込んであげれば 動くはず。
64bit
32bit
ポゴピン
TrackerのRoleを設定しないと入力が取れないようです
けのじ (@kenoooooji) | Twitter さんが検証してくれました ありがとうございます!
まとめ
自分でOpenVRを初期化すればいろいろできそう
このHMDなしバージョンで #Inst_Paper を銀VR 2日目に展示する予定ですのでよければー
http://jvr-fest.com/2017/11/2958/
全く関係ないですが、Udemyの講座 よかったら買って欲しい(割引きクーポンつきURL貼っとくので
https://www.udemy.com/unrealengine-4-archviz-vr/?couponCode=TENCHO_435970www.udemy.com
2017年 作ったものとかをまとめてみた
はじめに
個人的に完成した(と思っている)ものに関してはすぐ忘れてしまうので、 「作ったもの見せて」と言われた時にこの記事にまとめておくと便利かなぁと思いまとめておきます。
意外と時間がかかりそうなので、ざっくりまとめた後、おいおい追記するかもです
1月
お引っ越し(下見)と卒論があったので、後半はわたわたしてるけど、前半はこんな感じ
2016年に作り始めたVRキーボードの別案を年始から作っていたらしい
新しいVR内入力方法を作ってみた Vine版 (キーボードではない何か #UE4 #VR_keyboard https://t.co/y554L587vj
— てんちょー (@shop_0761) 2017年1月3日
はい はてなブログに投稿しました #はてなブログ
— てんちょー (@shop_0761) 2017年1月3日
VRキーボードのためにキーボードを封印したお話 - てんちょーの技術日誌https://t.co/hkUI002FkE
ちょっと今回のは特殊なので、思うところを簡単にまとめた はてなブログに投稿しました #はてなブログ
— てんちょー (@shop_0761) 2017年1月3日
新しいVR内入力方法を考えてみたお話 - てんちょーの技術日誌https://t.co/WKfbGjLcCR
音声認識の結果がレシートみたいに出てきて入力できるようにした #UE4 #VR_keyboard https://t.co/JADCiVshHJ
— てんちょー (@shop_0761) 2017年1月4日
GASがお気に入りだったので、この頃はslackと連携してアレコレ作ってたっぽい
slack+GASでLINEのスタンプみたいにするやつ 登録済みカスタム絵文字と、その元画像が上がってる共有リンクがあれば、slackから追加/削除/一覧表示ができるようになった
— てんちょー (@shop_0761) 2017年1月8日
卒論進捗 途中で行き詰ってたのでGAS書いてた
— てんちょー (@shop_0761) 2017年1月8日
とりあえずヨドバシからの出荷メールをslackに通知するやつできた
— てんちょー (@shop_0761) 2017年1月10日
2月
Mogura VRでちょろっと紹介されたり
紹介されてる //VRならではの日本語入力に挑戦してみた - Mogura VR https://t.co/GJFvVGwAbf
— てんちょー (@shop_0761) 2017年2月1日
卒論 おわらせたのがこのくらい
そつろん おわったー!
— てんちょー (@shop_0761) 2017年2月9日
これのお手伝いをしたり
いぇいいぇい(お手伝い pic.twitter.com/GADXaxE91C
— てんちょー (@shop_0761) 2017年2月11日
引っ越し先のおうち Blenderで作ったりした
引っ越してきたおうちをモデモデしてた
— てんちょー (@shop_0761) 2017年2月16日
全部測って、だいたい原寸大
あとはドアとか窓とか pic.twitter.com/2xk2v6mvbS
UE4 Meetup Sapporo で登壇したり
主観と偏見混じりのTwitterから見るUE4コミュニティ
— てんちょー (@shop_0761) 2017年2月26日
公開しました #ue4studysap https://t.co/qrlky3NA1b
150枚超えのスライドになったのは最近なにも作れてなかった鬱憤でも溜まってたのではと思ってます()
— てんちょー (@shop_0761) 2017年2月26日
うっかりSVVR(アメリカ)に行くことを決めてしまうなどした
こっそり今年はOCとか海外のVRイベント行けたらいいなと思っていたら本当に行くことになるとは
— てんちょー (@shop_0761) 2017年2月16日
会社から課題を出されていたので、そのためにUnityの勉強をしたりもしてたなぁ
Unity VR本 大体読み終わりました
— てんちょー (@shop_0761) 2017年2月20日
後半 ほぼ読み物だったので手を動かしたかった感
3月
Unity Chan Live -UE4 ver-
ぷちコン用に作りました #UE4 #ue4con
— てんちょー (@shop_0761) 2017年3月26日
【第7回ぷちコン応募作品】UnityChan LIVE -UE4 ver- https://t.co/d89KXvtWEo
4月
Unity Chan Live をモバイルに持っていったり
UnityChanLIVEをUE4 Mobileに移植して最適化中 とりあえず40fps後半くらい出るようになった #UE4 #EpicFriday pic.twitter.com/aMqpkmSuLs
— てんちょー (@shop_0761) 2017年4月21日
SVVR 報告会でLTした
https://speakerdeck.com/shop_0761/svvr-en
5月
意外とお気に入りの引き出し
自分の体を引き出しにするやつを作ってみた #UE4 #VR pic.twitter.com/6GDaMXo8uJ
— てんちょー (@shop_0761) 2017年5月13日
6月
凹みさんの uDD でYoutubeの360度動画を再生するやつ
VR空間からYouTubeの360動画を見るやつを作ってみた #VR #unity3d
— てんちょー (@shop_0761) 2017年6月18日
中で使ってる動画はこれhttps://t.co/D9irh5pZFF pic.twitter.com/iy2WofjfYc
7月
音声認識でメモを残すやつ
VRで喋ったのを付箋に書いて貼ったり剥がしたりするやつ 作った #VR #UE4 pic.twitter.com/8I3XP3KfGV
— てんちょー (@shop_0761) 2017年7月16日
⚡️ "HoloStickyを作るまで" #HoloStickyhttps://t.co/VVfP3jflEr
— てんちょー (@shop_0761) 2017年7月24日
これはこの前LTしました
8月
夏コミ 技術書を書いたりしました
夏コミはalweiさんのとこに #VRテンプレ本 を置いてもらってるので来てね!!
— てんちょー (@shop_0761) 2017年8月9日
1日目 東こ34b です #C92 #UE4 #UE4Studyhttps://t.co/FyybNGgAQ4 pic.twitter.com/Z4foktA7vT
水彩風マテリアルをまた調整しはじめたり
なんだかんだ金曜にいなくて溜まってたものを投げてく#EpicFriday pic.twitter.com/bJHxSqTE5D
— てんちょー (@shop_0761) 2017年8月24日
Unreal Engine Meetup Sapporo にて ライブノーディングのサポートをしたり VR ModeのSequencerの紹介をしたり
晒される席#unrealSapporo pic.twitter.com/zlbT0lAZyc
— てんちょー (@shop_0761) 2017年8月19日
ミクさんお迎えしたけど、全然遊べてない…
買ってみたのでお試し中(作曲したことはない pic.twitter.com/JvlmpGkycE
— てんちょー (@shop_0761) 2017年8月24日
やっつけ pic.twitter.com/RdHxncLomk
— てんちょー (@shop_0761) 2017年8月25日
9月
ぷちコンで UE4 + Network + VRなコンテンツをやっつけでなんとか作った
【第8回ぷちコン応募作品】foul MURDER このまえつくったVRネットワークゲーム(1人で動画撮るのはしんどい https://t.co/jx2LVCAZpX
— てんちょー (@shop_0761) 2017年9月19日
10月
Inst_Paper 上海で展示してきました
ちびっこミュージシャン が .@shop_0761 さんの新作のペーパー楽器ノリノリで演奏してる。 #MakerCarnival #Inst_paper pic.twitter.com/wNM9zqBLTq
— Somelu (@Somelu01) 2017年10月14日
技術書典3にだしたり
技術書典にはCRSの移植本をだします
— てんちょー (@shop_0761) 2017年10月18日
興味本位でフルカラー版を若干数用意してます(残りはPDF版) #技術書典3 pic.twitter.com/6R5bvz8iEN
Udemyの講師になった
今日のスライドをあげました Udemy みてね! #JVRFest https://t.co/HA7hlpmnoC
— てんちょー (@shop_0761) 2017年10月28日
Udemyhttps://t.co/lHxesEGNKy
今日のスライドはこちら! Udemyでの評判がよかったり、ネタがあれば次がある…かも…? #UE4 #UE4Study #UE4AllStudy https://t.co/ocyigZtkRR
— てんちょー (@shop_0761) 2017年12月19日
11月
2017 JapanVR Fest開発者会にて .@waffle_maker さんが作ってた全天球動画の中を歩けるやつ
— てんちょー (@shop_0761) 2017年11月2日
わっふるさんご協力のもとUE4に移植できました 詳しくは わっふるさんにお問い合わせをー #EpicFriday https://t.co/rFqcH7cjti pic.twitter.com/mu7oDyZ7of
Windows MR で無限に歩けるので公園で歩いた
#UE4 + #WindowsMR (#WinMR #Acer) + Infinity Blade で無限に歩けるやつを作った with @Ash_Yin pic.twitter.com/tEGjwfbOwR
— てんちょー (@shop_0761) 2017年11月13日
Inst_Paper 初国内展示
今日はxR Tech Tokyoでなぜか上海が1番最初の展示になった #Inst_Paper の展示をします #xRTech
— てんちょー (@shop_0761) 2017年11月18日
Vive Trackerをマウントできる状態のもの一式を持ってきてくれると、コントローラーにできます
STYLYハッカソンにて、未実装のシーン遷移をハックしてつくるなど
12月
イベント用名札メーカー
その他
全く関係ないですが3月から東京に引っ越してきて、どうやら大分痩せたようです(体重計がないので分からない
一人暮らししたら、とりあえず食費から削るなぁと思ってて実際そうなった模様。実家にいる間にいっぱい食べとこと思ってたらかなり太ったんですが、それも無かったことになるくらいに…
夏ごろ?に家族に会った時に後ろ姿が変わった(細くなった)とか言われたのを思い出したりしました
なんでこの話を書いたかというと、さっき久々に履こうとしたズボン(春先とか履いてたやつ)がダボダボになってて!?!?ってなったからです はい
【UE4】スマホアプリによくあるスワイプ、ピンチインアウト
はじめに
久々にちゃんと誰かの役に立ちそうな記事を書かねばと思った次第です()
というのもありますが、検証ついでに作ってみたので忘れないようにメモをば。
Androidのよくある操作作ってみた
— てんちょー (@shop_0761) 2017年12月7日
ググってもあまり出てこなかったので#UE4Study #EpicFriday pic.twitter.com/S4D9jDVZJc
実装
Playerのカメラ回転 よく忘れるので、どうするのがいいのか迷ったあげく とりあえずPlayerPawnのカメラを直で回しています。ダメっぽい気がするのでいい方法があったら教えてください。
あと、なぜか意図せずRoll方向にも回っていたので、PlayerPawn側で回らないようにしました(ダメそう
Player Pawn
2017/12/13 01:52 修正
Control Rotationに変えたので、Player Pawnのチェックを入れとかないと動かない
Player Controller
2017/12/13 01:52 修正
Get Component by Class はキャッシュしたほうがよさそう
CalcPinchRate マクロ
CalcSwipeCameraRot マクロ
別で入力が欲しい時
簡単な説明
indexに合わせてPress時のVector2Dを取っておいて、Movedで差分を計算する感じです。 とりあえず見栄え重視でマクロに突っ込んだので色々アレです。まあサッと試しただけなのでご勘弁を…
まとめ
デバッグにはじめてまともにLauncher使ったけどべんりっぽい!細かい実装はUnityのコードとか参考になります おわり。
GoogleHome で遊んでみたことメモ
はじめに
スマートスピーカー Advent Calendar 2017 の 3日目です。
昨年末はPCのキーボードを封印して音声認識でどこまでいけるか試したりしていました。
キーボードという概念をぶっ壊すために、とりあえず明日から年内はハードウェアなキーボード、スマホのキーボード、仮想キーボードなどを封印します
— てんちょー (@shop_0761) 2016年12月20日
(自分の作ったVRキーボードを除く)
音声認識を使っていて変な違和感が出てきた話をすると、最初はなんとも無いんだけど、段々喋ると認識されてしまうと思うのか、余計なタイミングで喋ってはいけないのではという心持ちにさせられた
— てんちょー (@shop_0761) 2016年12月31日
コルタナさんがあまりにもEdge頼りなので、気合でPowerShellのスクリプトを書くなどしてTwitterをしてました。
今回は勢いで購入したGoogleHome miniが思ってた以上に認識精度が高いので、 あれこれ勢いで作って便利になったメモを残しておこうかと。
nodejsは手探りで書いたのであまりよくない書き方かも…。
ついでにAmazon echo dotも安かったので、最後に感想とかも。
やったこと
基本的に RaspberriPi Google Apps Script(GAS) IFTTT の3つでやりくりしてます。
Raspberri Pi zero W を買う
事前にちょろっと調べるとGoogle Home notifier を使えば発話させられるらしく、 これはラズパイ買っとこ と思って秋葉原で買いました。 キットみたいなやつを買ってすぐ使えるやつだったのに、何を思ったかSDカードをフォーマットしてしまい 結局入れ直しました…地味にひっかかったりした…
Hue連携
Hueがあれば、すぐ終わります。なんか覚えてないくらいに一瞬でした。 "部屋"って名前の部屋をGoogleHomeのアプリで作っておくと、「OK Google, 部屋の電気をつけて」みたいに使えて便利です。
wemo連携
家に転がってたwemo mini smart plugをつかうことにしました。 こいつはコンセントのオン/オフができます。
IFTTTで連携できるので、とりあえずそのまま使っています。 運用でカバーってやつですね()
お湯が沸きそう #googlehome pic.twitter.com/eYDAokxfBq
— てんちょー (@shop_0761) 2017年11月7日
IFTTTでコマンドの上書き
どうやらGoogle Homeにある既存のコマンド「おはよう」などはIFTTT連携で上書きできるようです。 はたして需要があるのかコレ。
特に難しい設定もせずにこうすると、上書き?になるっぽい
Google Home notifier
セットアップ
記事をそのままやりました。注意すべきはnodejsは7系でないと動かないかもです。 これで喋らせる時に「とぅるん」ってこれから喋るよみたいな音がなるやつ消せないのかな…?
ngrokのURLをslackにPOST
Google Home Notifier では ngrok というのを使ってローカル環境を外部に公開しています。
example.js を実行するたびにアドレスが生成され、これを使えばGAS等からアクセスできます。 サブドメインを割り当てることができるらしいのですが、2.0だと有料、1.0だと無料だそうです。
google home notifierがどっちなのか調べるのも面倒だったので、 urlが生成されるたびにslackへPOSTして、それをOutgoing webhooksで拾い、GASでSpread Sheetに記録してました。 まあ、メリットとしてラズパイが落ちてしまった時にこれらのスクリプトの準備できたらslackに通知がくるって感じですかね。
こんな感じで
outgoing webhooks は legacy になってしまったので代わりになるものを探しましたが、いまいちしっくりくるものが無かったので そのまま使っています。ただtokenの生成が前と変わって、権限を付与する形のものになりました。 今はこの3つを許可したtokenを使っています。
example.jsに追記する感じで書いています。
app.listen(serverPort, function () { ngrok.connect(serverPort, function (err, url) { console.log('POST "text=Hello Google Home" to:'); console.log(' http://localhost:' + serverPort + '/google-home-notifier'); console.log(' ' +url + '/google-home-notifier'); console.log('example:'); console.log('curl -X POST -d "text=Hello Google Home" ' + url + '/google-home-notifier'); //ここから var request = require('request'); const HOST = 'https:\/\/slack.com/api/chat.postMessage'; var options = { url: "https://slack.com/api/chat.postMessage", form: { "token": "とーくんをいれる", "channel": "#googlehome", "text": "ngrokのアドレスが変わったよ " + url + "/google-home-notifier", "username": "GoogleHome_Assistant" } }; request.post(options, function(error, response, body){ if(!error){ console.log("BODY: " + body); } else{ console.log("error: " + error.message); } }); //ここまで }); })
trello にメモを残す
Google Home 標準で買い物メモを残せますが、消すのはアプリ経由らしくて面倒いのでtrelloで管理出来るようにしました。 カードの追加/削除 がボイスコマンドで出来ます。全てのカードの読み上げもできるようにしようかな。
GoogleHomeから任意のメモをtrelloに追加/削除できるようにした pic.twitter.com/BdO6CcLBem
— てんちょー (@shop_0761) 2017年11月3日
GAS側のコードはこの辺にまとめておきました。
IFTTTはこんな感じで。
こうして「メモに牛乳を追加して」というと、「牛乳を追加」とSpread Sheetに書き込まれるので、 追加の文字列が入ってたらtrelloにカード追加、無かったら削除 みたいにしてます。
実行済みのチェック
Spread Sheet に書き込まれたタイミングでGASを実行するため、適当に編集してると 何度も関数が呼ばれてアワアワすることになるので、こんな感じでチェックするようにするといいでしょう。
function checkCmdDone(){ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); //sheet が複数あるので名前で指定 var sheet = spreadsheet.getSheetByName('CommandLog'); var value = sheet.getRange(sheet.getLastRow(), 1, 1, 2).getValues(); if(value[1] != "Done"){ sheet.getRange(sheet.getLastRow(), 2).setValue("Done"); return true; } else{ return false; } }
勝手にしゃべる
細かく時間を指定して実行できるらしいです。(知らなかった)
これらを使って勝手にしゃべるようにしました。
ゴミ捨ての通知
ゴミ捨て表をSpread Sheetで作って、そこを参照しつつ通知してくれます。 前日の夜とかに知りたいので少しindexを調整してます。
for(var i in cels){ // todayは12/3(日)10:00表記になるものを作っておいて、indexOfでさがしてる var index = readableDate.indexOf(cels[(parseInt(i)+1) % (cels.length)][0]); var state = cels[(parseInt(i)+2) % (cels.length)][1]; if(index > -1 && state != ""){ //読み上げ textToSpeech("てんちょーさん、今日は" + state + "だよ"); } }
ストレッチの通知
ストレッチし忘れるので、さっきの時間指定できるTriggerで設定しています。
降水確率の読み上げ
気の利くやつになった #GoogleHome pic.twitter.com/trzTPFBOxD
— てんちょー (@shop_0761) 2017年11月4日
天気はスクレイピングしてきて使っています。 現在の時刻に合わせて、それ以降の降水確率を読み上げてくれます。 スクレイピングしてきたときに、過去の降水確率は"-"みたいになってたりするので、 その時は読まない、みたいにして書いてます。大したことないので省略。
ミクさんに喋ってもらう
Alexaで公式skillが出るそうですが、うちのGoogleHomeでもテキストからミクさんが喋るようになりました pic.twitter.com/I0WI6wM9q9
— てんちょー (@shop_0761) 2017年11月8日
俺たちがやりたいのは「Hey Miku をスタート」ではないでしょ!!!
— てんちょー (@shop_0761) 2017年11月15日
「ねぇミクさん ◯◯してよぉー」って感じでしょ!!
という気持ちで作りました。 多分 OpenJTalk + MMD Agentの初音ミクの音響モデル が1番ラクな気がしますが、 あまり好みではなかったのでゴリ押しで作りました。
流れとしては
- Google Home で音声認識 + IFTTT でSpreadSheetに書き込み
- GASで検知して、Raspberri Pi にテキストを送信
- MeCabでカナ読み取得
- 一文字ずつに分割
- 対応する.wavファイルを探す
- sox コマンドで一つの.wavファイルに
- google home notifier で音声ファイル読み上げ
って感じですね。面倒いので全部は書きませんが、ポイントだけ。
これ作ってる途中で気づきましたが、GASってzip作れるんですね…やばみ…
Amazon echo dotとの比較
Amazon echo dot は Google カレンダーに予定を追加できます。Google Home mini では出来ません。 ????どういうこと????
あとAmazonで買い物できますが、やり取りが長いので喋るくらいならポチポチしたほうが早いという印象です。 Hey mikuも使えます。ただ1回遊んだら終わりですかね…
それと体感的な話ですが、echo dotは自分で再生しはじめた音楽のせいでマイクの感度が落ちる…?自爆…? その点Google home miniのが優秀な気がします。布団からごにょごにょ喋っても反応したり、 モニターを正面に座り、真後ろに置いてあるGoogle home mini に話しかけても反応したりします。すごい。
まとめ
ここまでやるともはやGoogleHomeである意味とは…?という気持ちになります。 ただ、GoogleHomeの認識精度は魅力的ですね。
イベント用名札生成ツール -NameCardMaker- を作ってみた
はじめに
君の名前は みたくconnpassのURLを読み込んだらアイコン画像取得してアカウントから二次元バーコード生成すると思うでしょ!残念!全部手作業でしたー!(逆怠惰) #xRTech pic.twitter.com/9ky4n7mj6Z
— いっこう@めぐるーまー✈️SXSW→VRDC (@ikkou) 2017年11月16日
これを見て、「あ、自動化できそう」と思って作ってみました。
-- 12/02 02:24追記
これツイートの元ネタがあるんですね(しらなかった
--
2018/03/06
専用ページを作りました。 詳細はこちら。 記載してた採用実績、対応サイト等も全て移行しました。