38 lines
955 B
Python
38 lines
955 B
Python
import os
|
|
|
|
finder = None
|
|
|
|
|
|
def init():
|
|
try:
|
|
import jpype
|
|
import jpype.imports
|
|
except ModuleNotFoundError:
|
|
raise ModuleNotFoundError(
|
|
"Belarusian phonemizer requires to install module 'jpype1' manually. Try `pip install jpype1`."
|
|
)
|
|
|
|
try:
|
|
jar_path = os.environ["BEL_FANETYKA_JAR"]
|
|
except KeyError:
|
|
raise KeyError("You need to define 'BEL_FANETYKA_JAR' environment variable as path to the fanetyka.jar file")
|
|
|
|
jpype.startJVM(classpath=[jar_path])
|
|
|
|
# import the Java modules
|
|
from org.alex73.korpus.base import GrammarDB2, GrammarFinder
|
|
|
|
grammar_db = GrammarDB2.initializeFromJar()
|
|
global finder
|
|
finder = GrammarFinder(grammar_db)
|
|
|
|
|
|
def belarusian_text_to_phonemes(text: str) -> str:
|
|
# Initialize only on first run
|
|
if finder is None:
|
|
init()
|
|
|
|
from org.alex73.fanetyka.impl import FanetykaText
|
|
|
|
return str(FanetykaText(finder, text).ipa)
|