From 9b16c481883eae5f63d52d1e7d71ba97d055c559 Mon Sep 17 00:00:00 2001 From: sevenc-nanashi Date: Sun, 4 Feb 2024 10:46:29 +0900 Subject: [PATCH] =?UTF-8?q?Change:=20use=5Fuser=5Fdict=E3=81=AB=E7=B5=B1?= =?UTF-8?q?=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/voicevox_core/src/engine/open_jtalk.rs | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/crates/voicevox_core/src/engine/open_jtalk.rs b/crates/voicevox_core/src/engine/open_jtalk.rs index 11b4c5cf5..afce50137 100644 --- a/crates/voicevox_core/src/engine/open_jtalk.rs +++ b/crates/voicevox_core/src/engine/open_jtalk.rs @@ -67,11 +67,6 @@ pub(crate) mod blocking { &self, user_dict: &crate::blocking::UserDict, ) -> crate::result::Result<()> { - // 空の辞書を読み込もうとするとクラッシュするので、空の辞書を読み込もうとした時は - // 辞書のアンロード処理に分岐させる。 - if user_dict.is_empty() { - return self.0.unload_user_dict(); - } let words = &user_dict.to_mecab_format(); self.0.use_user_dict(words) } @@ -134,22 +129,22 @@ pub(crate) mod blocking { impl Inner { // TODO: 中断可能にする - pub(super) fn unload_user_dict(&self) -> crate::result::Result<()> { - let Resources { mecab, .. } = &mut *self.resources.lock().unwrap(); - let result = mecab.load_with_userdic(self.dict_dir.as_ref(), None); - - if !result { - return Err(ErrorRepr::UseUserDict(anyhow!( - "辞書が空のため、辞書をアンロードしようとしましたが、失敗しました。" - )) - .into()); - } + pub(super) fn use_user_dict(&self, words: &str) -> crate::result::Result<()> { + // 空の辞書を読み込もうとするとクラッシュするので、空の辞書を読み込もうとした時は + // 辞書のアンロードを行う。 + if words.is_empty() { + let Resources { mecab, .. } = &mut *self.resources.lock().unwrap(); + let result = mecab.load_with_userdic(self.dict_dir.as_ref(), None); - Ok(()) - } + if !result { + return Err(ErrorRepr::UseUserDict(anyhow!( + "辞書が空のため、辞書をアンロードしようとしましたが、失敗しました。" + )) + .into()); + } - // TODO: 中断可能にする - pub(super) fn use_user_dict(&self, words: &str) -> crate::result::Result<()> { + return Ok(()); + } let temp_dict = NamedTempFile::new().map_err(|e| ErrorRepr::UseUserDict(e.into()))?; let temp_dict_path = temp_dict.into_temp_path(); { @@ -228,11 +223,6 @@ pub(crate) mod tokio { user_dict: &crate::tokio::UserDict, ) -> crate::result::Result<()> { let inner = self.0 .0.clone(); - // 空の辞書を読み込もうとするとクラッシュするので、空の辞書を読み込もうとした時は - // 辞書のアンロード処理に分岐させる。 - if user_dict.is_empty() { - return crate::task::asyncify(move || inner.unload_user_dict()).await; - } let words = user_dict.to_mecab_format(); crate::task::asyncify(move || inner.use_user_dict(&words)).await }