Skip to content

Commit

Permalink
Change: use_user_dictに統合
Browse files Browse the repository at this point in the history
  • Loading branch information
sevenc-nanashi committed Feb 4, 2024
1 parent a492539 commit 9b16c48
Showing 1 changed file with 14 additions and 24 deletions.
38 changes: 14 additions & 24 deletions crates/voicevox_core/src/engine/open_jtalk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down Expand Up @@ -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();
{
Expand Down Expand Up @@ -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
}
Expand Down

0 comments on commit 9b16c48

Please sign in to comment.