-
Notifications
You must be signed in to change notification settings - Fork 120
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
ドキュメントを刷新する #532
ドキュメントを刷新する #532
Conversation
コードの補足説明は完成させてからやります... |
`$ORT_OUT_DIR`のハックが効かないため。
非常に素晴らしいと思います!!!! あ、もう遅いかもですが、1点だけ。。 修正範囲は まあでもドキュメント変更はdiffとしてわかりやすいですし、今から引き返すのが大変でしたら、 |
このPRをmain向けにしなかった理由としては、vvm-async-apiはモジュールの構造からAPIの形まで結構な別物になっているためproject-vvm-async-api ← mainのマージ時の手間が「書き直し」レベルになるかと思ったからです。範囲に留まるというより、0.14(main)の原型を留めているAPIがもうそんなに無いのではと思っています。 diffについては、ちょっと今となっては割と手遅れ感がでているのでもうdiffで考えない方がいいのではないかと思っていました。今からでもmainとのdiffを減らす努力をすべきでしょうか? |
↑のチェックボックスの半分ができていませんが、PRとして時間をかけすぎているのでdraftを外します。残りは別PRにします。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
補足:
pitch: f32, | ||
} | ||
|
||
/// AccentPhrase (アクセント句ごとの情報)。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AudioQueryがドメイン用語として運用してもよかった記憶があったのでAccentPhraseもそうしたが、こっちは「アクセント句」のままでもよかったかも。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
エンジンだとAudioQueryは「クエリ」、AccentPhraseは「アクセント句」にしてました。
ちょっとわかりづらそうだなと思ったらこっち側で改修しようと思います。(たぶんそのままで行くと思います。)
/* | ||
* 新しいエラーを定義したら、必ずresult_code.rsにあるVoicevoxResultCodeに対応するコードを定義し、 | ||
* internal.rsにある変換関数に変換処理を加えること | ||
*/ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
今となっては嘘コメントとなってしまっているため、削除。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
mainの方に「嘘コメント一掃」みたいなPRをだしてもいいのかも。
* | ||
* このライブラリの使用にあたっては次の条件を遵守しなければならない。違反は<b>未定義動作</b>(_undefined behavior_)である。 | ||
* | ||
* - 「読み込みについて有効」と説明されているポインタは次の条件を満たしていなければならない。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rustの"valid for read"と"valid for write"をどう訳したものかと思ったが、下手に他の表現にするよりはこうした上でその定義を書き下すのが最も安全かと。
@@ -21,6 +21,7 @@ pub enum OpenJtalkError { | |||
|
|||
pub type Result<T> = std::result::Result<T, OpenJtalkError>; | |||
|
|||
/// テキスト解析器としてのOpen JTalk。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
VOICEVOXにおけるOpen JTalkの役割を明記。
(Open JTalkは"text-to-speech system"であるため)
ドキュメントほんとにありがとうございます!!!
こちらの方針に賛成です。 |
#[derive(ConstDefault)] | ||
pub struct AccentPhrasesOptions { | ||
/// AquesTalk形式のkanaとしてテキストを解釈する。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AquesTalkライクな読み仮名
やAquesTalk形式のkana
が何箇所かあるのですが、AquesTalkライクな記法
で統一しようかな〜とちょっと思いました!
良さそうだったらこちらでやろうと思います。
ちなみにエンジンはAquesTalkライクな読み仮名
とAquesTalkライクな記法
が混ざってて、まあ読み仮名というよりは記法だよな〜と。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
「AquesTalk形式のkana」よりは十分に良い...と思うのですが、ユーザーにとっては今度は「"ライク"って何やねん」という疑問が生じそうな気もします。いっそのことドメイン用語"kana"として確立してしまうというのはどうでしょうか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AquesTalkライクな記法
がそこそこわかりやすい+誤解ない感じで良いかなと思いました!
kanaも読み仮名と同様、ルビとかカタカナあたりと勘違いされる気がしてます。
ライクってなんやねんとは思いつつ、まあいま出てる候補の中ではAquesTalkライクな記法
が一番良いかなぁと。
イマイチだとは思っているけど、エンジン側と歩調合わせないとだし、一旦後回しにしたい気持ちです。とりあえず↓のタスクに追加しておきました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ここもどうしましょう? あまり賛成できない感じであれば一旦マージした後にこちらで勝手に統一しようかなと考えています。
以下整理です。
- 統一はmustだと思う
- 「読み仮名」は定義を間違えている(アクセントは仮名ではない)のでmustで避けたい
- 「kana」はドメイン用語を別定義しないといけない+読み仮名と勘違いされうるのでshoudとwantの間くらいで避けたい
- 「AquesTalk形式な記法」は、厳密に言うとAquesTalkと異なるのでwantくらいで避けたい
- 残るのが「AquesTalkライクな記法」くらいしかなく、エンジンと揃える意味でもこれにしておきたい
- けど、ある程度の間違いは許容して伝わりやすさを優先して「AquesTalk形式な記法」はアリかも
(ChatGPTに聞いたら「AquesTalk風記法」を提案されました。少なくともVOICEVOXがバージョン1になる時はおそらくこの名称になると思います。。)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@qryxip こちらどうしましょう? 👀
任せますと言っていただければとりあえずこちらで統一しておきます 🙏
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ひと通り見ました! ほぼLGTMです!!
本当にお疲れ様でした!!!!
用語をエンジン側に合わせてくださりつつ、明瞭性が足りない部分は最小限の追加で補ってくださっているのを感じました。
とても助かります、ありがとうございます。
このあたり結構たいへんだったとかあれば知見のためにお聞きしたいです。
なんとなくですが、たぶんSafety項目のメンテナンスは正直難しいだろうなと感じました。
だいぶ深い知識が必要なことと、正確であることを担保し続ける労力がとんでもないので・・・。
ほぼ定型文なので、ドキュメントを作る関数にできたりしたらメンテナンスだいぶ楽になるかもとかは感じました。
vvmファイルへのパス | ||
VVMファイルから ``VoiceModel`` をコンストラクトする。 | ||
|
||
:param path: VVMファイルへのパス。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sphinxは、
napoleonという拡張でNumPyスタイルのドキュメントでもいい感じにパースしてくれて:https://www.sphinx-doc.org/ja/master/usage/extensions/napoleon.html
MyST-ParserでMarkdownをパースしてくれるようになります:https://www.sphinx-doc.org/ja/master/usage/markdown.html
個人的には:reSTよりMarkdown+NumPyスタイルのdocstringの方が書ける人が多くて楽かなと思います。(その分依存が増えますが。ここら辺の意見を聞きたいです:@Hiroshiba )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あまりこだわりなかったのですが、まあ特にこだわり無いならエンジン側に合わせてNumPyスタイルが良いのかなぁという気はします。
rst形式に特に問題を感じなかったのですが、napoleonのドキュメント読んだ感じ、型情報が書きづらい感じなんですかね。
- どちらかというとNumPy形式のが良いけど別にrst形式でもOK
- 改修に抵抗なければ改修が良いけど面倒なら一旦そのままでOK
って感じですかね〜
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
napoleonを使うとして、このPRでやった方がいいですかね?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
5段階中2くらいのやったほうが良さかなと思いました!
マージ優先かな~と。やるやらはともかく、タスクリストにぽんと書いといてresolveにしちゃうのどうでしょう。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらどうしましょう?
とりあえずissueのタスクリストに追記してしまって、一旦ここはresolveにするのが早いかなと思いました!
|
Co-authored-by: Hiroshiba <[email protected]>
|
あと1点AquesTalkライクな記法のとこだけかなと!! |
|
AquesTalk風記法で統一されたんですね! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!!!!!!!!!!!
読み応えのあるしっかりしたドキュメントになったと思います!ほんとにありがとうございました!!!!!
そういえばREADMEからPython APIのリンクが無いですね!思い出したときにでも足しちゃおうと思います!
あとはどれだけ使いやすくしていけるかなのかなと思いました!!
あとデータ構造の整理と。。
- example/下のサンプルコードではまだspeaker_id (話者ID)という表現になっているため、style_id (スタイルID)に改める
PRのdescriptionに書かれてるこちらの内容、忘れそうだなとちょっと思いました!
マージします!!! |
他のものも含めissue化し、 #545 のタスクリストにも追記しました。 |
こちらに答えると、一月以上要してしまったため最初の記憶が曖昧なのですが、大変だった順だと次のようになるかと思います。
safety documentationがやっぱりハードでした。そもそもC ABIを通じたユーザーに何を要求すればよいのかを考えるところから始まりましたし、いざ書こうとしても用語の日本語訳が探しても無いという事態に遭遇しました。"valid for reads" → "読み込みについて有効"とか未だにこれでよいのかと思ったりします。 |
ありがとうございます、非常に参考になります!!
日本語化が難しいというのは盲点でした。お聞きして良かったです! そういえばRustコミュニティの発表会みたいなのってありませんでしたっけ。Scala祭りにみたいな。
これはなるほどです。 やるかやらないかさておいて、ドキュメントの修正を気軽に受けられるような仕組みを作っておくと、間違っていたとしても修正提案を受けやすいのかなと思いました! |
rust-jpのZulipで話題に出すのでもよさそうな気がしました。まあ考えておきます。
Rust.Tokyoですね。10月開催で、登壇は7月〆のようです。来年mobileと、 #550 と、Rust API提供と、 然るべきコントリビューションガイドの作成と、その他面白そうなことが為せていれば考えてもいいかもしれません。 まあ今回は初回(2019年)ぶりの会場開催で、行くつもりなので、話の流れで出せそうなら出そうかなと思っています。あとは5分10分のLT会は定期的にちょくちょくあった気がします。
確かに考えてもいいかもしれません。 |
イベント参加いいですね!!! |
内容
Rust/C/Python APIのドキュメントを刷新します。
speaker_id
(話者ID)という表現になっているため、style_id
(スタイルID)に改める# Safety
もしっかり記述する# Errors
/# Panics
やSphinxの:raises:
でしっかりと記述するRust APIについては、どちらかというとC APIとPython APIの表記を取り纏めるために書きました。
今回は諦めるもの
schemarsでRustの型からJSON Schemaを出力できるようにして、そのJSON SchemaのJSONをそのまま貼ればいいんじゃ? と思ってます。
手元でのドキュメントの生成と、その生成先
Rust API:
❯ cargo doc -p voicevox_core --document-private-items
Rust APIはAPIとして公開されることが想定されていない構造になっているため、
--document-private-items
が無いとドキュメントが書かれているべき箇所が一部隠れてしまいます。生成先はtarget/doc/voicevox_core/index.htmlです(生成時に
--open
を付けるとそこが自動で開かれます)。C API:
生成先はpublic/apis/c_api/voicevox__core_8h.htmlです。
Python API
❯ sphinx-build docs/apis/python_api public/apis/python_api
生成先はpublic/apis/python_api/autoapi/voicevox_core/index.htmlです。
関連 Issue
その他