Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

辞書の形式に関しての意見 #1055

Closed
misogihagi opened this issue Feb 16, 2024 · 9 comments
Closed

辞書の形式に関しての意見 #1055

misogihagi opened this issue Feb 16, 2024 · 9 comments
Assignees

Comments

@misogihagi
Copy link
Contributor

#715

にも関連してですが、
辞書が使いづらいです。

MeCabの辞書に準拠しているかと思えばコストが抜けています。(参考:https://github.com/taku910/mecab/blob/master/dic.html#L86)

MeCab形式で置いてある辞書もあるのでそれを使いたいです。

@Hiroshiba
Copy link
Member

なるほどです!!

mecab準拠にすると、mecabを知らない大多数の人にとって使いづらくなってしまいます。
とはいえ現状だと辞書に機能が足りないと思います。

少し議論を深められると嬉しいです。
どのようなことを、なぜ実現したく、どうすれば解決可能でしょうか。
VOICEVOXにとってのメリット・デメリットも教えてください!

@Hiroshiba Hiroshiba changed the title 辞書の形式に関して 辞書の形式に関しての意見 Feb 16, 2024
@Hiroshiba Hiroshiba added the 要議論 実行する前に議論が必要そうなもの label Feb 16, 2024
@Hiroshiba
Copy link
Member

@misogihagi どうでしょう 👀

お返事なさそうであれば、issueをいったんcloseしていろんな方のコメントをお待ちするのもありかもです!

@misogihagi
Copy link
Contributor Author

@Hiroshiba
voicevoxでは英語をそのまま読めず、アルファベットをそのまま読み上げてしまいます。
適当に探したら困っている人を他にも見つけました→https://qiita.com/fwatty/items/c9655188b41b55b23459

対策としては英語が出るたびに辞書に単語とその読み方を追加するのが挙げられます。

今の所voicevoxでメンテしている辞書がない(はず)のでunidicなどの外の辞書を使うことになると思います。
そこのところの手引きもあったほうがいいとは思いますが…

元のデータファイルはmecab形式なのでそれをインポートするときはvoicevoxの辞書というよりはmecabの形式のほうが連携しやすいと思いました。

@sabonerune
Copy link
Contributor

VOICVOXの辞書はOpenJTalkのものを使っています。
これはNAIST-JDICにアクセント情報を追加したものでunidicとは品詞体系等が異なるためそのまま使うことができないはずです。

@Hiroshiba
Copy link
Member

Hiroshiba commented Mar 20, 2024

@misogihagi なるほどです!! 詳しくありがとうございます。
(直接関係ないかもですが、英語をなんとかしたい気持ちは結構あります。)

costに関しては事情があってpriorityに変えています。このあたりです。

word["priority"] = _cost2priority(word["context_id"], word["cost"])

ちなみにこれは元の辞書が変わった場合costが変わってしまうので、prioirtyとして独自に管理することで将来の辞書変更に備えたためです。

mecab形式の辞書→VOICEVOXのユーザー辞書の変換ツールがあると便利そうなのかなと思いました。
ちょっとVOICEVOXとしてそのツールを作成・メンテするのは難しいかもですが、変換ツールを作るサポートであればできるかもしれません。


@sabonerune さんもありがとうございます。
たしかにアクセント位置がない場合は難しいことを考慮できていませんでした、助かりました 🙇

@takana-v
Copy link
Member

unidicなどの外の辞書を使うことになると思います。

現状のVOICEVOX(というかOpenJTalk)は、NAIST-jdicとUniDicを両方使っています。
(以下のnaist-jdic.csvとunidic-csj.csvが該当のファイル)
https://github.com/VOICEVOX/open_jtalk/tree/1.11/src/mecab-naist-jdic

事情があってpriorityに変えています。

こちらに関してですが、一般ユーザーにとってコストという概念は理解が難しいため、分かりやすいpriorityにしたという理由もあった記憶があります。

MeCab形式で置いてある辞書もあるのでそれを使いたいです。

default.csvに書かれた内容は、自動的にユーザー辞書としてコンパイルされて読みの推定に利用されます。
https://github.com/VOICEVOX/voicevox_engine/blob/master/default.csv
そのため、default.csvにOpenJTalk形式の辞書を書き込むことで、一応実現可能です。
(これは意図された機能ではないため、推奨はしません)

なお、MeCab形式の辞書をOpenJTalk形式の辞書に変換するためには、Mecab形式の辞書データの後ろに、以下の情報を付け足す必要があります。
アクセント核/モーラ数, アクセント結合規則
つまり、全て書くと、以下のようになります。
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音,アクセント核/モーラ数,アクセント結合規則

アクセント核位置についてはtdmelodicのマニュアル、アクセント結合規則についてはUniDicのマニュアルを読むと理解が深まるかもしれません。

@tarepan tarepan added the 状態:必要性議論 必要性を議論している状態 label Apr 2, 2024
Copy link

本 Issue は直近 30 日間で活動がありません。今後の方針について VOICEVOX チームによる再検討がおこなわれる予定です。

@Hiroshiba
Copy link
Member

@takana-v さん、詳しくありがとうございます!!

必要性ですが、一旦現状のままで進める形が良いのかなと思いました。

  • アクセントがない場合辞書として使えないので、mecabの辞書がそのまま使えないのは問題がない
  • cost→priorityにしているのは結構良い仕様だと考えている
  • 仮にmecabからVOICEVOX用辞書に変換するコードを実装する場合、独自に作ってもそこまで難しくない

ということでcloseの方針が良いのかなと思いました!
議論ありがとうございます!!

@Hiroshiba Hiroshiba closed this as not planned Won't fix, can't repro, duplicate, stale May 22, 2024
@Hiroshiba Hiroshiba removed 状態:必要性議論 必要性を議論している状態 非アクティブ labels May 22, 2024
@tarepan tarepan removed the 要議論 実行する前に議論が必要そうなもの label May 22, 2024
@misogihagi
Copy link
Contributor Author

もともとは辞書の形ではなく英単語をそのままアルファベットを読み上げることでしたが…
別のissueに立てるorもう立っているのであればcloseでいいです

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants