csukuangfj/piper-phonemize
0
piper-phonemize
Phonemization library for Piper text-to-speech system.
Converts text to IPA phonemes using espeak-ng.
Supports Python, Go, JavaScript (Node.js/WASM), and C/C++.
Installation
Python
pip install piper_phonemize -f https://k2-fsa.github.io/icefall/piper_phonemize.htmlGo
go get github.com/csukuangfj/piper-phonemize-go/piper_phonemizeJavaScript / Node.js
npm install piper-phonemizeC / C++
Download pre-built libraries from GitHub Releases or build from source.
Quick Start
Python
import piper_phonemize
# Initialize espeak-ng
piper_phonemize.initialize("/path/to/espeak-ng-data")
# Phonemize text
result = piper_phonemize.phonemize("Hello world", "en-us")
print(result)Go
package main
import (
"fmt"
pp "github.com/csukuangfj/piper-phonemize-go/piper_phonemize"
)
func main() {
pp.Initialize("") // uses embedded espeak-ng-data
result := pp.Phonemize("Hello world", "en-us")
defer pp.DeletePhonemizeResult(result)
for i := 0; i < result.GetNumSentences(); i++ {
phonemes := result.GetPhonemes(i)
fmt.Printf("Sentence %d: %v\n", i, phonemes)
}
}JavaScript / Node.js
const piperPhonemize = require('piper-phonemize');
// espeak-ng-data is bundled — no initialization needed!
const result = piperPhonemize.phonemizeToString('Hello world', 'en-us');
console.log(result); // ['həlˈoʊ wˈɜːld']C
#include "c-api.h"
int main() {
PiperPhonemizeInitialize("/path/to/espeak-ng-data");
PiperPhonemizeResult *result = PiperPhonemizeText("Hello world", "en-us");
if (result) {
int32_t num_sentences = PiperPhonemizeResultGetNumSentences(result);
// Process phonemes...
PiperPhonemizeDestroyResult(result);
}
return 0;
}Building from Source
Using CMake
cmake -Bbuild -DBUILD_SHARED_LIBS=ON
cmake --build build --config ReleaseUsing Docker
docker buildx build . -t piper-phonemize --output 'type=local,dest=dist'License
GPL-3.0-or-later (due to espeak-ng dependency)
