import pkg_resources
from .sinsy import Sinsy
from .version import __version__  # noqa
DEFAULT_DIC_DIR = pkg_resources.resource_filename(__name__, "_dic")
DEFAULT_HTS_VOICE = pkg_resources.resource_filename(
    __name__, "htsvoice/nitech_jp_song070_f001.htsvoice"
)
# Global instance of sinsy
_global_sinsy = None
[docs]def get_default_dic_dir():
    """Returns default dictionary directory
    Returns:
        str: dictionary path
    """
    return DEFAULT_DIC_DIR 
[docs]def get_default_htsvoice():
    """Returns default hts voice
    Returns:
        str: hts voice path
    """
    return DEFAULT_HTS_VOICE 
def _lazy_init():
    global _global_sinsy
    _global_sinsy = Sinsy()
    _global_sinsy.setLanguages("j", get_default_dic_dir())
    _global_sinsy.loadVoices(get_default_htsvoice())
[docs]def synthesize(musicxml_path: str):
    """Synthesize waveform given muxic XML file
    Args:
        str: music XML path
    Returns:
        tuple: tuple of wav array of type float64 and sampling frequency
    Raises:
        RuntimeError: if fail to synthesize
    """
    global _global_sinsy
    if _global_sinsy is None:
        _lazy_init()
    _global_sinsy.loadScoreFromMusicXML(musicxml_path)
    wav, sr = _global_sinsy.synthesize()
    _global_sinsy.clearScore()
    return wav, sr