ふかふかブログ

興味のあることについてゆる~く書きます

DiscordのテキストをVOICEROIDが読み上げてくれるBOTを作ってみた

f:id:nohararc:20200710033123p:plain

こちらの記事は古い方法です。 最新の方法は以下を参照ください。 nohararc.hatenablog.jp

--- ↓ここから古い記事↓ ---

実際に動いている様子

youtu.be 画像で利用させていただいた素材*1

概要

Discordでテキストチャンネルの内容をボイスチャンネルで読み上げてくれるBOTを作った。

既存の読み上げbot(shovel、喋太郎など)とは違い公開していない => 招待すれば利用できるわけではない。

導入方法はざっくり書いたので興味がある人がいたらTwitter: fukafuka_ningenまで。

確認済み動作環境

ざっくり導入方法

  1. VOICEROID2をインストール
  2. voiceroid_daemonをセットアップ、音声変換が動けばおk
  3. discordのbotを作成しtokenを取得後、利用したいサーバーに招待する

動作概要

  1. VOICEROID2のHTTPサーバーデーモンであるvoiceroid_daemonを利用しテキスト→音声に変換
  2. その音声をdiscordに送信している
  3. スピーチパラメーターをjsonで渡してやるとさらに柔軟な調声ができる(未実装)

github.com

おわりに

今回ほぼ初めてtts botを作ってみたがvoiceroid_daemonが優秀ということもあり意外とつまることなく実装できた。discordだけでなく別のチャットアプリやテキストエディタなどと連携しても面白いかもしれない。

自作LINEBOTにクイックリプライ実装してみた

f:id:nohararc:20200528001920p:plain

timeline.line.me

実装

公式のSDK*1を利用しているので実装はシンプル。

以下のコードだと、ユーザーがボタンを押したタイミングでラベルと同じ内容の文字列を入力させることができる。

ボタンの数には13という上限があるところだけ注意*2

    elif re.fullmatch(r'サブ', text):
        line_bot_api.reply_message(
            event.reply_token, 
            TextSendMessage(text='一覧から選んでね',
                    quick_reply=QuickReply(items=[
                        QuickReplyButton(action=MessageAction(label="スプラッシュボム", text="スプラッシュボム")),
                        QuickReplyButton(action=MessageAction(label="ポイントセンサー", text="ポイントセンサー")),
                        QuickReplyButton(action=MessageAction(label="ポイズンミスト", text="ポイズンミスト")),
                        QuickReplyButton(action=MessageAction(label="キューバンボム", text="キューバンボム")),
                        QuickReplyButton(action=MessageAction(label="カーリングボム", text="カーリングボム")),
                        QuickReplyButton(action=MessageAction(label="スプリンクラー", text="スプリンクラー")),
                        QuickReplyButton(action=MessageAction(label="クイックボム", text="クイックボム")),
                        QuickReplyButton(action=MessageAction(label="ロボットボム", text="ロボットボム")),
                        QuickReplyButton(action=MessageAction(label="ジャンプビーコン", text="ジャンプビーコン")),
                        QuickReplyButton(action=MessageAction(label="スプラッシュシールド", text="スプラッシュシールド")),
                        QuickReplyButton(action=MessageAction(label="トラップ", text="トラップ")),
                        QuickReplyButton(action=MessageAction(label="タンサンボム", text="タンサンボム")),
                        QuickReplyButton(action=MessageAction(label="トーピード", text="トーピード")),
                    ])
            )
        )

10年ぶりに自作パソコン組んでみた

要約

  • デスクトップPC購入を検討したが新型コロナウィルスの影響か納品まで早くて1-2カ月かかるとのことだったので自作PCを組んだ
  • ディープラーニング勉強中なのでGPUも載せた
  • BTOで購入しても大体同じくらいの値段する(10万弱)

構成

主な用途

実際に買ったやつ

いろいろなECサイトめぐるの面倒だったのでほぼすべてAmazonで購入した。合計約10万円(2020年3月末時点)。 以下それぞれ購入したもののリンク貼る。

ケース

