haqumei 0.8.0

Haqumei is a Japanese Grapheme-to-Phoneme (G2P) library implemented in Rust.
Documentation
pub(crate) const JPCOMMON_MORA_UNVOICE: &str = "";
pub(crate) const JPCOMMON_MORA_LONG_VOWEL: &str = "";
pub(crate) const JPCOMMON_MORA_SHORT_PAUSE: &str = "";
pub(crate) const JPCOMMON_MORA_QUESTION: &str = "";
pub(crate) const JPCOMMON_MORA_EXCLAMATION: &str = "";
pub(crate) const JPCOMMON_PHONEME_SHORT_PAUSE: &str = "pau";
pub(crate) const JPCOMMON_FLAG_QUESTION: &str = "1";
pub(crate) const JPCOMMON_FLAG_EXCLAMATION: &str = "1";

pub(crate) const NODATA: &[u8] = b"*\0";

pub(crate) const JPCOMMON_MORA_LIST: &[(&str, &str, Option<&str>)] = &[
    ("クァ", "kw", Some("a")),
    ("クィ", "kw", Some("i")),
    ("クゥ", "kw", Some("u")),
    ("クェ", "kw", Some("e")),
    ("クォ", "kw", Some("o")),
    ("グァ", "gw", Some("a")),
    ("グィ", "gw", Some("i")),
    ("グゥ", "gw", Some("u")),
    ("グェ", "gw", Some("e")),
    ("グォ", "gw", Some("o")),
    ("シィ", "s", Some("i")),
    ("デェ", "dy", Some("e")),
    ("フュ", "fy", Some("u")),
    ("", "w", Some("a")),
    ("ヴョ", "by", Some("o")),
    ("ヴュ", "by", Some("u")),
    ("ヴャ", "by", Some("a")),
    ("ヴォ", "v", Some("o")),
    ("ヴェ", "v", Some("e")),
    ("ヴィ", "v", Some("i")),
    ("ヴァ", "v", Some("a")),
    ("", "v", Some("u")),
    ("", "N", None),
    ("", "o", None),
    ("", "e", None),
    ("", "i", None),
    ("", "w", Some("a")),
    ("", "w", Some("a")),
    ("", "r", Some("o")),
    ("", "r", Some("e")),
    ("", "r", Some("u")),
    ("リョ", "ry", Some("o")),
    ("リュ", "ry", Some("u")),
    ("リャ", "ry", Some("a")),
    ("リェ", "ry", Some("e")),
    ("", "r", Some("i")),
    ("", "r", Some("a")),
    ("", "y", Some("o")),
    ("", "y", Some("o")),
    ("", "y", Some("u")),
    ("", "y", Some("u")),
    ("", "y", Some("a")),
    ("", "y", Some("a")),
    ("", "m", Some("o")),
    ("", "m", Some("e")),
    ("", "m", Some("u")),
    ("ミョ", "my", Some("o")),
    ("ミュ", "my", Some("u")),
    ("ミャ", "my", Some("a")),
    ("ミェ", "my", Some("e")),
    ("", "m", Some("i")),
    ("", "m", Some("a")),
    ("", "p", Some("o")),
    ("", "b", Some("o")),
    ("", "h", Some("o")),
    ("", "p", Some("e")),
    ("", "b", Some("e")),
    ("", "h", Some("e")),
    ("", "p", Some("u")),
    ("", "b", Some("u")),
    ("フォ", "f", Some("o")),
    ("フェ", "f", Some("e")),
    ("フィ", "f", Some("i")),
    ("ファ", "f", Some("a")),
    ("", "f", Some("u")),
    ("ピョ", "py", Some("o")),
    ("ピュ", "py", Some("u")),
    ("ピャ", "py", Some("a")),
    ("ピェ", "py", Some("e")),
    ("", "p", Some("i")),
    ("ビョ", "by", Some("o")),
    ("ビュ", "by", Some("u")),
    ("ビャ", "by", Some("a")),
    ("ビェ", "by", Some("e")),
    ("", "b", Some("i")),
    ("ヒョ", "hy", Some("o")),
    ("ヒュ", "hy", Some("u")),
    ("ヒャ", "hy", Some("a")),
    ("ヒェ", "hy", Some("e")),
    ("", "h", Some("i")),
    ("", "p", Some("a")),
    ("", "b", Some("a")),
    ("", "h", Some("a")),
    ("", "n", Some("o")),
    ("", "n", Some("e")),
    ("", "n", Some("u")),
    ("ニョ", "ny", Some("o")),
    ("ニュ", "ny", Some("u")),
    ("ニャ", "ny", Some("a")),
    ("ニェ", "ny", Some("e")),
    ("", "n", Some("i")),
    ("", "n", Some("a")),
    ("ドゥ", "d", Some("u")),
    ("", "d", Some("o")),
    ("トゥ", "t", Some("u")),
    ("", "t", Some("o")),
    ("デョ", "dy", Some("o")),
    ("デュ", "dy", Some("u")),
    ("デャ", "dy", Some("a")),
    ("ディ", "d", Some("i")),
    ("", "d", Some("e")),
    ("テョ", "ty", Some("o")),
    ("テュ", "ty", Some("u")),
    ("テャ", "ty", Some("a")),
    ("ティ", "t", Some("i")),
    ("", "t", Some("e")),
    ("", "z", Some("u")),
    ("ツォ", "ts", Some("o")),
    ("ツェ", "ts", Some("e")),
    ("ツィ", "ts", Some("i")),
    ("ツァ", "ts", Some("a")),
    ("", "ts", Some("u")),
    ("", "cl", None),
    ("", "j", Some("i")),
    ("チョ", "ch", Some("o")),
    ("チュ", "ch", Some("u")),
    ("チャ", "ch", Some("a")),
    ("チェ", "ch", Some("e")),
    ("", "ch", Some("i")),
    ("", "d", Some("a")),
    ("", "t", Some("a")),
    ("", "z", Some("o")),
    ("", "s", Some("o")),
    ("", "z", Some("e")),
    ("", "s", Some("e")),
    ("ズィ", "z", Some("i")),
    ("", "z", Some("u")),
    ("スィ", "s", Some("i")),
    ("", "s", Some("u")),
    ("ジョ", "j", Some("o")),
    ("ジュ", "j", Some("u")),
    ("ジャ", "j", Some("a")),
    ("ジェ", "j", Some("e")),
    ("", "j", Some("i")),
    ("ショ", "sh", Some("o")),
    ("シュ", "sh", Some("u")),
    ("シャ", "sh", Some("a")),
    ("シェ", "sh", Some("e")),
    ("", "sh", Some("i")),
    ("", "z", Some("a")),
    ("", "s", Some("a")),
    ("", "g", Some("o")),
    ("", "k", Some("o")),
    ("", "g", Some("e")),
    ("", "k", Some("e")),
    ("", "k", Some("e")),
    ("グヮ", "gw", Some("a")),
    ("", "g", Some("u")),
    ("クヮ", "kw", Some("a")),
    ("", "k", Some("u")),
    ("ギョ", "gy", Some("o")),
    ("ギュ", "gy", Some("u")),
    ("ギャ", "gy", Some("a")),
    ("ギェ", "gy", Some("e")),
    ("", "g", Some("i")),
    ("キョ", "ky", Some("o")),
    ("キュ", "ky", Some("u")),
    ("キャ", "ky", Some("a")),
    ("キェ", "ky", Some("e")),
    ("", "k", Some("i")),
    ("", "g", Some("a")),
    ("", "k", Some("a")),
    ("", "o", None),
    ("", "o", None),
    ("", "e", None),
    ("", "e", None),
    ("ウォ", "w", Some("o")),
    ("ウェ", "w", Some("e")),
    ("ウィ", "w", Some("i")),
    ("", "u", None),
    ("", "u", None),
    ("イェ", "y", Some("e")),
    ("", "i", None),
    ("", "i", None),
    ("", "a", None),
    ("", "a", None),
];

