音声合成追加
このコミットが含まれているのは:
@@ -0,0 +1,31 @@
|
|||||||
|
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
|
||||||
|
|
||||||
@@ -6,6 +6,8 @@ import time
|
|||||||
import random
|
import random
|
||||||
from talk import Talk
|
from talk import Talk
|
||||||
import subprocess
|
import subprocess
|
||||||
|
from aques import Aques
|
||||||
|
from playsound import playsound
|
||||||
|
|
||||||
|
|
||||||
YOUTUBE_ID: str = 'aq3QwuYz-KU'
|
YOUTUBE_ID: str = 'aq3QwuYz-KU'
|
||||||
@@ -47,7 +49,12 @@ class Main:
|
|||||||
|
|
||||||
noon.play ()
|
noon.play ()
|
||||||
|
|
||||||
# subprocess.run (r'wine .\')
|
wav: bytearray | None = Aques.main (answer)
|
||||||
|
if wav is not None:
|
||||||
|
with open ('./nizika_talking.wav', 'wb') as f:
|
||||||
|
f.write (wav)
|
||||||
|
|
||||||
|
playsound ('./nizika_talking.wav')
|
||||||
|
|
||||||
time.sleep (10)
|
time.sleep (10)
|
||||||
|
|
||||||
|
|||||||
新しい課題から参照
ユーザをブロックする