Sign inSign up

emptypage/jtalkbot

By emptypage

Updated over 2 years ago

A Discord bot talking Japanese.

Image
0

1.3K

emptypage/jtalkbot repository overview

jtalkbot

A Discord bot talking Japanese

Discord のボイスチャンネルのチャットに書き込まれたテキストを読み上げるボットプログラムです。

動作環境

以下のプログラム/ライブラリが正常に動作しているシステムが必要です。

Ubuntu でのインストール例

Ubuntu 22.02 でのインストール例です。

$ sudo apt update
$ sudo apt install python3.10 python3.10-venv python3.10-dev libffi-dev libopus0 open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001

open_jtalk コマンドが /usr/bin/ に、辞書が /var/lib/mecab/dic/open-jtalk/naist-jdic/ に、HTS ボイスファイル nitech_jp_atr503_m001.htsvoice/usr/share/hts-voice/nitech-jp-atr503-m001/ にインストールされます。追加の音声ファイルがある場合はこれに倣うとよいでしょう。

macOS でのインストール例

macOS Sonoma 14.2 でのインストール例です。ここでは Homebrew を使っています。

% brew update
% brew install opus open-jtalk

open_jtalk コマンドが /opt/homebrew/bin/ に、辞書が /opt/homebrew/opt/open-jtalk/dic/ に、HTS ボイスファイル(複数)が /opt/homebrew/opt/open-jtalk/voice/(m100|mei)/ にインストールされます。追加の音声ファイルがある場合はこれに倣うとよいでしょう。

Docker

ボットをすぐに使える Docker イメージを公開しています。

ディレクトリ /srv/jtalkbot でプログラムを起動します。このディレクトリをローカルディレクトリにマウントすると .env ファイル(後述)を置いたりログを確認したりできます。

その他の環境では Open JTalk をソースからビルドする必要があるかもしれません。

インストール

PyPI からのインストール
$ pip install jtalkbot
Bitbucket リポジトリからのインストール
$ pip install git+https://bitbucket.org/emptypage/jtalkbot.git

依存関係が設定されているのでプログラムの実行に必要なモジュールはあわせて自動的にインストールされます。

インストールが終わると、jtalkbot コマンドが使えるようになっています。

開発者用メモ

インストールに [dev] オプションを追加すると開発用のモジュール(buildsetuptools-scm など)もインストールされます。

$ git clone https://bitbucket.org/emptypage/jtalkbot.git
$ cd jtalkbot
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install -e '.[dev]'

使いかた

Discord でのボットアカウントの登録

ポットユーザーとして Discord に接続するにはあらかじめ Discord Developer Portal でボットを登録する必要があります。

ボットの登録については下記の資料等をご参照ください。

ボットで明示的に設定する権限(Privileged Gateway Intents)は Messsage Content Intent が必要です。ポータルの設定で有効にしておいてください。また、ボットの設定からは「トークン(token)」を取得できます。この情報はボットを起動させるのに必要なので控えておいてください。

環境変数

ボットに必要な設定は環境変数から与えます。グローバルに設定したり起動時にコマンドラインで与えてもよいですが、カレントディレクトリに .env というファイルを作りこれに以下のように環境変数を記述することができます。

DISCORD_TOKEN = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
OPEN_JTALK_FLAGS = -r 1.2 -g 5.0

利用できる環境変数は以下の通りです。以前のバージョンであった設定ファイルは廃止しました。

DISCORD_TOKEN

ボットのトークンを指定します。環境変数のうち、DISCORD_TOKEN は必須です。Developer Portal でかならず取得しておいてください。

OPEN_JTALK_FLAGS

読み上げ音声の生成に使う open_jtalk コマンドに渡すオプション引数を指定できます。これにより使用する音声ファイルや読み上げ速度をカスタマイズすることができます。コマンドラインオプションによっては Discord の音声フォーマットの仕様に合わせる都合上無視されます(サンプリング周波数など)。

起動

jtalkbot コマンドを起動するとログを表示しながら待機し続けます。

% jtalkbot
INFO:jtalkbot.__main__:jtalkbot ...
INFO:jtalkbot.__main__:successfully loaded opus library: /opt/homebrew/lib/libopus.dylib
INFO:discord.client:logging in using static token
INFO:discord.gateway:Shard ID None has connected to Gateway (Session ID: ...).

ボットを停止するときは Ctrl+C を押します。

ボットの動作

ボットアカウントが招待されている Discord サーバー(ギルドともいいます)のボイスチャンネルにだれかが接続したとき、同じボイスチャンネルに同時に接続します。接続中は、そのボイスチャンネルのチャットに投稿されたメッセージを読み上げます。ボイスチャンネルからユーザーがいなくなると自身も離脱します。

現時点ではこれだけです。

参考資料
免責・許諾

MIT License です。LICENSE をお読みください。

Tag summary

Content type

Image

Digest

sha256:90770a052

Size

95.7 MB

Last updated

over 2 years ago

docker pull emptypage/jtalkbot