ファイル
nizika_broadcast/aques.py
T
2023-12-02 18:04:48 +09:00

32 行
928 B
Python

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 ()
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 (text.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