#tts #openjtalk #library

jlabel

HTS-style full-context label structure and parser/serializer from/to string

5 releases

0.1.4 Mar 25, 2024
0.1.3 Mar 2, 2024
0.1.2 Feb 6, 2024
0.1.1 Feb 4, 2024
0.1.0 Jan 25, 2024

#463 in Encoding

Download history 81/week @ 2024-02-02 48/week @ 2024-02-09 212/week @ 2024-02-16 900/week @ 2024-02-23 415/week @ 2024-03-01 552/week @ 2024-03-08 485/week @ 2024-03-15 711/week @ 2024-03-22 791/week @ 2024-03-29 325/week @ 2024-04-05 936/week @ 2024-04-12 169/week @ 2024-04-19

2,248 downloads per month
Used in 3 crates

BSD-3-Clause

31KB
629 lines

jlabel

Structure for HTS-style full-context label and parser/serializer from/to String.

Usage

Put the following in Cargo.toml

[dependencies]
jlabel = "0.1.4"

License

BSD-3-Clause

API Reference


lib.rs:

HTS-style full-context label structure and parser/serializer from/to string.

use jlabel::{Label, Mora, Phoneme, Word};

use std::str::FromStr;

let label_str = concat!(
    "sil^n-i+h=o",
    "/A:-3+1+7",
    "/B:xx-xx_xx",
    "/C:02_xx+xx",
    "/D:02+xx_xx",
    "/E:xx_xx!xx_xx-xx",
    "/F:7_4#0_xx@1_3|1_12",
    "/G:4_4%0_xx_1",
    "/H:xx_xx",
    "/I:3-12@1+2&1-8|1+41",
    "/J:5_29",
    "/K:2+8-41"
);
let label: Label = label_str.parse()?;

assert_eq!(
    label.phoneme,
    Phoneme {
        p2: Some("sil".to_string()),
        p1: Some("n".to_string()),
        c: Some("i".to_string()),
        n1: Some("h".to_string()),
        n2: Some("o".to_string()),
    }
);
assert_eq!(
    label.mora,
    Some(Mora {
        relative_accent_position: -3,
        position_forward: 1,
        position_backward: 7,
    })
);
assert_eq!(
    label.word_next,
    Some(Word {
        pos: Some(2),
        ctype: None,
        cform: None,
    })
);
assert_eq!(label.breath_group_prev, None);
#

Dependencies

~0.3–0.9MB
~20K SLoC