Discord 読み上げBOT「ShabeleA」について

2020年8月3日

概要

ShabeleA」はゲーマー向けのチャットツール「Discord」のチャットを読み上げBOTです。

ボイスチャットで喋ることができる人と、様々な事情で声を出せない人(いわゆる聞き専)の方とのコミュニケーションを円滑にします。

「ShabeleA」をボイスチャットに接続すると、普段通りテキストチャットに発言するだけで、あなたの代わりにBOTが喋ってくれます

例えばゲーム中など、喋ってる人がチャットを見れないときなどに効果を発揮します。

同種のBOTは複数存在しており、無料で利用できるものもありますが、「ShabeleA」はCAMPFIRE communityにてメンバーになっていただくことで利用できるようになります。

有償としている理由

・利用サーバー数を事前にコントロールし、BOTの動作を安定させるため。
・利用サーバ数や、サーバへの負荷が増大した場合に円滑にサーバの追加やスペックアップを行うため。
・BOTの機能追加や改善のための人件費を賄うため。

私自身、無料の同種BOTの利用者でしたが、最近のユーザ数増加による読み上げの遅延等で使い物にならなくなってしまったため、自作いたしました。

そのため、利用者数を常に把握し、増えた場合はそれに合わせてサーバの追加・スペックアップ)を行うため、いつでも(Discordの利用者数の多い夜8時~24時の時間帯であっても)安定して利用できるます。

導入方法

BOTの導入

CAMPFIRE communityのコミュニティへ参加

「ShabeleA」を使用するにはCAMPFIRE communityのコミュニティへの参加(月額:500円)が必要です。
下記のリンクからCAMPFIRE communityへアクセスし、登録をお願いします。

CAMPFIRE community 「Discordのチャット読み上げBOT「ShabeleA」の運営・改良」

BOTをサーバへ招待

CAMPFIRE communityでコミュニティへ参加すると、メールでBOTの招待用URLと利用登録の方法が記載されたメールが届きます。

まずは、メールに記載されている招待用URLへアクセスし、利用したいサーバへBOTを招待します。
※もしサーバーの管理者ではない場合、招待用URLをサーバの管理者に伝えて招待を依頼してください。

BOTに必要な権限について

BOTの招待時に自動で必要な権限(VCへの接続や、メッセージ送信など)を付与するようになっています。
サーバーや、チャンネル単位でこれらの権限を無効化した場合、動作しなくなるのでご注意ください。

サーバーへ招待できると右のメンバー一覧に「ShabeleA-WHITE」が追加されます。

BOTの利用登録

Discordのテキストチャンネルで次のコマンドを発言します。

!shw campfire {あなたのCAMPFIRE ID} ※!shw とcampfireと {あなたのCAMPFIRE ID}の間にはそれぞれスペースを空けてください。

ID入力時の注意

・定期的にCAMPFIRE communityのメンバー一覧と一致しないIDで登録されたサーバは利用権限をクリアしているので、IDの入力時に誤りがないようにご注意ください
・メンバーであるのに利用権限がクリアされた場合は再度上記のコマンドを実行することで利用可能になります。
・IDの入力を誤った場合、再度登録コマンドを使用して上書きしてください。

登録が完了した場合、下記のようなメッセージが表示され、「ShabeleA」が使用可能になります。

BOTの使用方法

メニューから使用する場合

「ShabeleA」はメニューから主要機能が使える点が、他の読み上げBOTとの大きな違いで特徴の一つです。

メニューを開くにはチャットで「m」(半角小文字)、「m」(全角小文字)のどちらかを発言します。

そうすると「ShabeleA Main Menu」が表示されるので、実行したい処理を選びます。

読み上げ開始

現在参加しているボイスチャットに「ShabeleA」を呼び出し、現在のテキストチャンネルに投稿されたメッセージの読み上げを開始します。

接続が完了すると、接続終了するまでの間、チャットでの発言を「ShabeleA」が読み上げてくれます。

読み上げ終了

ボイスチャットから「ShabeleA」以外の人がいなくなった場合自動で切断しますが、手動で切断させることもできます。

単語の読みを登録

ShabeleAでは単語の読みを登録することができ、チャットの発言に対して登録された読みで読み上げることができます。
※読みの上書きもこの方法でできます(一旦削除する必要はありません。)

なお、登録する単語または、読みにスペースが含まれる場合は、単語または読みをダブルクオーテーション「"」で囲って登録してください。

単語の読みを削除

登録した単語を削除することも可能です。

その他の機能

  • 単語登録の一覧
  • 読み上げ音声設定(速度やトーン、イントネーションが変更可能)
  • 名前の読み上げ設定

コマンドから使用する場合

他の読み上げBOTと同様に決まったコマンドを使うことで、各種機能を使うことができます。

読み上げ開始コマンド「!shw s」「!shw s {接続したいボイスチャンネル名}

「!shw s」の代わりに「!shw start」「!shw summon」も使用できます。

読み上げを開始する場合は、読み上げを行いたいボイスチャンネルに接続している状態で、読み上げを行いたいテキストチャンネルにて「!shw s」コマンドを実行します。

