概要
少し前に作ったDiscordのテキスト読み上げBOTを作り直す機会があったのでまとめてみた。読み上げBOT自体はすでに前例があり、あんまり新規性のない内容ですがご容赦くださいませ。
この記事は Sansan Advent Calendar 2018 - Adventar の24日目の記事です。
Discordとは
- ゲーマー向けのボイスチャットツール。Skype, TeamSpeakよりもSlackに似てると思う
- Slackだとチャットも通話も同じチャンネルだが、Discordではテキストチャンネルとボイスチャンネルが別れている
- Discordにはスレッドが存在しない。よりチャットライクに使われていると思う
- Skypeに比べて軽い。PCゲームするときに並列起動することを考えると嬉しい
- 自作Botを登録して使うことができる。Python, Ruby, Node.jsなどの人気な言語にはモジュールが用意されており、お手軽にBotを作ることができる
- テキストチャンネルだけでなく、ボイスチャンネルに接続するBotも作れる
読み上げBotとは
テキストチャンネルのメッセージを音声に変換して、ボイスチャンネルに流してくれる
解決したかったこと
- ここで書かれているが、喋れない人はテキストチャットを使っても確認されるまでのタイムラグのせいで会話が上手く噛み合わないことがある
- Discordには標準でテキスト読み上げ機能があるが、以下の少し使いづらいところがある
- 読み上げる対象チャンネルが,
すべて
,いずれか1つ
しか選べない - スマートフォンアプリでは読み上げに対応していない
- 読み上げる対象チャンネルが,
構成/工夫したとこ
セットアップ、使い方はGitHubの方に載せています
- 読み上げ対象のチャンネルのテキストを音声ファイル(mp3)に変換、Botが接続したボイスチャンネルで音声ファイルを再生する
- 音声ファイルへ変換する部分はAmazon Pollyを利用
- 読み上げ対象のテキストチャンネルは環境変数で好きなように設定できる
- 読み上げ時、Discordのユーザ名を追加して再生するようにしている。ユーザ名が長いと煩わしくなってくるので、読み上げ時の名前を設定するコマンドも追加した
- Discord, AWSの設定は以下を参照
- DiscordのBotを作ってみよう! | 東京工業大学デジタル創作同好会traP
- AWS アカウントでの IAM ユーザーの作成 - AWS Identity and Access Management
AmazonPollyFullAccess
をアタッチ。必要に応じて権限を絞る
ECS&スポットインスタンスで稼働(予定)
今後こうしたいなあという妄想。予定は未定。