OpenJtalk
をSynthesizer<OpenJtalk> | Synthesizer<()>
として持つ
#694
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
内容
struct OpenJtalk
をSynthesizer<OpenJtalk> | Synthesizer<()>
として持つようにします。(Rust APIはパブリックではないので暫定)
これにより、
OpenJtalk
は必ずシステム辞書を読み込んでいる状態になります。変更しているpublic APIはRust APIのみです。C(
compatible_engine
を除く)もPythonもJavaも現状Open JTalkが必須となっているのですが、もし必須ではなくするとしたら、設計については議論の余地があると思っています。考慮すべきはこんな感じだと思っていて、
Synthesizer<()>
からはメソッドが生えなくて、Synthesizer<OpenJtalk>
からは生えてくる)があると仮定しない関数の引数や戻り値に動的ディスパッチされるinterfaceが使えると仮定しないvoid*
で扱って実行時チェックとするしかないはずこれをもとにしても、私が今思い付くだけでこれくらいの選択肢はあると思います。
関連 Issue
#545
その他