でかい。電源用の延長ケーブルを買う羽目になったけど後悔はしていない。

マザボ

コスパ重視。メモリスロット4つあるが2x2チャンネルで動くらしい。 WiFiなし、M.2スロット周りに制約があるらしい。よくわからないけど動いているからよしッ!

CPU

コスパ重視。

モリー

コスパ重視。一番安いの買った。

GPU

機械学習用途。

かなり迷った。

メモリと値段のコスパを見ると中古で1080Ti買うのが無難だが Tensorコア使いたかったのでメモリ妥協してRTX2060にした。

やはりメモリ6GBだと少ないので、がっつり学習したいときはこれまで通りGCP使うと思う。

相談に乗ってくれた有識者、有用な資料*1作ってくださった方に感謝。

SSD

M.2 NVMe接続なら何でもよかった。

電源の延長ケーブル

近所のPCショップで買ったのでリンク無し、2000円くらいだった記憶

Splatoon2のDiscord botを配布してみるテスト

どんなものか

  • 利用者側でトークンを用意してもらい、利用者側がBOTを起動する
  • 取り急ぎブキランダム機能のみ実装(ランダム/ルーレットに反応する)
  • 動作確認環境Win10 64bit

f:id:nohararc:20200421093832p:plain
キャプチャ下手すぎでは?

なぜ作ったか

  • Splatoon2関連のDiscord botは多数あるが大人の事情などで動作していないbotも少なくない
  • 利用者側で起動できるバイナリを配布してしまおうという考え

導入方法

  1. BOT用のトークンを取得する
    • ググって
  2. BOTをDISCORDサーバーに招待する
    • ググって
  3. バイナリをダウンロードする
    • ここからダウンロード化
  4. 実行
    • ダウンロードしたexeファイルをダブルクリックして、トークンを入力
    • 招待したサーバーでランダムまたはルーレットと入力

機能

お昼休み時間に作ったのでランダムブキ機能しか作っていません。

ランダムまたはルーレットで反応し、ランダムのブキを4つ(重複無し)返します。

最後に

今回はGoの素振り+配布してみたかったのでGoで書いていますが一番簡単かつdiscord botの情報が多いのはおそらくPythonなので自分で一から作りたいっ人はPythonで書いてみるのをお勧めします。

不具合・要望あれば、@fukafuka_ningenまで。

OBS起動時に自動でリプレイバッファを開始する

概要

OBSには「リプレイバッファ」なる巻き戻し録画機能があるが、 PS4とは異なり自動では開始してくれない。

本記事では、起動パラメーターを指定することで起動時にリプレイバッファを開始する方法を記載する。

試した環境

Windows 10(64bit)
OBS  Studio24.0.3(64bit)

手順

  1. OBSでリプレイバッファを有効化する
  2. OBSを閉じる
  3. ショートカットのリンク先に引数 --startreplaybuffer を指定する

f:id:nohararc:20200225013449p:plain

こんな感じ

"C:\Program Files\obs-studio\bin\64bit\obs64.exe" "--startreplaybuffer"

※そもそも設定できるといいがそういった設定は見当たらなかった

※コントリビュートチャンス!?(面倒くさくなってお金だけ寄付してきた)

参考

他にも起動パラメーターがあるので参考になりそう。 github.com

追記20200226

私の環境だとリプレイバッファを開始した状態で録画を開始すると録画した動画に数フレーム音ズレが発生しました。 録画する際はリプレイバッファを停止した状態で行うのがよさそうです。

2019年振り返り(スプラトゥーン編)

この記事ではスプラトゥーン2に関係あるものに限定して2019年の振り返りを行います。 これ書いている人はもともと日本語が苦手なのと想定外に菊之露を大量摂取しているため文章にまとまりがないかもしれません。

初めてのゲームサークル加入

正確な時期は覚えていませんが、初めてゲームのサークルに加入しました。 スプラトゥーンにはイカナカマという非公式コミュニティがあり、そこで自分に合いそうなチームを探して加入しました。

