-
Notifications
You must be signed in to change notification settings - Fork 126
Description
内容
VOICEVOX COREのバージョン0.15をリリースするにあたってのタスクリストをここにまとめます。
Pros 良くなる点
changelogを書くために、一度ここにまとめていこうと思います。
- APIが更新されます。
- Python APIでは主要なAPiが
async
化します。C APIでも並列実行をサポートする予定です。 - 音声モデルはVVMファイルという形で扱われ、それらを実行時に明示的に読む形式となります。
- その他諸々の改善/変更があります。
- Python APIでは主要なAPiが
- ONNX Runtimeのバージョンが上がります。
Cons 悪くなる点
- APIに破壊的変更があります。
実現方法
タスクリストは随時更新します。
- 新APIのE2Eテスト
- C API
- 基本的な
tts
とか -
accent_phrase
系 -
get_version
等
- 基本的な
- Python API
- C API
- C APIの健全性(soundness)の確認
- [project-vvm-async-api] ZSTにポインタキャストして提供するのをやめる #512
- [project-vvm-async-api]
extern "C"
の生ポインタをABI互換のに置き換え #514 - C APIで
&mut VoicevoxSynthesizer
(VoicevoxSynthesizer*
)を引数に取っている関数があるが、これを&VoicevoxSynthesizer
(const VoicevoxSynthesizer*
)にする- Rustでは
&mut
が複数誕生すること自体が禁忌であるため、複数スレッドからの実行を禁止する必要がある。ただ非同期実行を念頭に置いたAPIであるので、規約で禁止するよりも内部可変性 (interior mutability)を持つ方向にした方がよい。 - mutabilityとasyncnessを仕上げる #552
- Rustでは
- [project-vvm-async-api] whlに"modelディレクトリ"を埋め込むのをやめる #522
- async/await周りを精査する
- モデルを実行するところとかは
tokio::task::spawn_blocking
で囲ったりするべきでは? [議論] プロセス分離などして、モデルの実行を同時にできるようにするべきか?- [調査]
Synthesizer
を複数コンストラクトしておけばcancellable_synthesisの機能を手直しし、「コアの並列実行機能」としてリリースする voicevox_engine#677のようにできるはずだが、それで並列実行がちゃんとできるのか?
- [調査]
- IOが発生するメソッドをすべてasync化する #667
- ONNX Runtimeとモデルのシグネチャを隔離する #675
- 入力テンソルをvisitor patternで捌く #680
- モデルを実行するところとかは
-
間違ったchar*
の解放を明示的に拒否する #500と[project-vvm-async-api] いくつかのC関数を定数にする #503を噛み合わせる ([project-vvm-async-api] mainをマージする #516 (comment))
[project-vvm-async-api] Fix up #500 #521 - [バグ] Python APIで__init__.pyでのre-exportから
StyleMeta
が漏れている - APIの形について
- [議論] 文字列の
_free
系のAPIについて (新クラス設計API #370 (comment)) - [project-vvm-async-api]
voicevox_{,synthesizer_}is_loaded_voice_model
#523 - [議論]
voicevox_synthesizer_audio_query
→voicevox_synthesizer_create_audio_query
? (新クラス設計API #370 (comment)) - [project-vvm-async-api] いくつかのC関数を定数にする #503
- [project-vvm-async-api]
get_supported_devices_json
をfallibleに #502 - [議論] Open JTalkは"text analyzer"のように抽象化した方がいいのではないか? (名前の破壊的変更をやるなら今がベスト)
- [議論] ロガーの初期化はオプションなりで明示的にする?
- [project-vvm-async-api] C/Python APIクレート側のバージョンを出す #507
cbindgenがextern const
へのコメントを吐いてくれないので、調査して対応を考える ([project-vvm-async-api] いくつかのC関数を定数にする #503 (comment))- cbindgenが荒ぶってアイテムの順序が変わるので、
sort_by = true
にしてアルファベット順にするのはどうか? ([project-vvm-async-api] いくつかのC関数を定数にする #503 (comment)) - [議論] Python APIで
style_id
とかが生のint
のままだが、Rust API内のようにnewtype化すべきでは? - [議論] 各所の
new_with_initialize
は単なるnew
でいいのでは? - [議論]
OpenJtalk
ってよく考えたらOpenjtalk
かOpenJTalk
(pyopenjtalkはこれ)であるべきでは? - [議論] C APIに
OpenTtalkRc
があるが、肝心の「参照カウント型としての複製」のAPIが無いのでは? - [議論] OpenJtalkRcをOpenJtalkにしたり、APIの名称から_rcを省いても良いのでは?
-
kana: bool
をやめ、"_from_kana"を復活させる #577 - Change!: C APIの名前を少し変更 #576
- [議論]
inference_core
とstatus
の役割が似ているのでどちらかに統一する? - Synthesisのload_all_modelsを廃止する #582
- VVMをまとめて読み込むショートハンドを用意する #588
- エラー
-
VoicevoxResultCode
をC APIに移動 #580 - Rust APIが公開するエラーの種類を
ErrorKind
として表現する #589 - C APIのエラー表示を
tracing::error!
にする #600 -
InvalidStyleId
,InvalidModelId
,UnknownWord
を…NotFound
にする #622 -
UnloadedModel
→ModelNotFound
#623 - エラーメッセージにおけるcontextとsourceを明確に区分する #624
- C APIのセーフティネットのメッセージを改善する #625
-
Error::InferenceFailed
にsourceとしてOrtError
を持たせる #668
-
- [議論] 文字列の
- VVMのマニフェストの形式の再考 #581
- ドキュメント
- [project-vvm-async-api] ドキュメントの表記ゆれを解消 #501
-
(Voicevox)Synthesizer
のはずだが、ドキュメントではいくつかVoiceSynthesizer
のままになっている - 「音声合成モデル」と「音声モデル」で表記ゆれ
-
- # ドキュメントを刷新する #532
- VVMのマニフェストのデータ構造に関してメモをどこかに書く
- [project-vvm-async-api] ドキュメントの表記ゆれを解消 #501
- APIの変化についてドキュメントを残す(keep a changelog形式のような手書きのリリースノートとか)
タスクリスト (オプショナル)
- 以前のAPIをdeprecatedなものとして残す
- C API
- Python API
VOICEVOXのバージョン
N/A
OSの種類/ディストリ/バージョン
- Windows
- macOS
- Linux
その他
PickledChair and takaaki-inadaHiroshiba and yamachutarepan