Giter Club home page Giter Club logo

voicevox-tts-discord's Introduction

Kana

Discord.jsを利用した様々なエンジンを利用できる高性能なDiscord読み上げボット

Features

  • Discord上で完結するUI
  • 個人が運営することを想定した仕様
    • DBを採用しないことで扱いやすくなったサーバー設定ファイル
    • 異なる運営者のBot間でも互換性が高いボイスID
    • コマンド実行時に処理されるデータ書き込み
    • Webダッシュボードなし
  • 強力な辞書機能
  • 必要十分以上の基本機能
    • チャンネル、カテゴリを指定した読み上げ
    • 自動接続設定
    • 自動切断
    • 読みやすいヘルプ
    • サイレント返信化できるオプション
  • オーバースペックな声関連機能
    • エンジン間の差異を感じさせないマルチエンジン実装
    • 各ボイスの音量差を吸収する実装
    • わかりやすい声設定UI
    • 直感的な値の声パラメーター
    • グローバルとサーバーで切り替えられる声設定
    • 人の声設定も見れる声設定表示コマンド
    • ふっかつのじゅもんを利用した声設定の持ち運び
  • 遊びしかない変な機能
    • こっそり人の声で発言するコマンド
    • 読み解析をアホにする機能

インストール

Linux向け

https://github.com/notoiro/kana/blob/master/docs/setup_linux.md

Windows向け

https://github.com/notoiro/kana/blob/master/docs/setup_windows.md

使い方

https://note.com/notoiro/n/nab874c35d3ab

dictionaries以下のファイルについて

Kagome frontで利用されている形態素解析辞書、Neologd辞書はネット辞書であるというその性質上、間違った読み、自動化のミスによる異常な読み、極端に特定の界隈に偏った略語、一般的ではあるが問題のある略語などを含みます。

このボットでは対策として置換時に辞書上の表現と完全一致でマッチさせ、英字の場合は更に3文字以上の場合のみマッチにする対策を取っていますが、それでもおかしい読みがある場合の対策にKagomeの分かち書き単位で置換する辞書を用意しています。

dictionaries/fix_neologd.jsonはボット運用時に判明した怪しい読みを比較的普通の読みに置換する目的でリポジトリに含まれています。

dictionaries/lite_neologd.jsonは面白くないやつだけ直す目的で利用できます。

このファイルはCC0 1.0 または NYSL 0.9982で利用できます。

voicevox-tts-discord's People

Contributors

notoiro avatar ytjvdcm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

ytjvdcm

voicevox-tts-discord's Issues

グローバル辞書機能の実装

概要

現時点で主に英単語周りの読みが壊滅的なので、Kagomeによる形態素解析による読み補正に加え、別途全サーバーにおいて作用するグローバル辞書機能の実装を提案します。

実装案

現時点でグローバル辞書自体は辞書ファイルをサーバー側に登録し、それに準じた変換をテキスト処理の段階で行う

原則としてユーザー辞書を優先し、Kagome側で処理可能な固有名詞はそちらを優先したいため、fix_reading時にグローバル辞書の適用を行うのが無難?

グローバル辞書ファイルの実装

グローバル辞書の定義ファイル格納用ディレクトリを新規に作成し、その中に辞書変換定義ファイルを配置する方式が無難そう。
ファイル形式やフォーマットについては議論の余地あり。

備考

全サーバーに影響する内容であるため、現時点でユーザーサイドからの登録機能については考えないものとする。
(これについては実装する場合、別途issue立てを行ったほうが良さそう)

辞書のページング

マルチエンジン化の過程でページングを覚えたので全部出るようにする

ニックネームの読み対策

リクエスト。
ユーザーごとに呼び方を変える実装をうまいこと考える

  1. ユーザーごとに名前の参照元を切り替える実装を持つ?
  2. ユーザーごとに名前の変換システムを持つ?
  3. サーバーごとかつユーザーごとに名前の変換システムを持つ?

既存の対策

  • サーバーごとの辞書機能がすべての文字列に適用されるのでそれでやってねってスタイルになってる。
  • 辞書優先度の実装もこれに近い目的といえばまあってぐらい。

より簡易に実行できる環境の構築

依存が全部単体実行可能なもので、なおかつFFmpegはポータブル版があるので理論上はワンクリックで動くボットが作れる。
ただしWindowsユーザー向けに雑でも使えるようにする必要はある

音量()の削除

マルチエンジン化による音量の平均化の結果として、このオプションを実装する場合、再エンコードが必要になるため。

使われてないので消してもいいかなとは思うけど流石に非互換なので次のリリースで切る。

名前の変更

マルチエンジン化によりVOICEVOXでもなくなったので名前を変える

チャンネルの紐づけ

どこで接続かけてもそのボイスはそのテキストチャンネル!って感じで監視のチャンネルは固定でやる機能。
ボットによっては自動接続あるけどうざいのでつけない。

カテゴリ接続

カテゴリ内のテキストすべてを監視して接続するやつ。最近だとよくあるのかな?

Kagomeのトークン単位で置き換えする辞書

Neologd特有のカスの英語読みがあるのでこれの対策をする。
特に2文字は魔境。

形態素解析による分かち書き自体は優秀なので、読みが怪しい物だけ辞書置換することで高品質な読みのみを利用することができるはず。

Opus変換機能のコンフィグ

事前に変換する機構が安定化や最適化に効果あるのかはわからないけど、いじれる項目ある関係上コンフィグはあったほうがいい

  • On/Off
  • ビットレート
  • スレッド数

ぐらいかな?

VCチャンネルに自動参加させる機能を実装させたい

初めまして。
こちらのBOTをローカルのWindows上で使わせていただきたいと思っております。
ですが、個人的に必須である、VCチャンネルに誰かが参加した時にBOTを自動参加させるという機能の実装に難航しております。
当方プログラミングの知識に乏しいため、もしよろしければ具体的なコード案をご教示頂けませんでしょうか?
お忙しいところ申し訳ありませんが、よろしくお願いいたします。

サイレント返信の有効利用

そもそもサイレントであるべきだろってやつをサイレントにしたりサイレント化のオプションを作ったりする

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.