ぱぴブログ

さんたろのブログ

ゲーム開発が好きな人のひとりごと

Discordのコメントを棒読みちゃんで読み上げたい

きっかけ

このご時世で、オンライン開催のイベントが多く、ぼちぼち参加しています。
先日mintechという北見工大さんの人たちで主催しているイベントが、オンライン開催だったのでお邪魔してきました。
Discordを利用してのイベントだったのですが、Discordに送ったコメントが自動で読み上げられて、その音が通話から聞こえました。

この機能のおかげで、訳あってミュートにしている人がチャットで送った文が、通話している人たちに音声で伝わります。
画面共有などしていると、Discordのチャット欄を確認しづらいことがあるので、便利です。

さらに、棒読みちゃんの設定を変更すれば、文字置換(例: "さんたろ"→"かみ")、や文字読みを音声ファイルに変換(例: "ドラの音"→ドラの音再生)が可能です。

「これは自分でも作りたい!」と感じて、形になったので、軽い作成方法を記述します。
基本的に、他者が配布している機能を利用しているだけなので、詰まった点などを主に書いていけたらと思います(結構詰まった)。

Nurseryを利用した方法

環境

・OS: Windows10
棒読みちゃん: Ver0.1.11.0 Beta20
・Nursery: 0.5.1 beta
Webブラウザ: Google Chrome

環境構築

公式で事細かに書かれています。
正直このサイトにたどり着いた時点で9割完成です。

github.com

デモ動画

詰まった点

FNF.Utility.MciSoundException

このエラーが出ると、再生しようとしている音声ファイルに対応していない、という意味合いらしいです。
DiSpeak利用時に.mp3ファイルを再生しようとして、このエラーが出ました(.wavにしたらいけました)

わかりにくいと感じる点

実際に動かしてみて、気づいた点を書いていきます。

再生する音声ファイルのパス

私は再生する音声ファイルの場所を、デフォルト(読み上げちゃん.exeと同じ階層にあるSoundディレクトリ)にしています。
しかし、Soundディレクトリの中で更にディレクトリを作成して整理したいですよね。

例えばSoundディレクトリの中にBGMディレクトリを作成したとすると、
「再生(BGM/ファイル.wav)」「Sound BGM/ファイル.wav」で再生できます。

パスを間違えたりファイル名を間違えると「サウンドが存在しません」とエラーが出ます。

Discord上からの呼び出し

先に呼ぶ側が、Botを呼びたいボイスチャットで通話に入る必要があります。
呼ぶのはNurseryを動かしている人以外でも可能です。

音声ファイル再生の遷移の仕方

棒読みちゃんの音声ファイル再生はSoundとSoundWの2種類があります。
Soundの場合は、他の音声ファイル再生の要求があった場合、その時点で再生を終了し、次の音声ファイルを再生します。

SoundWの場合は、他の音声ファイル再生の要求があった場合でも、再生が終わるまで終了せず、再生が終わり次第、次に要求があった音声ファイルを再生します。

SoundとSoundWどちらも、棒読みちゃんの読み上げでは再生が中断されないことに注意です。

音量調整

再生する音声ファイル、棒読みちゃんの出力、Discordの設定から変更できます。

Audacityなどで音声ファイルの音量を一定にし、棒読みちゃんの設定の、音声出力エンジンの音量係数と、Soundの音量から調整するのがいいでしょう。
一度通話に入ると、いったん再起動するまで棒読みちゃんの音量設定が変更されないときがあるので、注意です。

余談(DiSpeakで棒読みちゃんから音声再生ができない)

失敗談故、軽くしか書きませんが、「discord 棒読みちゃん」などと検索して一番目に付くのがこのDiSpeakでした。
このあたりの記事を参考にすれば、できると思います。

https://ch.nicovideo.jp/ironia/blomaga/ar1468999ch.nicovideo.jp

実は上の記事にも書いているんですが、棒読みちゃんの声の再生はできるのですが、音声ファイルの再生ができません。
これは棒読みちゃんの声の出力先は設定から変更可能(今回だとNETDUETTO)ですが、音声ファイル再生の出力先が上手く変更できないみたいで...。
Audio Routerを用いて、出力先を変更しようとしても、ダメでした...

qiita.com

ちなみに記事によれば、VOICEROIDを利用する場合は、音声ファイルの再生ができるようです。