diff --git a/Cargo.toml b/Cargo.toml index fcc17c0..fe3e0ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "2" -members = ["./crates/sbv2_api", "./crates/sbv2_core", "./crates/sbv2_bindings", "./crates/sbv2_wasm", "crates/sbv2_voicevox"] +members = ["./crates/sbv2_api", "./crates/sbv2_core", "./crates/sbv2_bindings", "./crates/sbv2_wasm", "crates/sbv2_editor"] [workspace.package] version = "0.2.0-alpha6" diff --git a/crates/sbv2_core/src/jtalk.rs b/crates/sbv2_core/src/jtalk.rs index 75588ec..f73c159 100644 --- a/crates/sbv2_core/src/jtalk.rs +++ b/crates/sbv2_core/src/jtalk.rs @@ -79,7 +79,7 @@ static LONG_PATTERN: Lazy = Lazy::new(|| Regex::new(r"(\w)(ー*)").unwrap fn phone_tone_to_kana( phones: Vec, tones: Vec, -) -> Vec<(String, Option, String, i32)> { +) -> Vec<(String, i32)> { let phones = &phones[1..]; let tones = &tones[1..]; let mut results = Vec::new(); @@ -90,7 +90,7 @@ fn phone_tone_to_kana( .zip(tones.iter().zip(tones.iter().skip(1))) { if PUNCTUATIONS.contains(&phone.clone().as_str()) { - results.push((phone.to_string(), None, "pau".to_string(), tone)); + results.push((phone.to_string(), tone)); continue; } if CONSONANTS.contains(&phone.clone()) { @@ -99,8 +99,8 @@ fn phone_tone_to_kana( current_mora = phone.to_string() } else { current_mora += phone; - let (kana, consonant, vowel) = MORA_PHONEMES_TO_MORA_KATA.get(¤t_mora).unwrap(); - results.push((kana.to_string(), consonant.clone(), vowel.to_string(), tone)); + let kana = MORA_PHONEMES_TO_MORA_KATA.get(¤t_mora).unwrap(); + results.push((kana.to_string(), tone)); current_mora = String::new(); } } @@ -196,7 +196,7 @@ impl JTalkProcess { Ok((phones, tones, new_word2ph)) } - pub fn g2kana_tone(&self) -> Result, String, i32)>> { + pub fn g2kana_tone(&self) -> Result> { let (phones, tones, _) = self.g2p()?; Ok(phone_tone_to_kana(phones, tones)) } diff --git a/crates/sbv2_core/src/mora.rs b/crates/sbv2_core/src/mora.rs index 1f63062..dfe1ea8 100644 --- a/crates/sbv2_core/src/mora.rs +++ b/crates/sbv2_core/src/mora.rs @@ -25,7 +25,7 @@ static MORA_LIST_ADDITIONAL: Lazy> = Lazy::new(|| { data.additional }); -pub static MORA_PHONEMES_TO_MORA_KATA: Lazy, String)>> = +pub static MORA_PHONEMES_TO_MORA_KATA: Lazy> = Lazy::new(|| { let mut map = HashMap::new(); for mora in MORA_LIST_MINIMUM.iter() { @@ -35,11 +35,7 @@ pub static MORA_PHONEMES_TO_MORA_KATA: Lazy) -> AppResult { +#[derive(Deserialize)] +struct ResponseCreateAudioQuery { + kana: String, + tone: i32, +} + +async fn create_audio_query(Query(request): Query) -> AppResult>> { let (normalized_text, process) = preprocess_parse_text(&request.text, &JTalk::new()?)?; let kana_tone_list = process.g2kana_tone()?; - println!("{:?}", kana_tone_list); - Ok(normalized_text) + let response = kana_tone_list.iter().map(|(kana, tone)| { + ResponseCreateAudioQuery { + kana: kana.clone(), + tone: *tone, + } + }).collect::>(); + Ok(Json(response)) } #[tokio::main]