この文章ではKoeを起動するための手順を説明します。
読み上げ音声の合成は非常に負荷の大きい処理です。Koeを実行するコンピュータの性能が低い場合、テキストチャンネルにメッセージが送信されてからボイスチャンネルで読み上げられるまでの遅延が大きくなります。
Koeが使用している音声合成エンジンであるVOICEVOX ENGINEでは、音声合成処理にCPUまたはGPUを使用することができます。Botを快適に使用するには高性能なCPUまたはGPUと2GB以上のメモリを搭載したマシンが必要です。
参考までに、@ciffeliaが使用しているマシンでの遅延は以下の通りです。
- CPU: Ryzen 5 5600X: 1秒程度
- CPU: Raspberry Pi 4 (8GB): 15秒程度
- GPU: RTX 3070: 1秒程度
※起動直後はモデルの初期化処理が行われているため、遅延がより大きくなります。
Koeの実行にはDockerおよびDocker Composeが必要です。あらかじめインストールしておいてください。なお、Koeが動作するにはRedisとVOICEVOX ENGINEが必要ですが、これらはDocker Composeを用いて起動するため事前のインストールは不要です。
- Discord Developer Portalを開き、新しくアプリケーションを作成します。
- General Informationページに記載されているApplication ID (Client ID)を控えておきます。
- DescriptionにVOICEVOXや各音声ライブラリのクレジット、使用上の注意事項などを入力します。ここで記入した内容はBotのプロフィールに表示されます。
- Installationページに移動し、Install LinkをNoneに設定します。
- Botページに移動します。
- Reset TokenをクリックしてTokenを生成し、控えておきます。
- Public Botを無効にします。
- Message Content Intentを有効にします。
- 画面下部のSave Changesをクリックして設定を保存します。
参考: プロフィールの記入例
KoeはVOICEVOX及び以下に記す音声ライブラリを用いて音声合成を行っています。VOICEVOXや各音声ライブラリの利用規約を遵守してご利用ください。
四国めたん、ずんだもん、春日部つむぎ、雨晴はう、波音リツ、玄野武宏、白上虎太郎、青山龍星、冥鳴ひまり、九州そら、もち子(CV: 明日葉よもぎ)、剣崎雌雄、WhiteCUL、後鬼、No.7、ちび式じい、櫻歌ミコ、小夜/SAYO、ナースロボ_タイプT、†聖騎士 紅桜†、雀松朱司、麒ヶ島宗麟、春歌ナナ、猫使アル、猫使ビィ、中国うさぎ、栗田まろん、あいえるたん、満別花丸、琴詠ニア、Voidoll(CV: 丹下桜)、ぞん子、中部つるぎ、離途、黒沢冴白、ユーレイちゃん(CV: 神崎零)、東北ずん子、東北きりたん、東北イタコ
以下のURLにアクセスしてサーバーにBotを追加します。URLのCLIENT_IDは先ほど控えたApplication IDに置き換えてください。
https://discord.com/api/oauth2/authorize?client_id=CLIENT_ID&permissions=3146752&scope=bot%20applications.commands
Botを他のサーバーにも追加したい場合は、このURLに再度アクセスしてください。
参考: Koeが使用する権限
- OAuth2 Scopes
application.commandsbot
- Bot Permissions
- General Permissions
- View Channels
- Voice Permissions
- Connect
- Speak
- General Permissions
- 最新のリリースを開き、
koe_x.x.x.zipをダウンロードします。 - ダウンロードしたアーカイブを展開します。以後、このディレクトリの中で作業を行います。
config/redis.confをテキストエディタで開きます。YOUR_STRONG_PASSWORDを適当なパスワードに変更します。
config/voicevox_presets.yamlをテキストエディタで開きます。- 必要に応じてプリセットを変更します。プリセットは最大500個まで設定できます。
config/koe.yamlをテキストエディタで開きます。- 次の設定を書き換えます。
discord.client_id: 1-1で控えたClient IDdiscord.bot_token: 1-1で控えたBot Tokenvoicevox.api_base: VOICEVOX ENGINEのURL- Docker Composeを使用する場合はデフォルトのままで問題ありません。
redis.url: Redisに接続するためのURL- 形式は
redis://[<username>][:<password>@]<hostname>[:port][/<db>]です。 - Docker Composeを使用する場合は
YOUR_STRONG_PASSWORDをRedisのパスワードに置き換えるのみで問題ありません。 - 詳細は https://docs.rs/redis#connection-parameters をご確認ください。
- 形式は
docker-compose.ymlから下記の環境変数を設定することができます。いずれも原則として設定する必要はありませんが、デバッグ時に役立ちます。
KOE_CONFIG: 設定ファイルの場所- デフォルトでは
/etc/koe.yamlとなっています。
- デフォルトでは
RUST_LOG: ログレベルkoeに設定すると詳細なログが出力されます。- 詳細は https://docs.rs/env_logger#enabling-logging をご確認ください。
下記のコマンドで開始・停止等の操作を行うことができます。詳細は https://docs.docker.com/compose/ をご確認ください。
docker compose up --detach- Koe, Redis, VOICEVOX ENGINEを起動します。
docker compose logs- ログを確認します。
docker compose down- Koe, Redis, VOICEVOX ENGINEを停止します。
docker compose down --volumes- Koe, Redis, VOICEVOX ENGINEを停止し、Redisに保存されている設定をすべて削除します。
docker compose pull- コンテナイメージを更新します。
不明な点がありましたらDiscussionsでご相談ください。
Koeが使用している音声合成エンジンであるVOICEVOX ENGINEでは、音声合成処理にNVIDIAのGPUを使用することができます。GPUを使用するには、docker-compose.ymlを以下の手順で編集してください。
voicevox/voicevox_engine:cpuをvoicevox/voicevox_engine:nvidiaに変更します。voicevoxサービスに以下の行を追加します。
deploy:
resources:
reservations:
devices:
- capabilities: ["gpu"]
runtime: nvidia編集後のvoicevoxサービスの例を以下に示します。
voicevox:
image: voicevox/voicevox_engine:nvidia-...
restart: unless-stopped
expose:
# ...
volumes:
# ...
healthcheck:
# ...
deploy:
resources:
reservations:
devices:
- capabilities: ["gpu"]
runtime: nvidiaKoeを同じDiscordサーバーの複数のボイスチャンネルで同時に使用するには、Botを複数インスタンス起動する必要があります。手順は以下の通りです。
- Koeの設定ファイル
koe.yamlをコピーして複数用意します。例えばkoe2.yaml、koe3.yamlのようにします。 - 新しいBotを作成し、各設定ファイルの
discord.client_idとdiscord.bot_tokenをそれぞれ異なるものに変更します。Botを作成する手順は、セットアップガイドの「Discord Botの登録」を参照してください。 docker-compose.ymlのappサービスをコピーして複数用意します。例えばapp2、app3のようにします。それぞれ参照するKoeの設定ファイルをkoe2.yaml、koe3.yamlに変更します。redisサービスとvoicevoxサービスは1つだけで問題ありません。
以上の手順を実行すると、docker-compose.yamlは次のようになるはずです。
services:
app:
image: ghcr.io/ciffelia/koe:...
# ...
volumes:
- "./config/koe.yaml:/etc/koe.yaml:ro"
# ...
app2:
image: ghcr.io/ciffelia/koe:...
# ...
volumes:
- "./config/koe2.yaml:/etc/koe.yaml:ro"
# ...
# ...