piper_plus_g2p/lib.rs
1//! # piper-plus-g2p
2//!
3//! Multilingual G2P (Grapheme-to-Phoneme) for TTS — eSpeak-ng free, MIT licensed.
4//!
5//! ## IPA-first design
6//!
7//! [`Phonemizer::phonemize_with_prosody()`] returns clean IPA token lists
8//! without BOS/EOS markers or PUA encoding. The encoding step
9//! (PUA mapping, phoneme_id_map, BOS/EOS/padding insertion) is handled
10//! separately by [`encode`].
11//!
12//! ## Supported languages
13//!
14//! | Language | Code | Feature flag |
15//! |------------|------|----------------|
16//! | Japanese | ja | `japanese` |
17//! | English | en | `english` (default) |
18//! | Chinese | zh | `chinese` (default) |
19//! | Korean | ko | `korean` (default) |
20//! | Spanish | es | `spanish` (default) |
21//! | French | fr | `french` (default) |
22//! | Portuguese | pt | `portuguese` (default) |
23//! | Swedish | sv | `swedish` |
24//!
25//! ## Quick start
26//!
27//! ```rust,ignore
28//! use piper_plus_g2p::{Phonemizer, PhonemizerRegistry};
29//! use piper_plus_g2p::english::EnglishPhonemizer;
30//!
31//! // Create a registry and register language phonemizers
32//! let mut registry = PhonemizerRegistry::new();
33//! let en = EnglishPhonemizer::new().unwrap();
34//! registry.register("en", Box::new(en));
35//!
36//! // Look up a phonemizer by language code
37//! let phonemizer = registry.get("en").unwrap();
38//!
39//! // Phonemize text to IPA tokens with prosody info
40//! let (tokens, prosody) = phonemizer
41//! .phonemize_with_prosody("Hello, world!")
42//! .unwrap();
43//!
44//! // Encode tokens to phoneme IDs using a model's phoneme_id_map
45//! // let ids = piper_plus_g2p::encode::tokens_to_ids(&tokens, &phoneme_id_map)?;
46//! ```
47
48pub mod custom_dict;
49pub mod encode;
50pub mod error;
51pub mod phonemizer;
52pub mod token_map;
53
54#[cfg(feature = "chinese")]
55pub mod chinese;
56#[cfg(feature = "english")]
57pub mod english;
58#[cfg(feature = "french")]
59pub mod french;
60#[cfg(feature = "japanese")]
61pub mod japanese;
62#[cfg(feature = "korean")]
63pub mod korean;
64pub mod multilingual;
65#[cfg(feature = "portuguese")]
66pub mod portuguese;
67#[cfg(feature = "spanish")]
68pub mod spanish;
69#[cfg(feature = "swedish")]
70pub mod swedish;
71
72#[cfg(feature = "ffi")]
73pub mod ffi;
74
75pub use encode::{PiperEncoder, UnknownTokenMode};
76pub use error::G2pError;
77pub use phonemizer::{PhonemeIdMap, Phonemizer, PhonemizerRegistry, ProsodyFeature, ProsodyInfo};