2021年03月02日更新
Discordのテキストチャット読み上げbotの作り方を紹介!
Discordでテキストチャット読み上げをしてくれる読み上げbotは様々存在しますが、作り方がわかれば自分で作ってみたいという人もいるでしょう。そんな人に向けて、Discordのテキストチャット読み上げbotの作り方を紹介します。
目次
Discordのテキストチャット読み上げbotの作り方
Discordのテキスト読み上げbotはプログラミング言語の知識さえあれば可能です。この記事ではその作り方を紹介します。
事前準備
Discordのテキストチャット読み上げbotを作成するための事前準備をしましょう。
Discordの登録
Discordのアカウントを所持していない場合は作成してください。Webページ・アプリどちらからでも可能です。
プログラミング言語の選定
Discordのテキストチャット読み上げbotを作成する際に利用するプログラミング言語の選定をしましょう。
discord.py
Discordのbotは様々なプログラミング言語で開発ができますが、今回は「discord.py」(Python)を利用します。
Botアカウントの作成
下記リンク先からbotのアカウントを作成します。右上の「New Application」をクリックしましょう。
作成するbotの名前を入力します。
入力が完了したら「Create」をクリックします。
botのアイコンを設定してください。
「Save Change」ボタンで保存します。
次に「Bot」タブをクリックしましょう。
「Add Bot」をクリックします。
「Yes,do it!」をクリックすれば、bot用アカウントの作成が完了します。
Bot Token の設定
TOKEN部分にある「Click to Reveal Token」をクリックしましょう。
ここに記載されている英数字がTokeのコードです。これは後で利用します。
Botをサーバーに招待
作成したbot用アカウントをサーバーに招待/追加します。「Oauth2」タブに切り替えましょう。
「bot」にチェックを入れます。
必要に応じて下側にある、botに付与する権限も設定しておきましょう。
生成されたURLをコピーします。
新しいタブでコピーしたURLを開くとサーバーへの招待画面になります。招待したいサーバーを選択してください。
「認証」をクリックしましょう。
「私は人間です」にチェックを入れます。
「認証しました」と表示されればOKです。
Pythonの導入
まずはPythonを導入しましょう。下記サイトからPython3をインストールします。
「Download」にカーソルを合わせ「Python 3.9.1」をクリックします。インストーラーを任意の場所に保存しましょう。
ダウンロードしたインストーラーを起動し、「Add Python 3.9 to PATH」にチェックを入れます。
「Install Now」をクリックしてインストールを実行してください。ユーザーアカウント制御画面が表示されたら「はい」を押せばOKです。
インストールが完了したら上記のようになります。「Close」で閉じて大丈夫です。
Windows10の場合はWindows PowerShellを開いて次のコマンドを一度だけ実行し、スクリプトの実行を許可しましょう。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force |
discord.pyを利用するために必要なライブラリのインストールもコマンドプロンプトで実行しておいてください(Windowsの場合のコード)。
py -3 -m pip install -U discord.py |
音声合成Open JTalkの導入
まずはMicrosoft Visual Studioを導入します。Communityエディションのもので構いません。
上記のインストール画面では「C++によるデスクトップ開発」をチェックして、「インストール」をクリックしてください。
Cドライブの直下に「openjtalk」など任意の名前でフォルダ作成します。
次にHTSエンジンをダウンロードします。名前に「API」と記載のあるファイルをダウンロードして、7-Zipなどで2段階に分けて解凍します。
解凍したら先程作成したフォルダ(openjtalk)に解凍後のフォルダごと移動してください。
環境変数(コントロールパネル→システムとセキュリティ→システム→システムの詳細設定→環境変数)でnmake.exeのパスを通します。
Pathの環境変数の「編集」を押し、変数値の後ろに追加(Win8.1以前は「;」で区切る)します。
次のコマンドをコマンドプロンプトで走らせます(最後の行はエンターで実行)。赤字部分は適宜変更してください。
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 cd c:\openjtalk\hts_engine_API-1.10 nmake -f Makefile.mak nmake -f Makefile.mak install |
「c:\hts_engine_API」フォルダとファイルが作成されたことを確認してください。完了してもコマンドプロンプトはそのままにしておきます。
Open JTalkを導入します。「open_jtalk-1.11.tar.gz」をダウンロードして7-Zipなどで2段階に分けて解凍します。
解凍した「open_jtalk-1.11」フォルダを作成した任意のフォルダ(C:\openjtalk)へ移動します。
先程の続きでコマンドを走らせます(最後の行はエンターで実行)。赤字部分は適宜変更してください。
cd c:\openjtalk\open_jtalk-1.11 nmake -f Makefile.mak nmake -f Makefile.mak install |
コマンド上でエラーが表示されますが問題ありません。
「C:/open_jtalk/bin/open_jtalk.exe」が作成されているか確認しましょう。
また、「open_jtalk_dic_shift_jis-1.11.tar.gz」をダウンロードします。
7-Zipなどで2段階に分けて解凍し、解凍後のフォルダを「dic」へ変更します。
「c:\open_jtalk\bin」の中へ移動してください。
ボイスデータは下記サイトの「~m001-1.05.tar.gz」をダウンロードします。
7-Zipなどで2段階で解凍し、「~.htsvoice」を「c:\open_jtalk\bin\」へコピーします。
音声テストをしましょう。メモ帳などで「input.txt」の名前で読み上げたい内容を簡単に入力して作成します。
下記コマンドを入力してください。
cd C:/open_jtalk/bin open_jtalk.exe -m nitech_jp_atr503_m001.htsvoice -x dic -ow output.wav input.txt |
「output.wav」が生成され、「input.txt」の内容が再生されれば成功です。
ffmpegのインストール
次にffmpegのインストールをします。下記サイトへアクセスしてWindowsマークをクリックしましょう。
「Windows builds from gyan.dev」を利用します。
「ffmpeg-release-full.7z」をダウンロードします。
7-Zipなどで解凍し、フォルダ名を「ffmpeg」に変更します。
「ffmpeg」フォルダを「c:\open_jtalk\bin」へ保存します。
先程環境変数を変更した場合同様に、「c:\open_jtalk\bin\ffmpeg\bin」をPathの環境変数として(Win8.1以前は「;」で区切り)追加してください。
ffmpegが問題なく実行できるかどうかは「ffmpeg -version」コマンドが通るかどうかで確認します。
Botのコーディング作業
Discordの読み上げbotはコードを実行して利用します。下記のサイトのコード(2種類)をコピペしてメモ帳で作成し、同じファイル名で「UTF-8」で「c:\open_jtalk\bin」へ保存しましょう。
作成した「read_bot.py」の一番下の「あなたのTOKEN」部分には「Bot Tokenの設定」のTokenを貼り付けて保存します。
コードの編集は可能ですが、プログラミング言語の知識がある人向けです。そちらの知識がなくここで手詰まりになった場合、まずは言語の知識をつけることをおすすめします。
使い方
「read_bot.py」ファイルをコマンドプロンプトにドラッグアンドドロップします。
エンターキーで実行しましょう。
読み上げbotがDiscordのサーバーにログインします。
適当なボイスチャンネルに参加し、テキストチャットで「.join」と送信しbotをボイスチャットに参加させます。
botに読み上げて欲しい内容をテキストチャットに入力すれば読み上げてくれます。
botを退室させる際は「.bye」とテキストチャットで送信してください。
最後に
botの作り方は、プログラミング言語の知識ある人には難しいものではないものの、ない場合はコーディングなどコピペでもエラーが生じた場合などきつい部分があります。ある程度の知識がある場合に作成してみてください。