Merge pull request #45 from tuna2134/number

数字を読めれるように
This commit is contained in:
コマリン親衛隊
2024-09-14 12:28:47 +09:00
committed by GitHub
6 changed files with 20 additions and 13 deletions

4
Cargo.lock generated
View File

@@ -1361,9 +1361,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.19.0"
version = "1.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe"
[[package]]
name = "onig"

View File

@@ -6,4 +6,4 @@ members = ["sbv2_api", "sbv2_core", "sbv2_bindings"]
anyhow = "1.0.86"
dotenvy = "0.15.7"
env_logger = "0.11.5"
ndarray = "0.16.1"
ndarray = "0.16.1"

View File

@@ -1,7 +1 @@
日本語を母国語としない人々にとって、「日本語は非常に難しい言語である」と言われています。
その理由として、
・漢字、ひらがな、カタカナ、と表記が何種類もある。
・同一の漢字でも音読みと訓読みがある
・地名の読みが難しい
・主語、述語が省略される
などが挙げられます。
10,000年前までコロナが流行っていました

View File

@@ -54,6 +54,17 @@ impl JTalk {
Ok(Self { jpreprocess })
}
pub fn num2word(&self, text: &str) -> Result<String> {
let mut parsed = self.jpreprocess.text_to_njd(text)?;
parsed.preprocess();
let texts: Vec<String> = parsed
.nodes
.iter()
.map(|x| x.get_string().to_string())
.collect();
Ok(texts.join(""))
}
pub fn process_text(&self, text: &str) -> Result<JTalkProcess> {
let parsed = self.jpreprocess.run_frontend(text)?;
let jtalk_process = JTalkProcess::new(Arc::clone(&self.jpreprocess), parsed);

View File

@@ -120,7 +120,8 @@ pub fn replace_punctuation(mut text: String) -> String {
for (k, v) in REPLACE_MAP.iter() {
text = text.replace(k, v);
}
PUNCTUATION_CLEANUP_PATTERN
let content = PUNCTUATION_CLEANUP_PATTERN
.replace_all(&text, "")
.to_string()
.to_string();
content
}

View File

@@ -123,7 +123,8 @@ impl TTSModelHolder {
&self,
text: &str,
) -> Result<(Array2<f32>, Array1<i64>, Array1<i64>, Array1<i64>)> {
let normalized_text = norm::normalize_text(text);
let text = self.jtalk.num2word(text)?;
let normalized_text = norm::normalize_text(&text);
let process = self.jtalk.process_text(&normalized_text)?;
let (phones, tones, mut word2ph) = process.g2p()?;