From 38effe94b2678f7977f0e52a7747e1f49d8b1f6f Mon Sep 17 00:00:00 2001 From: Ryo Yamashita Date: Mon, 25 Sep 2023 02:32:16 +0900 Subject: [PATCH] =?UTF-8?q?`InvalidStyleId`,=20`InvalidModelId`,=20`Unknow?= =?UTF-8?q?nWord`=E3=82=92`=E2=80=A6NotFound`=E3=81=AB=E3=81=99=E3=82=8B?= =?UTF-8?q?=20(#622)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nanashi. --- crates/voicevox_core/src/error.rs | 32 +++++++++++-------- crates/voicevox_core/src/inference_core.rs | 6 ++-- crates/voicevox_core/src/status.rs | 2 +- crates/voicevox_core/src/user_dict/dict.rs | 4 +-- .../include/voicevox_core.h | 10 +++--- crates/voicevox_core_c_api/src/helpers.rs | 6 ++-- crates/voicevox_core_c_api/src/result_code.rs | 22 ++++++++----- .../tests/e2e/snapshots.toml | 4 +-- .../voicevox_core_c_api/tests/e2e/symbols.rs | 6 ++-- 9 files changed, 52 insertions(+), 40 deletions(-) diff --git a/crates/voicevox_core/src/error.rs b/crates/voicevox_core/src/error.rs index 1d9eda849..f101dcb15 100644 --- a/crates/voicevox_core/src/error.rs +++ b/crates/voicevox_core/src/error.rs @@ -45,14 +45,14 @@ impl Error { }, ErrorRepr::UnloadedModel { .. } => ErrorKind::UnloadedModel, ErrorRepr::GetSupportedDevices(_) => ErrorKind::GetSupportedDevices, - ErrorRepr::InvalidStyleId { .. } => ErrorKind::InvalidStyleId, - ErrorRepr::InvalidModelId { .. } => ErrorKind::InvalidModelId, + ErrorRepr::StyleNotFound { .. } => ErrorKind::StyleNotFound, + ErrorRepr::ModelNotFound { .. } => ErrorKind::ModelNotFound, ErrorRepr::InferenceFailed => ErrorKind::InferenceFailed, ErrorRepr::ExtractFullContextLabel(_) => ErrorKind::ExtractFullContextLabel, ErrorRepr::ParseKana(_) => ErrorKind::ParseKana, ErrorRepr::LoadUserDict(_) => ErrorKind::LoadUserDict, ErrorRepr::SaveUserDict(_) => ErrorKind::SaveUserDict, - ErrorRepr::UnknownWord(_) => ErrorKind::UnknownWord, + ErrorRepr::WordNotFound(_) => ErrorKind::WordNotFound, ErrorRepr::UseUserDict(_) => ErrorKind::UseUserDict, ErrorRepr::InvalidWord(_) => ErrorKind::InvalidWord, } @@ -76,12 +76,18 @@ pub(crate) enum ErrorRepr { #[error("サポートされているデバイス情報取得中にエラーが発生しました,{0}")] GetSupportedDevices(#[source] anyhow::Error), - #[error("無効なspeaker_idです: {style_id:?}")] - InvalidStyleId { style_id: StyleId }, + #[error( + "`{style_id}`に対するスタイルが見つかりませんでした。音声モデルが読み込まれていないか、読\ + み込みが解除されています" + )] + StyleNotFound { style_id: StyleId }, #[allow(dead_code)] // FIXME - #[error("無効なmodel_idです: {model_id:?}")] - InvalidModelId { model_id: VoiceModelId }, + #[error( + "`{model_id}`に対する音声モデルが見つかりませんでした。読み込まれていないか、読み込みが既\ + に解除されています" + )] + ModelNotFound { model_id: VoiceModelId }, #[error("推論に失敗しました")] InferenceFailed, @@ -99,7 +105,7 @@ pub(crate) enum ErrorRepr { SaveUserDict(String), #[error("ユーザー辞書に単語が見つかりませんでした: {0}")] - UnknownWord(Uuid), + WordNotFound(Uuid), #[error("OpenJTalkのユーザー辞書の設定に失敗しました: {0}")] UseUserDict(String), @@ -129,10 +135,10 @@ pub enum ErrorKind { UnloadedModel, /// サポートされているデバイス情報取得に失敗した。 GetSupportedDevices, - /// 無効なstyle_idが指定された。 - InvalidStyleId, - /// 無効なmodel_idが指定された。 - InvalidModelId, + /// スタイルIDに対するスタイルが見つからなかった。 + StyleNotFound, + /// 音声モデルIDに対する音声モデルが見つからなかった。 + ModelNotFound, /// 推論に失敗した。 InferenceFailed, /// コンテキストラベル出力に失敗した。 @@ -144,7 +150,7 @@ pub enum ErrorKind { /// ユーザー辞書を書き込めなかった。 SaveUserDict, /// ユーザー辞書に単語が見つからなかった。 - UnknownWord, + WordNotFound, /// OpenJTalkのユーザー辞書の設定に失敗した。 UseUserDict, /// ユーザー辞書の単語のバリデーションに失敗した。 diff --git a/crates/voicevox_core/src/inference_core.rs b/crates/voicevox_core/src/inference_core.rs index a02da2639..e33113589 100644 --- a/crates/voicevox_core/src/inference_core.rs +++ b/crates/voicevox_core/src/inference_core.rs @@ -55,7 +55,7 @@ impl InferenceCore { style_id: StyleId, ) -> Result> { if !self.status.validate_speaker_id(style_id) { - return Err(ErrorRepr::InvalidStyleId { style_id }.into()); + return Err(ErrorRepr::StyleNotFound { style_id }.into()); } let (model_id, model_inner_id) = self.status.ids_for(style_id)?; @@ -90,7 +90,7 @@ impl InferenceCore { style_id: StyleId, ) -> Result> { if !self.status.validate_speaker_id(style_id) { - return Err(ErrorRepr::InvalidStyleId { style_id }.into()); + return Err(ErrorRepr::StyleNotFound { style_id }.into()); } let (model_id, model_inner_id) = self.status.ids_for(style_id)?; @@ -129,7 +129,7 @@ impl InferenceCore { style_id: StyleId, ) -> Result> { if !self.status.validate_speaker_id(style_id) { - return Err(ErrorRepr::InvalidStyleId { style_id }.into()); + return Err(ErrorRepr::StyleNotFound { style_id }.into()); } let (model_id, model_inner_id) = self.status.ids_for(style_id)?; diff --git a/crates/voicevox_core/src/status.rs b/crates/voicevox_core/src/status.rs index c173d87db..852054488 100644 --- a/crates/voicevox_core/src/status.rs +++ b/crates/voicevox_core/src/status.rs @@ -305,7 +305,7 @@ impl LoadedModels { .flat_map(SpeakerMeta::styles) .any(|style| *style.id() == style_id) }) - .ok_or(ErrorRepr::InvalidStyleId { style_id })?; + .ok_or(ErrorRepr::StyleNotFound { style_id })?; let model_inner_id = *model_inner_ids .get(&style_id) diff --git a/crates/voicevox_core/src/user_dict/dict.rs b/crates/voicevox_core/src/user_dict/dict.rs index 60dfe3ce4..dd342ddd0 100644 --- a/crates/voicevox_core/src/user_dict/dict.rs +++ b/crates/voicevox_core/src/user_dict/dict.rs @@ -48,7 +48,7 @@ impl UserDict { /// ユーザー辞書の単語を変更する。 pub fn update_word(&mut self, word_uuid: Uuid, new_word: UserDictWord) -> Result<()> { if !self.words.contains_key(&word_uuid) { - return Err(ErrorRepr::UnknownWord(word_uuid).into()); + return Err(ErrorRepr::WordNotFound(word_uuid).into()); } self.words.insert(word_uuid, new_word); Ok(()) @@ -57,7 +57,7 @@ impl UserDict { /// ユーザー辞書から単語を削除する。 pub fn remove_word(&mut self, word_uuid: Uuid) -> Result { let Some(word) = self.words.remove(&word_uuid) else { - return Err(ErrorRepr::UnknownWord(word_uuid).into()); + return Err(ErrorRepr::WordNotFound(word_uuid).into()); }; Ok(word) } diff --git a/crates/voicevox_core_c_api/include/voicevox_core.h b/crates/voicevox_core_c_api/include/voicevox_core.h index d376544eb..001f12f1a 100644 --- a/crates/voicevox_core_c_api/include/voicevox_core.h +++ b/crates/voicevox_core_c_api/include/voicevox_core.h @@ -103,13 +103,13 @@ enum VoicevoxResultCode */ VOICEVOX_RESULT_GPU_SUPPORT_ERROR = 4, /** - * 無効なstyle_idが指定された + * スタイルIDに対するスタイルが見つからなかった */ - VOICEVOX_RESULT_INVALID_STYLE_ID_ERROR = 6, + VOICEVOX_RESULT_STYLE_NOT_FOUND_ERROR = 6, /** - * 無効なmodel_idが指定された + * 音声モデルIDに対する音声モデルが見つからなかった */ - VOICEVOX_RESULT_INVALID_MODEL_ID_ERROR = 7, + VOICEVOX_RESULT_MODEL_NOT_FOUND_ERROR = 7, /** * 推論に失敗した */ @@ -169,7 +169,7 @@ enum VoicevoxResultCode /** * ユーザー辞書に単語が見つからなかった */ - VOICEVOX_RESULT_UNKNOWN_USER_DICT_WORD_ERROR = 22, + VOICEVOX_RESULT_USER_DICT_WORD_NOT_FOUND_ERROR = 22, /** * OpenJTalkのユーザー辞書の設定に失敗した */ diff --git a/crates/voicevox_core_c_api/src/helpers.rs b/crates/voicevox_core_c_api/src/helpers.rs index bd1c95c8f..db70b9af3 100644 --- a/crates/voicevox_core_c_api/src/helpers.rs +++ b/crates/voicevox_core_c_api/src/helpers.rs @@ -38,14 +38,14 @@ pub(crate) fn into_result_code_with_error(result: CApiResult<()>) -> VoicevoxRes InvalidModelData => VOICEVOX_RESULT_INVALID_MODEL_DATA_ERROR, UnloadedModel => VOICEVOX_RESULT_UNLOADED_MODEL_ERROR, GetSupportedDevices => VOICEVOX_RESULT_GET_SUPPORTED_DEVICES_ERROR, - InvalidStyleId => VOICEVOX_RESULT_INVALID_STYLE_ID_ERROR, - InvalidModelId => VOICEVOX_RESULT_INVALID_MODEL_ID_ERROR, + StyleNotFound => VOICEVOX_RESULT_STYLE_NOT_FOUND_ERROR, + ModelNotFound => VOICEVOX_RESULT_MODEL_NOT_FOUND_ERROR, InferenceFailed => VOICEVOX_RESULT_INFERENCE_ERROR, ExtractFullContextLabel => VOICEVOX_RESULT_EXTRACT_FULL_CONTEXT_LABEL_ERROR, ParseKana => VOICEVOX_RESULT_PARSE_KANA_ERROR, LoadUserDict => VOICEVOX_RESULT_LOAD_USER_DICT_ERROR, SaveUserDict => VOICEVOX_RESULT_SAVE_USER_DICT_ERROR, - UnknownWord => VOICEVOX_RESULT_UNKNOWN_USER_DICT_WORD_ERROR, + WordNotFound => VOICEVOX_RESULT_USER_DICT_WORD_NOT_FOUND_ERROR, UseUserDict => VOICEVOX_RESULT_USE_USER_DICT_ERROR, InvalidWord => VOICEVOX_RESULT_INVALID_USER_DICT_WORD_ERROR, }, diff --git a/crates/voicevox_core_c_api/src/result_code.rs b/crates/voicevox_core_c_api/src/result_code.rs index daf461705..70fb0bb12 100644 --- a/crates/voicevox_core_c_api/src/result_code.rs +++ b/crates/voicevox_core_c_api/src/result_code.rs @@ -17,10 +17,10 @@ pub enum VoicevoxResultCode { VOICEVOX_RESULT_GET_SUPPORTED_DEVICES_ERROR = 3, /// GPUモードがサポートされていない VOICEVOX_RESULT_GPU_SUPPORT_ERROR = 4, - /// 無効なstyle_idが指定された - VOICEVOX_RESULT_INVALID_STYLE_ID_ERROR = 6, - /// 無効なmodel_idが指定された - VOICEVOX_RESULT_INVALID_MODEL_ID_ERROR = 7, + /// スタイルIDに対するスタイルが見つからなかった + VOICEVOX_RESULT_STYLE_NOT_FOUND_ERROR = 6, + /// 音声モデルIDに対する音声モデルが見つからなかった + VOICEVOX_RESULT_MODEL_NOT_FOUND_ERROR = 7, /// 推論に失敗した VOICEVOX_RESULT_INFERENCE_ERROR = 8, /// コンテキストラベル出力に失敗した @@ -50,7 +50,7 @@ pub enum VoicevoxResultCode { /// ユーザー辞書を書き込めなかった VOICEVOX_RESULT_SAVE_USER_DICT_ERROR = 21, /// ユーザー辞書に単語が見つからなかった - VOICEVOX_RESULT_UNKNOWN_USER_DICT_WORD_ERROR = 22, + VOICEVOX_RESULT_USER_DICT_WORD_NOT_FOUND_ERROR = 22, /// OpenJTalkのユーザー辞書の設定に失敗した VOICEVOX_RESULT_USE_USER_DICT_ERROR = 23, /// ユーザー辞書の単語のバリデーションに失敗した @@ -70,8 +70,14 @@ pub(crate) const fn error_result_to_message(result_code: VoicevoxResultCode) -> cstr!("サポートされているデバイス情報取得中にエラーが発生しました") } VOICEVOX_RESULT_OK => cstr!("エラーが発生しませんでした"), - VOICEVOX_RESULT_INVALID_STYLE_ID_ERROR => cstr!("無効なspeaker_idです"), - VOICEVOX_RESULT_INVALID_MODEL_ID_ERROR => cstr!("無効なmodel_idです"), + VOICEVOX_RESULT_STYLE_NOT_FOUND_ERROR => cstr!( + "指定されたIDに対するスタイルが見つかりませんでした。音声モデルが読み込まれていないか\ + 、読み込みが解除されています" + ), + VOICEVOX_RESULT_MODEL_NOT_FOUND_ERROR => cstr!( + "指定されたIDに対する音声モデルが見つかりませんでした。読み込まれていないか、読み込み\ + が既に解除されています" + ), VOICEVOX_RESULT_INFERENCE_ERROR => cstr!("推論に失敗しました"), VOICEVOX_RESULT_EXTRACT_FULL_CONTEXT_LABEL_ERROR => { cstr!("入力テキストからのフルコンテキストラベル抽出に失敗しました") @@ -96,7 +102,7 @@ pub(crate) const fn error_result_to_message(result_code: VoicevoxResultCode) -> VOICEVOX_RESULT_UNLOADED_MODEL_ERROR => cstr!("Modelが読み込まれていません"), VOICEVOX_RESULT_LOAD_USER_DICT_ERROR => cstr!("ユーザー辞書を読み込めませんでした"), VOICEVOX_RESULT_SAVE_USER_DICT_ERROR => cstr!("ユーザー辞書を書き込めませんでした"), - VOICEVOX_RESULT_UNKNOWN_USER_DICT_WORD_ERROR => { + VOICEVOX_RESULT_USER_DICT_WORD_NOT_FOUND_ERROR => { cstr!("ユーザー辞書に単語が見つかりませんでした") } VOICEVOX_RESULT_USE_USER_DICT_ERROR => cstr!("OpenJTalkのユーザー辞書の設定に失敗しました"), diff --git a/crates/voicevox_core_c_api/tests/e2e/snapshots.toml b/crates/voicevox_core_c_api/tests/e2e/snapshots.toml index eeeec0c93..b41480551 100644 --- a/crates/voicevox_core_c_api/tests/e2e/snapshots.toml +++ b/crates/voicevox_core_c_api/tests/e2e/snapshots.toml @@ -53,8 +53,8 @@ result_messages.0 = "エラーが発生しませんでした" result_messages.1 = "OpenJTalkの辞書が読み込まれていません" result_messages.3 = "サポートされているデバイス情報取得中にエラーが発生しました" result_messages.4 = "GPU機能をサポートすることができません" -result_messages.6 = "無効なspeaker_idです" -result_messages.7 = "無効なmodel_idです" +result_messages.6 = "指定されたIDに対するスタイルが見つかりませんでした。音声モデルが読み込まれていないか、読み込みが解除されています" +result_messages.7 = "指定されたIDに対する音声モデルが見つかりませんでした。読み込まれていないか、読み込みが既に解除されています" result_messages.8 = "推論に失敗しました" result_messages.11 = "入力テキストからのフルコンテキストラベル抽出に失敗しました" result_messages.12 = "入力テキストが無効なUTF-8データでした" diff --git a/crates/voicevox_core_c_api/tests/e2e/symbols.rs b/crates/voicevox_core_c_api/tests/e2e/symbols.rs index ae929ad0f..840757a1a 100644 --- a/crates/voicevox_core_c_api/tests/e2e/symbols.rs +++ b/crates/voicevox_core_c_api/tests/e2e/symbols.rs @@ -270,8 +270,8 @@ pub(crate) enum VoicevoxResultCode { VOICEVOX_RESULT_NOT_LOADED_OPENJTALK_DICT_ERROR = 1, VOICEVOX_RESULT_GET_SUPPORTED_DEVICES_ERROR = 3, VOICEVOX_RESULT_GPU_SUPPORT_ERROR = 4, - VOICEVOX_RESULT_INVALID_STYLE_ID_ERROR = 6, - VOICEVOX_RESULT_INVALID_MODEL_ID_ERROR = 7, + VOICEVOX_RESULT_STYLE_NOT_FOUND_ERROR = 6, + VOICEVOX_RESULT_MODEL_NOT_FOUND_ERROR = 7, VOICEVOX_RESULT_INFERENCE_ERROR = 8, VOICEVOX_RESULT_EXTRACT_FULL_CONTEXT_LABEL_ERROR = 11, VOICEVOX_RESULT_INVALID_UTF8_INPUT_ERROR = 12, @@ -286,7 +286,7 @@ pub(crate) enum VoicevoxResultCode { VOICEVOX_RESULT_UNLOADED_MODEL_ERROR = 19, VOICEVOX_RESULT_LOAD_USER_DICT_ERROR = 20, VOICEVOX_RESULT_SAVE_USER_DICT_ERROR = 21, - VOICEVOX_RESULT_UNKNOWN_USER_DICT_WORD_ERROR = 22, + VOICEVOX_RESULT_USER_DICT_WORD_NOT_FOUND_ERROR = 22, VOICEVOX_RESULT_USE_USER_DICT_ERROR = 23, VOICEVOX_RESULT_INVALID_USER_DICT_WORD_ERROR = 24, VOICEVOX_RESULT_INVALID_UUID_ERROR = 25,