#[inline]
pub(crate) fn get_pos_id(pos: &str) -> &'static str {
    match pos {
        "感動詞" => "09",
        "形状詞" => "19",
        "形容詞" => "01",
        "助詞-その他" => "23",
        "助詞-格助詞" => "13",
        "助詞-係助詞" => "24",
        "助詞-終助詞" => "14",
        "助詞-接続助詞" => "12",
        "助詞-副助詞" => "11",
        "助動詞" => "10",
        "接続詞" => "08",
        "接頭辞" => "16",
        "接頭辞-形状詞的" => "16",
        "接頭辞-形容詞的" => "16",
        "接頭辞-動詞的" => "16",
        "接頭辞-名詞的" => "16",
        "接尾辞-形状詞的" => "15",
        "接尾辞-形容詞的" => "15",
        "接尾辞-動詞的" => "15",
        "接尾辞-名詞的" => "15",
        "代名詞" => "04",
        "動詞" => "20",
        "動詞-非自立" => "17",
        "副詞" => "06",
        "名詞-サ変接続" => "03",
        "名詞-固有名詞" => "18",
        "名詞-数詞" => "05",
        "名詞-非自立" => "22",
        "名詞-普通名詞" => "02",
        "連体詞" => "07",
        "フィラー" => "25",
        _ => "xx",
    }
}

#[inline]
pub(crate) fn get_cform_id(cform: &str) -> &'static str {
    match cform {
        "その他" => "6",
        "仮定形" => "4",
        "基本形" => "2",
        "未然形" => "0",
        "命令形" => "5",
        "連体形" => "3",
        "連用形" => "1",
        _ => "xx",
    }
}

#[inline]
pub(crate) fn get_ctype_id(ctype: &str) -> &'static str {
    match ctype {
        "カ行変格" => "5",
        "サ行変格" => "4",
        "ラ行変格" => "6",
        "一段" => "3",
        "形容詞" => "7",
        "五段" => "1",
        "四段" => "6",
        "助動詞" => "7",
        "二段" => "6",
        "不変化" => "6",
        "文語助動詞" => "6",
        _ => "xx",
    }
}