32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
import os
|
|
import tempfile
|
|
from datetime import datetime
|
|
from tts_service import TTSService
|
|
from a2f_service import A2FService
|
|
from blend_shape_parser import BlendShapeParser
|
|
|
|
class TextToBlendShapesService:
|
|
def __init__(self, lang='zh-CN', a2f_url="192.168.1.39:52000"):
|
|
self.tts = TTSService(lang=lang)
|
|
self.a2f = A2FService(a2f_url=a2f_url)
|
|
self.parser = BlendShapeParser()
|
|
|
|
def text_to_blend_shapes(self, text: str, output_dir: str = None):
|
|
if output_dir is None:
|
|
output_dir = tempfile.gettempdir()
|
|
|
|
os.makedirs(output_dir, exist_ok=True)
|
|
timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
|
|
audio_path = os.path.join(output_dir, f'tts_{timestamp}.wav')
|
|
|
|
self.tts.text_to_audio(text, audio_path)
|
|
csv_path = self.a2f.audio_to_csv(audio_path)
|
|
frames = self.parser.csv_to_blend_shapes(csv_path)
|
|
|
|
return {
|
|
'success': True,
|
|
'frames': frames,
|
|
'audio_path': audio_path,
|
|
'csv_path': csv_path
|
|
}
|