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 }