VOICEVOX / voicevox_engine

無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXの音声合成エンジン
https://voicevox.hiroshiba.jp/
Other
1.3k stars 197 forks source link

`MockTTSEngine` の役割 #931

Closed tarepan closed 9 months ago

tarepan commented 9 months ago

質問の内容

質問概要: MockTTSEngine の役割は何か

MockTTSEngineTTSEngineBase を継承し TTSEngine の Stub として機能するクラスである。
一方で .synthesis() にて pyopenjtalk 合成を実装しており、単なる代理の値ではなく意味ある音声を返す実装となっている。

このクラスが単なる Stub なのかそれ以上の意味をもつのかによって、行えるリファクタリングの範囲が異なる。
例えば「役割 == TTSEngine Stub」であれば pyopenjtalk は廃止できる。
「役割 == 軽量 TTSEngine モドキ」であれば先日導入された TTSEngine(MockCoreWrapper()) でも代用できる。
「役割 == 軽量かつ音声主観評価可能な TTSEngine モドキ」であれば現在の .synthesis() は妥当である。
あるいは「役割 == TTSEngineBaseインターフェース実装の公式例」かもしれない。

このような背景から、次の質問があります:
Q「MockTTSEngine の役割は何か」

VOICEVOXのバージョン

0.14.10

OSの種類/ディストリ/バージョン

Hiroshiba commented 9 months ago

Q「MockTTSEngine の役割は何か」

元々の目的が若干不明瞭ですが、過去の用途としてはrun.py--enable_mock引数で使うことが主目的だったと思います。 製品版コアがなくてもWebAPIを起動できたり、UIをそこそこ確認できたりかなぁと。

tarepan commented 9 months ago

UIをそこそこ確認

「UIで打ち込んだ文字が音声になるか」的な用途として OpenJTalk 音声出力は欲しい、という認識で合ってるでしょうか?

Hiroshiba commented 9 months ago

UIをそこそこ確認

「UIで打ち込んだ文字が音声になるか」的な用途として OpenJTalk 音声出力は欲しい、という認識で合ってるでしょうか?

そう・・・ですね! でも絶対欲しいというよりは、まあやっぱりあった方がいいよねくらいの気持ちです。 must / should / want / can だとwantよりちょっと上くらいの優先度かなと。 他に理由があれば省いても良いのかもと思いました・・・!!