from ctypes import * class Aques: @classmethod def main (cls, text: str) -> bytearray | None: return cls.__synthe_utf8 (text, speed = 100) @staticmethod def __synthe_utf8 (text, speed, phont_file = None) -> bytearray | None: if phont_file is None: phont = None else: with open (phont_file, 'rb') as f: phont = f.read () aqkoe = cdll.LoadLibrary ('libAqKanji2Koe.so') dic_path: str = './aq_dic' err = c_int (0) aqkoe.AqKanji2Koe_Create.restype = c_void_p handle = aqkoe.AqKanji2Koe_Create (dic_path.encode ('utf-8'), byref (err)) koe: str = '' aqkoe.AqKanji2Koe_Convert.restype = c_int aqkoe.AqKanji2Koe_Convert (handle, text.encode ('utf-8'), koe, 4096) aqtk = cdll.LoadLibrary ('libAquesTalk2Eva.so') aqtk.AquesTalk2_Synthe_Utf8.restype = POINTER (ARRAY (c_ubyte, 0)) size = c_int (0) wav_p = aqtk.AquesTalk2_Synthe_Utf8 (koe.encode ('utf-8'), speed, byref (size), phont) if not bool (wav_p): return None wav_p = cast (wav_p, POINTER (ARRAY (c_ubyte, size.value))) wav = bytearray (wav_p.contents) aqtk.AquuesTalk2_FreeWave (wav_p) return wav