そうすると、現在入っているボイスチャンネルにBOTが接続し、コマンドを実行したテキストチャンネルの発言の読み上げを行うようになります。

もし、現在接続中ではないボイスチャンネルにBOTを接続したい場合は、「!shw s {接続したいボイスチャンネル名}」コマンドを実行します。

また、読み上げ対象のテキストチャンネルの追加は、追加したいテキストチャンネルにて「!shw s」コマンドを実行することで追加することができます。

接続に失敗するときは?

Discordのサーバー不調が原因の可能性があります。
サーバー設定のサーバ地域の変更を一度お試しください。

読み上げ終了コマンド「!shw e」

「!shw e」の代わりに「!shw end」「!shw b」「!shw bye」も使用できます。

読み上げを終了する場合は、「!shw e」コマンドを実行します。

そうすることでBOTがボイスチャットから退出し、読み上げを行わなくなります。

読み上げ中断コマンド「!shw stop」

例えば、長い文章を読み上げている場合などに、読み上げを中断(スキップ)したい場合は「!shw stop」コマンドを実行します。

そうすることで、現在読み上げているテキストの読み上げをスキップし、次の読み上げを開始します。

※読み上げ待ちのテキストがない場合は待機状態になります。

名前の読み上げのON / OFF コマンド「!shw read_name on」、「!shw read_name off」

「!shw read_name」の代わりに「!shw readname」も使用できます。

デフォルトではテキストの読み上げ時に、発言者の名前を読み上げるようになっています。

もし発言者の名前を読み上げないようにしたい場合は「!shw read_name off」コマンドを実行します。

また、名前を読み上げるように戻す場合は「!shw read_name on」コマンドを実行します。

単語の読み登録コマンド「!shw aw {単語} {読み}」コマンド

単語の読みを登録したい場合は「!shw aw {単語} {読み}」コマンドを実行します。

登録以降は、BOTがテキストを読み上げる際に「単語」を「読み」で読み上げます。

単語の読み削除コマンド「!shw dw {単語}」コマンド

単語の読みを削除したい場合は「!shw dw {単語}」コマンドを実行します。

削除後は、登録前と同じように単語を読むように戻ります。

登録した単語の一覧表示コマンド「!shw lw」コマンド

現在のサーバーで登録された単語の読みを一覧で表示するには「!shw lw」コマンドを実行します。

そうすることで、現在登録されているすべての単語とその読みを確認することができます。

登録した単語の一覧ファイル出力コマンド「!shw ew」コマンド

現在のサーバーで登録された単語の読みの一覧をファイル出力するには「!shw ew」コマンドを実行します。

そうすることで、現在登録されているすべての単語とその読みを記載したテキストファイルを出力することができます。

読み上げ音声設定コマンド「!shw status」

現在の読み上げを行う音声を確認するには「!shw status」コマンドを実行します。

設定の変更方法については下で説明します。

読み上げ音声設定コマンド「!shw {voice,speed,tone,intone,threshold,allpass} {設定値}」コマンド

音声の設定を変更します。

voiceは、読み上げを行う声のパターンを変更します。

speedは読み上げ音声の速度を変更します。0.5~2.0の間で設定可能です。

toneは読み上げ音声のトーンを変更します。-20~20の間で設定可能です。

intoneは読み上げ音声のイントネーションを変更します。0.0~4.0の間で変更可能です。

threshold,allpassは音が割れたり途切れたりするときに調整したらよいかもしれません。

volumeは読み上げ音声のボリュームを変更します。-20~0の間で変更可能(デフォルトは-6)です。

読み上げ音声について

ShabeleAでは、音声の合成に「OpenJTalk」というプログラムを利用しており、
!shw voice~volumeで設定した数値とチャットの発言内容をOpenJTalkに渡して変換しています。

プレフィックス(コマンドの前につける固定文字)の変更コマンド「!shw change_prefix」

「!shw change_prefix」の代わりに「!shw set_prefix」も使用できます。

コマンドの前につける固定文字(初期設定は「!shw 」)を変更したい場合は「!shw change_prefix {使用したいプレフィックス}を実行します。

※プレフィックスとコマンドの間にスペースを空けたい場合は、下記の例のように、ダブルクオーテーションでスペースまでを囲います。

例えば、上記のように「!sh 」にした場合は、「!sh s」コマンドでShabeleAを接続できるようになります。

また更に次のように「?」にした場合は

「?s」コマンドで接続したり、「?b」コマンドで切断することもできるようになります。

ライセンス表記

本Discord 読み上げ Bot 「ShabeleA」は下記のオープンソースソフトウェアおよびライブラリを各ライセンス内容に則り利用しています。

discord.py(BOTプログラムに利用)…MITライセンス

Open-JTalk(テキストの音声変換に利用)…修正BSDライセンス

hts_engine(テキストの音声変換に利用)…修正BSDライセンス

FFmpeg(音声の再生に使用)…LGPL ライセンス

未分類

Posted by Y-Hayase