| 
							- import subprocess
 - from ctypes import ARRAY  # type: ignore
 - from ctypes import POINTER, byref, c_int, c_ubyte, cast, cdll
 - 
 - 
 - class Aques:
 -     @classmethod
 -     def main (cls, text: str, goatoh_mode: bool = False) -> bytearray | None:
 -         return cls.__synthe_utf8 (text, 100, './phont/ar_m5.phont' if goatoh_mode else './phont/ar_mf2.phont')
 - 
 -     @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 ()
 - 
 -         p = subprocess.Popen ('./aques', stdin = subprocess.PIPE,
 -                               stdout = subprocess.PIPE)
 -         koe: str = p.communicate (text.encode ())[0].decode ()
 - 
 -         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.AquesTalk2_FreeWave (wav_p)
 - 
 -         return wav
 
 
  |