Spaces:
Running
Running
| import os | |
| import tempfile | |
| import uuid | |
| from ..output_wrapper import VideoWrapper | |
| from modelscope.utils.constant import Tasks | |
| from .pipeline_tool import ModelscopePipelineTool | |
| class TextToVideoTool(ModelscopePipelineTool): | |
| default_model = 'damo/text-to-video-synthesis' | |
| description = '视频生成服务,针对英文文本输入,生成一段描述视频;如果是中文输入同时依赖插件modelscope_text-translation-zh2en翻译成英文' | |
| name = 'modelscope_video-generation' | |
| parameters: list = [{ | |
| 'name': 'text', | |
| 'description': '用户输入的文本信息', | |
| 'required': True | |
| }] | |
| task = Tasks.text_to_video_synthesis | |
| def _remote_parse_input(self, *args, **kwargs): | |
| return {'input': {'text': kwargs['text']}} | |
| def _local_parse_input(self, *args, **kwargs): | |
| text = kwargs.pop('text', '') | |
| directory = tempfile.mkdtemp() | |
| file_path = os.path.join(directory, str(uuid.uuid4()) + '.mp4') | |
| parsed_args = ({'text': text}, ) | |
| parsed_kwargs = {'output_video': file_path} | |
| return parsed_args, parsed_kwargs | |
| def _parse_output(self, origin_result, remote=True): | |
| video = origin_result['output_video'] | |
| return {'result': VideoWrapper(video)} | |