この記事は、もなふわすい~とる~む Advent Calendar 2020の12日目です。
11日目の記事は千代原もずめさんの後輩巻乃もなか概念SSでした。
正直に申し上げますと、今までVの者のSSって避けていた節がありました。空想なので。しかし、どうしても後輩巻乃さん概念という魅力には抗えず、読んでしまいました。良かった、こんな後輩が欲しかった...!(工業高校卒です)
#「たすけて、もなふわすい~とる~む!」って叫んだらツイートするようにしてみよう!
当初考えてたネタがボツになりまして、そのときの精神状態が「たすけて、もなふわすい~とる~む!」だったわけですね。
開発やっているとそれはもう意図しないところで変なバグ踏むわ、忙しいときに限ってタスクが舞い込んでくるやら...
そんなとき叫んだらそれを検知してツイートしたらいいんじゃね?って思いつきました。謎ですが許して...
##技術選定
あまり時間がない(ボツになった時点で1週間前くらい)ので手っ取り早く実現できる方法を取っていきます。
まずは音声認識を行う方法を検討しました。自分が今まで使ったことがあり、今回も時間かからずかつ精度高くできそうな方法は2つ。
google音声認識と、大語彙連続音声認識エンジンJuliusです。
まずはgoogle音声認識で「たすけて、もなふわすい~とる~む!」って認識させてみましょう。chromeでgoogleドキュメントを開くと音声認識が使えるのでそこから試します。
...うーん、予想より高い確率ですが「助けてもなふわスイートルーム」と認識されます。googleに認知されてる巻乃さん強い。
しかし何回か別な単語として拾ってしまいます。最後の「助けてお腹空いてる女」は笑ってしまいました。
次はjuliusのデモを動作させてみました。その結果がコレ。
助けてまでは良いのですが、もなふわすい~とる~むが壊滅的です。しかしjuliusなら辞書を作ることができるので、それを試してみます。
その結果がこちら。
デモで動作させていたときと表示が変わり、パラメータがいくつか表示されるようになりました。ここで注目するのはscore1の値です。この値が大きければ大きいほどそのキーワードとして認識されたということです。全く別な単語を喋るとそもそも認識されないですし、特定のキーワードを検知するという点では数値化できるのはあとでしきい値で調整が効くのでjuliusを使うことにしました。
次はツイートする方法。
twitterのAPI使うのがだいぶ面倒になっているのでIFTTTを使うことにします。curlから叩くだけでツイートできるのでお手軽ですね。
その他に制限が緩くできる方法としてseleniumを使ってchromeを自動操作化させる方法も考えましたが、今回はIFTTTで十分です。
制限かかるまで知らなかったのですが、IFTTTのツイート数の制限が100回/Dayと思ってたら25回/Dayになってたのですね。投稿動画撮ろうと何回か失敗したらツイートできなくなってて焦りました...。
構築する方法は以下3つの記事に分割して上げましたので興味があればどうぞ。
ラズパイ4でjulius 4.6をセットアップ
julius 4.6でキーワードの組み合わせを認識させる
pythonとjuliusとIFTTTを組み合わせて特定フレーズでツイートさせる
##構築した結果...
ついでに音声が認識されたら巻乃さんボイスを再生するようにしました。ランダムです。進捗どうですか?も再生されます。
叫んでツイートされる様子です
— エン.129 (@en129) December 11, 2020
(注意 一般成人男性の声がします) pic.twitter.com/53ed3Pj7fM
これで叫べば巻乃さんにしゅたっ!ってしてもらえるかもしれなくなりました!