Skip to main content

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 をお読みください。

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jtalkbot-0.8.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jtalkbot-0.8.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file jtalkbot-0.8.0.tar.gz.

File metadata

  • Download URL: jtalkbot-0.8.0.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for jtalkbot-0.8.0.tar.gz
Algorithm Hash digest
SHA256 571da5a540f24004a78533ac3b47057841a9d36755490f707e35dde2ef723788
MD5 b6c1a61c48771345de2bfd1843937cc9
BLAKE2b-256 8af1d81569135db4b98129d4b9e87b5dde5bd24cfc852dc87b1d4a3ed6e069b6

See more details on using hashes here.

File details

Details for the file jtalkbot-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: jtalkbot-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for jtalkbot-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d6e3875cf7bdf06324bc8522eee7973c8b9e3d7c4ceb367c70113b317456f8d7
MD5 ba151c27c10297799f002c31a64d1ffe
BLAKE2b-256 f01cee7280968eecf86b911a7df73c1f195d9ef81aa2fa524d9a496cfabf2119

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.1

2 files

This release

0.8.0 This release

2 files

0.6.1.3

2 files

0.6.1.2

2 files

0.6.1.1

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.3

2 files

0.4.1

2 files

0.4.0.post2

2 files

0.4.0.post1

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page