スプラトゥーンはおろかゲームのサークルに入るという経験が初めてだったため、初めは戸惑いましたが意外と皆さん普通(失礼)で、すぐになじむことができました。 そのサークルは解散してしまいましたがありがたいことにそこでフレンドになったイカタコとは今でも交流があります。

当時はウデマエS+になんとか到達はしたものの、自分のプレイスタイルやガチマッチに少々飽きていたためサークルの人と一緒にやるリーグマッチやプライベートマッチを楽しむスタイルでした。

ちなみに、この時までゲーム上のハンドルネームは特になかったのですが皆さんハンドルネームを持っていたので私もふかふかというハンドルネームを名乗るようになりました。

ウデマエ停滞編

2019年の初めにTwitterで全ルールウデマエX達成を目標にするとつぶやいてはいましたが、当時メインで利用していたスプラシューターコラボではS+帯を勝ち抜くことができず悶々とした日々が続いていました。

今振り返ると、このころはスプラシューターコラボで負ける→ブキ持ち替える→負ける→スプラシューターコラボに持ち帰る→負けるの繰り返しで思考が停止しておりほぼ成長も止まっていたと思います。

修行編そして全ルールX 達成

あるときTwitterYoutubeで「自分のプレイ動画を振り返るって反省することがウデマエ向上には大切」ということを聞き、早速録画環境を整え自分のプレイ動画を見返しましたがまぁひどいものでした。

1試合ごとになぜ勝てたか・なぜ勝てなかったかを記録し、勝ち負けのデータを集め傾向を分析しました。 そうすると以下の傾向をつかむことができました。

  1. 得意・不得意ステージがある
  2. (S+なので)そこまでブキの編成によって勝敗が決まっていない
  3. ゲームをプレイし始めて1~3試合目または2時間以上プレイしたときの勝率が非常に低い

1, 2はなんとなくわかっていましたが3はデータで見るまで気づいていなかったのでガチマッチに入るまでのアップとして試し打ちとステージの散歩(それぞれ1分程度)、ウデマエを上げる目的でプレイするのなら2時間以上ガチマッチをしないを徹底するようになりました。

ステージの厳選をするとさらによいのですが一応正社員として働いているのでそこまではやりませんでした。

試合前のアップ、プレイ時間の制限のほかにも有識者へ基本的な考え方を聞いたり、自分のプレイ動画を添削してもらったりしたのも成長の糧となりました。

そして2019年9月あたり?、ついに目標だったオールウデマエXを達成しました。 記念に妻にTwitterアイコンを書いてもらいました。

名札に"Xたい"と書いているのが非常にお気に入りです。

ちょっと番外編

スプラトゥーンのプレイに関すること以外にも以下のようなことをしていました。

イカタコ分類器を作る

最近機械学習を勉強中ということもあり、イカタコの顔画像からイカかタコか分類するモデルを作ってみました。

nohararc.hatenablog.jp

本来であればTensorFlow.jsに変換してそれぞれの端末上で自分の顔画像なりあげてイカかタコか分類するまで作りたかったのですがまだ手を出せていません。

センパイの友達追加人数が7000人達成

趣味で運用しているスプラトゥーンLINE BOTが友達追加数7000人を達成しました。 友達追加人数だけでなくリアクション送った数もまとめようと思いましたが力尽きた...

f:id:nohararc:20191230232658p:plain
コウハイの友達追加人数

気になる人はここから。

今年もありがとうございました。2020年もよろしくお願いします。

Happy Hacking Keyboard Professional HYBRID Type-S買った話

f:id:nohararc:20191216232807j:plain

2018年3月18日以来にPD-KB620B(Bluetoothのほう)を購入し2年近く利用しましたが この度新モデルがでたということでHYBRID Type-S(黒、日本語配列)のほうを購入しました。

一時間ほど触ってみての感想としてはPD-KB620Bと比べ打鍵音が優しい、指に吸い付く感じがする(キーストロークが若干短いから?)という感じです。 Bluetooth再接続時に押すボタンも少し押しやすくなっておりその点もプラス評価です。

仕事用HHKBもHYBRIDに乗り換えようか迷い中。 サンタさんにお願いすべきか...