AI生产线自动化搭建资料库
资料页面

AI课件-infiniteTalk数字人

来源:/Users/ljn/Desktop/自动化搭建/AI生产线知识库/raw/old_dsl/AI课件-infiniteTalk数字人.yml

AI课件-infiniteTalk数字人

这是知识库中的旧 DSL 案例。DSL 本身是机器文件,下面保留原始 YAML,供后续迭代、对照和排错使用。

文件大小
54028 bytes
来源路径
/Users/ljn/Desktop/自动化搭建/AI生产线知识库/raw/old_dsl/AI课件-infiniteTalk数字人.yml
app:
  description: 资源生产管理中心-infiniteTalk数字人
  icon: 🤖
  icon_background: '#E3E5E8'
  icon_type: emoji
  mode: workflow
  name: AI课件-infiniteTalk数字人
  use_icon_as_answer_icon: false
dependencies: []
kind: app
version: 0.3.1
workflow:
  conversation_variables: []
  environment_variables: []
  features:
    file_upload:
      allowed_file_extensions: []
      allowed_file_types: []
      allowed_file_upload_methods:
      - local_file
      - cs_file
      audio:
        enabled: false
        number_limits: 1
        transfer_methods:
        - local_file
      enabled: false
      fileUploadConfig:
        audio_file_size_limit: 100
        batch_count_limit: 5
        file_size_limit: 50
        image_file_size_limit: 20
        video_file_size_limit: 100
        workflow_file_upload_limit: 10
      image:
        enabled: false
        number_limits: 3
        transfer_methods:
        - local_file
        - cs_file
      number_limits: 3
      video:
        enabled: false
        number_limits: 1
        transfer_methods:
        - local_file
    opening_statement: ''
    retriever_resource:
      enabled: true
    sensitive_word_avoidance:
      enabled: false
    speech_to_text:
      enabled: false
    suggested_questions: []
    suggested_questions_after_answer:
      enabled: false
    text_to_speech:
      enabled: false
      language: ''
      voice: ''
  graph:
    edges:
    - data:
        isInLoop: false
        sourceType: http-request
        targetType: code
      id: 1765782882984-source-1765786666983-target
      selected: false
      source: '1765782882984'
      sourceHandle: source
      target: '1765786666983'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: http-request
        targetType: code
      id: 1765786065578-source-1765786897272-target
      selected: false
      source: '1765786065578'
      sourceHandle: source
      target: '1765786897272'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: code
        targetType: code
      id: 1765786666983-source-1765786088559-target
      selected: false
      source: '1765786666983'
      sourceHandle: source
      target: '1765786088559'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: code
        targetType: code
      id: 1765786897272-source-1765786088559-target
      selected: false
      source: '1765786897272'
      sourceHandle: source
      target: '1765786088559'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: code
        targetType: http-request
      id: 1765786088559-source-1765786082921-target
      selected: false
      source: '1765786088559'
      sourceHandle: source
      target: '1765786082921'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        sourceType: loop-start
        targetType: sleep
      id: 1765787430855start-source-1765787457621-target
      selected: false
      source: 1765787430855start
      sourceHandle: source
      target: '1765787457621'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        sourceType: sleep
        targetType: http-request
      id: 1765787457621-source-1765787555844-target
      selected: false
      source: '1765787457621'
      sourceHandle: source
      target: '1765787555844'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        sourceType: if-else
        targetType: code
      id: 1765788244017-true-1765788629007-target
      selected: false
      source: '1765788244017'
      sourceHandle: 'true'
      target: '1765788629007'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        sourceType: code
        targetType: assigner
      id: 1765788629007-source-1765788363329-target
      selected: false
      source: '1765788629007'
      sourceHandle: source
      target: '1765788363329'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        sourceType: assigner
        targetType: loop-end
      id: 1765788363329-source-1765788477761-target
      selected: false
      source: '1765788363329'
      sourceHandle: source
      target: '1765788477761'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInLoop: false
        sourceType: if-else
        targetType: end
      id: 1765801753970-true-1765611114835-target
      selected: false
      source: '1765801753970'
      sourceHandle: 'true'
      target: '1765611114835'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: if-else
        targetType: code
      id: 1765801753970-false-1765787035426-target
      selected: false
      source: '1765801753970'
      sourceHandle: 'false'
      target: '1765787035426'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: code
        targetType: loop
      id: 1765787035426-source-1765787430855-target
      selected: false
      source: '1765787035426'
      sourceHandle: source
      target: '1765787430855'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: http-request
        targetType: if-else
      id: 1765786082921-source-1765801753970-target
      selected: false
      source: '1765786082921'
      sourceHandle: source
      target: '1765801753970'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        sourceType: http-request
        targetType: if-else
      id: 1765787555844-source-1765802878589-target
      selected: false
      source: '1765787555844'
      sourceHandle: source
      target: '1765802878589'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        sourceType: if-else
        targetType: code
      id: 1765802878589-true-1765788122700-target
      selected: false
      source: '1765802878589'
      sourceHandle: 'true'
      target: '1765788122700'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        sourceType: code
        targetType: if-else
      id: 1765788122700-source-1765788244017-target
      selected: false
      source: '1765788122700'
      sourceHandle: source
      target: '1765788244017'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        sourceType: if-else
        targetType: loop-end
      id: 1765802878589-false-1765802941106-target
      selected: false
      source: '1765802878589'
      sourceHandle: 'false'
      target: '1765802941106'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInLoop: false
        sourceType: loop
        targetType: end
      id: 1765787430855-source-1765790582964-target
      selected: false
      source: '1765787430855'
      sourceHandle: source
      target: '1765790582964'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: code
        targetType: http-request
      id: 1765943669094-source-1765786014888-target
      selected: false
      source: '1765943669094'
      sourceHandle: source
      target: '1765786014888'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: code
        targetType: http-request
      id: 1765943664935-source-1765782737445-target
      selected: false
      source: '1765943664935'
      sourceHandle: source
      target: '1765782737445'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: http-request
        targetType: http-request
      id: 1765782737445-source-1765782882984-target
      selected: false
      source: '1765782737445'
      sourceHandle: source
      target: '1765782882984'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: http-request
        targetType: http-request
      id: 1765786014888-source-1765786065578-target
      selected: false
      source: '1765786014888'
      sourceHandle: source
      target: '1765786065578'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: code
        targetType: tool
      id: 1767169068999-source-1767169068998-target
      selected: false
      source: '1767169068999'
      sourceHandle: source
      target: '1767169068998'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: tool
        targetType: code
      id: 1767169068998-source-1767169069000-target
      selected: false
      source: '1767169068998'
      sourceHandle: source
      target: '1767169069000'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: start
        targetType: code
      id: 1757494381783-source-1767169068999-target
      selected: false
      source: '1757494381783'
      sourceHandle: source
      target: '1767169068999'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: code
        targetType: code
      id: 1767169069000-source-1765943664935-target
      selected: false
      source: '1767169069000'
      sourceHandle: source
      target: '1765943664935'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: code
        targetType: code
      id: 1767169069000-source-1765943669094-target
      selected: false
      source: '1767169069000'
      sourceHandle: source
      target: '1765943669094'
      targetHandle: target
      type: custom
      zIndex: 0
    nodes:
    - data:
        desc: ''
        selected: false
        title: 开始
        type: start
        variables:
        - allowed_file_extensions: []
          allowed_file_types:
          - image
          allowed_file_upload_methods:
          - local_file
          label: 数字人图片
          max_length: 48
          options: []
          required: false
          type: file
          variable: upload_image
        - allowed_file_extensions: []
          allowed_file_types:
          - audio
          allowed_file_upload_methods:
          - local_file
          label: 数字人音频
          max_length: 1
          options: []
          required: false
          type: file
          variable: upload_audio
        - label: 每秒帧数(fps),默认25
          max_length: 48
          options: []
          required: false
          type: number
          variable: fps
        - label: 总帧数(默认150)
          max_length: 48
          options: []
          required: false
          type: number
          variable: num_frams
        - label: 数字人动作提示词
          max_length: 10240000
          options: []
          required: true
          type: paragraph
          variable: prompt
        - label: 宽度
          max_length: 48
          options: []
          required: false
          type: number
          variable: width
        - label: 高度
          max_length: 48
          options: []
          required: false
          type: number
          variable: height
        - label: 数字人图片地址
          max_length: 1024
          options: []
          required: false
          type: paragraph
          variable: upload_image_url
        - label: 数字人音频地址
          max_length: 1024
          options: []
          required: false
          type: paragraph
          variable: upload_audio_url
      height: 297
      id: '1757494381783'
      position:
        x: -443.62846787120407
        y: 341.72863619006523
      positionAbsolute:
        x: -443.62846787120407
        y: 341.72863619006523
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        desc: ''
        outputs: []
        selected: false
        title: 结束 2
        type: end
      height: 53
      id: '1765611114835'
      position:
        x: 2793
        y: 270
      positionAbsolute:
        x: 2793
        y: 270
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        authorization:
          config: null
          type: no-auth
        body:
          data: []
          type: none
        desc: ''
        headers: ''
        method: get
        params: ''
        retry_config:
          max_retries: 3
          retry_enabled: true
          retry_interval: 100
        selected: false
        ssl_verify: true
        timeout:
          max_connect_timeout: 0
          max_read_timeout: 0
          max_write_timeout: 0
        title: 获取imagea file
        type: http-request
        url: '{{#1765943664935.result#}}'
        variables: []
      height: 125
      id: '1765782737445'
      position:
        x: 698
        y: 367
      positionAbsolute:
        x: 698
        y: 367
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        authorization:
          config: null
          type: no-auth
        body:
          data:
          - file:
            - '1765782737445'
            - files
            id: key-value-458
            key: image
            type: file
            value: ''
          type: form-data
        desc: ''
        headers: ''
        method: post
        params: ''
        retry_config:
          max_retries: 3
          retry_enabled: true
          retry_interval: 100
        selected: false
        ssl_verify: true
        timeout:
          max_connect_timeout: 0
          max_read_timeout: 0
          max_write_timeout: 0
        title: 上传Image
        type: http-request
        url: '{{#1767169069000.result#}}/api/upload/image'
        variables: []
      height: 141
      id: '1765782882984'
      position:
        x: 1032
        y: 367
      positionAbsolute:
        x: 1032
        y: 367
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        authorization:
          config: null
          type: no-auth
        body:
          data: []
          type: none
        desc: ''
        headers: ''
        method: get
        params: ''
        retry_config:
          max_retries: 3
          retry_enabled: true
          retry_interval: 100
        selected: false
        ssl_verify: true
        timeout:
          max_connect_timeout: 0
          max_read_timeout: 0
          max_write_timeout: 0
        title: 获取Audio File
        type: http-request
        url: '{{#1765943669094.result#}}'
        variables: []
      height: 125
      id: '1765786014888'
      position:
        x: 698
        y: 549
      positionAbsolute:
        x: 698
        y: 549
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        authorization:
          config: null
          type: no-auth
        body:
          data:
          - file:
            - '1765786014888'
            - files
            id: key-value-465
            key: image
            type: file
            value: ''
          type: form-data
        desc: ''
        headers: ''
        method: post
        params: ''
        retry_config:
          max_retries: 3
          retry_enabled: true
          retry_interval: 100
        selected: false
        ssl_verify: true
        timeout:
          max_connect_timeout: 0
          max_read_timeout: 0
          max_write_timeout: 0
        title: 上传Audio
        type: http-request
        url: '{{#1767169069000.result#}}/api/upload/image'
        variables: []
      height: 141
      id: '1765786065578'
      position:
        x: 1032
        y: 549
      positionAbsolute:
        x: 1032
        y: 549
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        authorization:
          config: null
          type: no-auth
        body:
          data:
          - id: key-value-1362
            key: ''
            type: text
            value: '{{#1765786088559.result#}}'
          type: raw-text
        desc: ''
        headers: ''
        method: post
        params: ''
        retry_config:
          max_retries: 1
          retry_enabled: true
          retry_interval: 100
        selected: false
        ssl_verify: true
        timeout:
          max_connect_timeout: 0
          max_read_timeout: 0
          max_write_timeout: 0
        title: 发起生成任务
        type: http-request
        url: '{{#1767169069000.result#}}/api/prompt'
        variables: []
      height: 141
      id: '1765786082921'
      position:
        x: 2034
        y: 367
      positionAbsolute:
        x: 2034
        y: 367
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        code: "function main({imageName, audioName, prompt}) {\n    var request_json\
          \ = {\n        \"client_id\":\"123asdfasfasd123456789\",\n        \"prompt\"\
          : {\n            \"24\": {\n            \"inputs\": {\n                \"\
          model_name\": \"umt5-xxl-enc-fp8_e4m3fn.safetensors\",\n               \
          \ \"precision\": \"bf16\",\n                \"positive_prompt\": prompt,\n\
          \                \"negative_prompt\": \"bright tones, overexposed, static,\
          \ blurred details, subtitles, style, works, paintings, images, static, overall\
          \ gray, worst quality, low quality, JPEG compression residue, ugly, incomplete,\
          \ extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,\
          \ misshapen limbs, fused fingers, still picture, messy background, three\
          \ legs, many people in the background, walking backwards\",\n          \
          \      \"quantization\": \"disabled\",\n                \"use_disk_cache\"\
          : false,\n                \"device\": \"gpu\"\n            },\n        \
          \    \"class_type\": \"WanVideoTextEncodeCached\",\n            \"_meta\"\
          : {\n                \"title\": \"WanVideo TextEncode Cached\"\n       \
          \     }\n            },\n            \"39\": {\n            \"inputs\":\
          \ {\n                \"image\": imageName\n            },\n            \"\
          class_type\": \"LoadImage\",\n            \"_meta\": {\n               \
          \ \"title\": \"加载图像\"\n            }\n            },\n            \"40\"\
          : {\n            \"inputs\": {\n                \"audio\": audioName,\n\
          \                \"audioUI\": \"\"\n            },\n            \"class_type\"\
          : \"LoadAudio\",\n            \"_meta\": {\n                \"title\": \"\
          加载音频\"\n            }\n            },\n            \"6\": {\n          \
          \  \"inputs\": {\n                \"model\": \"Wan2_1-I2V-14B-720P_fp8_e4m3fn.safetensors\"\
          ,\n                \"base_precision\": \"fp16_fast\",\n                \"\
          quantization\": \"disabled\",\n                \"load_device\": \"offload_device\"\
          ,\n                \"attention_mode\": \"sdpa\",\n                \"compile_args\"\
          : [\n                \"5\",\n                0\n                ],\n   \
          \             \"block_swap_args\": [\n                \"22\",\n        \
          \        0\n                ],\n                \"lora\": [\n          \
          \      \"23\",\n                0\n                ],\n                \"\
          multitalk_model\": [\n                \"27\",\n                0\n     \
          \           ]\n            },\n            \"class_type\": \"WanVideoModelLoader\"\
          ,\n            \"_meta\": {\n                \"title\": \"WanVideo 模型加载器\"\
          \n            }\n            },\n            \"3\": {\n            \"inputs\"\
          : {\n                \"frame_rate\": 25,\n                \"loop_count\"\
          : 0,\n                \"filename_prefix\": \"WanVideo2_1_InfiniteTalk\"\
          ,\n                \"format\": \"video/h264-mp4\",\n                \"pix_fmt\"\
          : \"yuv420p\",\n                \"crf\": 19,\n                \"save_metadata\"\
          : true,\n                \"trim_to_audio\": false,\n                \"pingpong\"\
          : false,\n                \"save_output\": true,\n                \"images\"\
          : [\n                \"10\",\n                0\n                ],\n  \
          \              \"audio\": [\n                \"43\",\n                0\n\
          \                ]\n            },\n            \"class_type\": \"VHS_VideoCombine\"\
          ,\n            \"_meta\": {\n                \"title\": \"合并为视频\"\n    \
          \        }\n            },\n            \"4\": {\n            \"inputs\"\
          : {\n                \"width\": [\n                \"46\",\n           \
          \     0\n                ],\n                \"height\": [\n           \
          \     \"45\",\n                0\n                ],\n                \"\
          upscale_method\": \"lanczos\",\n                \"keep_proportion\": \"\
          crop\",\n                \"pad_color\": \"0, 0, 0\",\n                \"\
          crop_position\": \"center\",\n                \"divisible_by\": 16,\n  \
          \              \"device\": \"cpu\",\n                \"image\": [\n    \
          \            \"39\",\n                0\n                ]\n           \
          \ },\n            \"class_type\": \"ImageResizeKJv2\",\n            \"_meta\"\
          : {\n                \"title\": \"调整图像大小V2\"\n            }\n          \
          \  },\n            \"5\": {\n            \"inputs\": {\n               \
          \ \"backend\": \"inductor\",\n                \"fullgraph\": false,\n  \
          \              \"mode\": \"default\",\n                \"dynamic\": false,\n\
          \                \"dynamo_cache_size_limit\": 64,\n                \"compile_transformer_blocks_only\"\
          : true,\n                \"dynamo_recompile_limit\": 128\n            },\n\
          \            \"class_type\": \"WanVideoTorchCompileSettings\",\n       \
          \     \"_meta\": {\n                \"title\": \"WanVideo 火炬编译设置\"\n   \
          \         }\n            },\n            \"8\": {\n            \"inputs\"\
          : {\n                \"model_name\": \"wan_2.1_vae.safetensors\",\n    \
          \            \"precision\": \"bf16\"\n            },\n            \"class_type\"\
          : \"WanVideoVAELoader\",\n            \"_meta\": {\n                \"title\"\
          : \"WanVideo VAE 加载器\"\n            }\n            },\n            \"10\"\
          : {\n            \"inputs\": {\n                \"enable_vae_tiling\": false,\n\
          \                \"tile_x\": 272,\n                \"tile_y\": 272,\n  \
          \              \"tile_stride_x\": 144,\n                \"tile_stride_y\"\
          : 128,\n                \"normalization\": \"default\",\n              \
          \  \"vae\": [\n                \"8\",\n                0\n             \
          \   ],\n                \"samples\": [\n                \"12\",\n      \
          \          0\n                ]\n            },\n            \"class_type\"\
          : \"WanVideoDecode\",\n            \"_meta\": {\n                \"title\"\
          : \"WanVideo 解码\"\n            }\n            },\n            \"12\": {\n\
          \            \"inputs\": {\n                \"steps\": 4,\n            \
          \    \"cfg\": 1.0000000000000002,\n                \"shift\": 11.000000000000002,\n\
          \                \"seed\": 2,\n                \"force_offload\": true,\n\
          \                \"scheduler\": \"dpm++_sde\",\n                \"riflex_freq_index\"\
          : 0,\n                \"denoise_strength\": 1,\n                \"batched_cfg\"\
          : false,\n                \"rope_function\": \"comfy\",\n              \
          \  \"start_step\": 0,\n                \"end_step\": -1,\n             \
          \   \"add_noise_to_samples\": true,\n                \"model\": [\n    \
          \            \"6\",\n                0\n                ],\n           \
          \     \"image_embeds\": [\n                \"16\",\n                0\n\
          \                ],\n                \"text_embeds\": [\n              \
          \  \"24\",\n                0\n                ],\n                \"multitalk_embeds\"\
          : [\n                \"33\",\n                0\n                ]\n   \
          \         },\n            \"class_type\": \"WanVideoSampler\",\n       \
          \     \"_meta\": {\n                \"title\": \"WanVideo 采样器\"\n      \
          \      }\n            },\n            \"14\": {\n            \"inputs\"\
          : {\n                \"strength_1\": 1,\n                \"strength_2\"\
          : 1,\n                \"crop\": \"center\",\n                \"combine_embeds\"\
          : \"average\",\n                \"force_offload\": true,\n             \
          \   \"tiles\": 0,\n                \"ratio\": 0.5,\n                \"clip_vision\"\
          : [\n                \"15\",\n                0\n                ],\n  \
          \              \"image_1\": [\n                \"53\",\n               \
          \ 0\n                ]\n            },\n            \"class_type\": \"WanVideoClipVisionEncode\"\
          ,\n            \"_meta\": {\n                \"title\": \"WanVideo 视觉编码器编码\"\
          \n            }\n            },\n            \"15\": {\n            \"inputs\"\
          : {\n                \"clip_name\": \"clip_vision_vit_h.safetensors\"\n\
          \            },\n            \"class_type\": \"CLIPVisionLoader\",\n   \
          \         \"_meta\": {\n                \"title\": \"加载CLIP视觉\"\n      \
          \      }\n            },\n            \"16\": {\n            \"inputs\"\
          : {\n                \"width\": [\n                \"53\",\n           \
          \     1\n                ],\n                \"height\": [\n           \
          \     \"53\",\n                2\n                ],\n                \"\
          frame_window_size\": 81,\n                \"motion_frame\": 9,\n       \
          \         \"force_offload\": false,\n                \"colormatch\": \"\
          disabled\",\n                \"tiled_vae\": false,\n                \"mode\"\
          : \"infinitetalk\",\n                \"vae\": [\n                \"8\",\n\
          \                0\n                ],\n                \"start_image\"\
          : [\n                \"53\",\n                0\n                ],\n  \
          \              \"clip_embeds\": [\n                \"14\",\n           \
          \     0\n                ]\n            },\n            \"class_type\":\
          \ \"WanVideoImageToVideoMultiTalk\",\n            \"_meta\": {\n       \
          \         \"title\": \"WanVideo 图像转视频 MultiTalk\"\n            }\n     \
          \       },\n            \"19\": {\n            \"inputs\": {\n         \
          \       \"preview\": \"\",\n                \"source\": [\n            \
          \    \"33\",\n                2\n                ]\n            },\n   \
          \         \"class_type\": \"PreviewAny\",\n            \"_meta\": {\n  \
          \              \"title\": \"预览任意\"\n            }\n            },\n    \
          \        \"22\": {\n            \"inputs\": {\n                \"blocks_to_swap\"\
          : 30,\n                \"offload_img_emb\": false,\n                \"offload_txt_emb\"\
          : false,\n                \"use_non_blocking\": true,\n                \"\
          vace_blocks_to_swap\": 0,\n                \"prefetch_blocks\": 1,\n   \
          \             \"block_swap_debug\": false\n            },\n            \"\
          class_type\": \"WanVideoBlockSwap\",\n            \"_meta\": {\n       \
          \         \"title\": \"WanVideo 块交换\"\n            }\n            },\n \
          \           \"23\": {\n            \"inputs\": {\n                \"lora\"\
          : \"Wan21_I2V_14B_lightx2v_cfg_step_distill_lora_rank64.safetensors\",\n\
          \                \"strength\": 1,\n                \"low_mem_load\": false,\n\
          \                \"merge_loras\": false\n            },\n            \"\
          class_type\": \"WanVideoLoraSelect\",\n            \"_meta\": {\n      \
          \          \"title\": \"WanVideo Lora 选择\"\n            }\n            },\n\
          \            \"26\": {\n            \"inputs\": {\n                \"model\"\
          : \"TencentGameMate/chinese-wav2vec2-base\",\n                \"base_precision\"\
          : \"fp16\",\n                \"load_device\": \"main_device\"\n        \
          \    },\n            \"class_type\": \"DownloadAndLoadWav2VecModel\",\n\
          \            \"_meta\": {\n                \"title\": \"下载 Wav2Vec 模型\"\n\
          \            }\n            },\n            \"27\": {\n            \"inputs\"\
          : {\n                \"model\": \"Wan2_1-InfiniTetalk-Single_fp16.safetensors\"\
          \n            },\n            \"class_type\": \"MultiTalkModelLoader\",\n\
          \            \"_meta\": {\n                \"title\": \"MultiTalk 模型加载器\"\
          \n            }\n            },\n            \"33\": {\n            \"inputs\"\
          : {\n                \"normalize_loudness\": true,\n                \"num_frames\"\
          : 1000,\n                \"fps\": 25,\n                \"audio_scale\":\
          \ 1,\n                \"audio_cfg_scale\": 1,\n                \"multi_audio_type\"\
          : \"para\",\n                \"wav2vec_model\": [\n                \"26\"\
          ,\n                0\n                ],\n                \"audio_1\": [\n\
          \                \"42\",\n                3\n                ]\n       \
          \     },\n            \"class_type\": \"MultiTalkWav2VecEmbeds\",\n    \
          \        \"_meta\": {\n                \"title\": \"MultiTalk Wav2Vec 嵌入\"\
          \n            }\n            },\n            \"42\": {\n            \"inputs\"\
          : {\n                \"chunk_fade_shape\": \"linear\",\n               \
          \ \"chunk_length\": 10,\n                \"chunk_overlap\": 0.1,\n     \
          \           \"audio\": [\n                \"43\",\n                0\n \
          \               ]\n            },\n            \"class_type\": \"AudioSeparation\"\
          ,\n            \"_meta\": {\n                \"title\": \"\U0001F3B5 音频分离\"\
          \n            }\n            },\n            \"43\": {\n            \"inputs\"\
          : {\n                \"start_time\": \"0:00\",\n                \"end_time\"\
          : \"0:20\",\n                \"audio\": [\n                \"40\",\n   \
          \             0\n                ]\n            },\n            \"class_type\"\
          : \"AudioCrop\",\n            \"_meta\": {\n                \"title\": \"\
          \U0001F3B5 音频裁剪\"\n            }\n            },\n            \"45\": {\n\
          \            \"inputs\": {\n                \"value\": 1092\n          \
          \  },\n            \"class_type\": \"JWInteger\",\n            \"_meta\"\
          : {\n                \"title\": \"图片高度\"\n            }\n            },\n\
          \            \"46\": {\n            \"inputs\": {\n                \"value\"\
          : 720\n            },\n            \"class_type\": \"JWInteger\",\n    \
          \        \"_meta\": {\n                \"title\": \"图片宽度\"\n           \
          \ }\n            },\n            \"48\": {\n            \"inputs\": {\n\
          \                \"audioUI\": \"\",\n                \"audio\": [\n    \
          \            \"43\",\n                0\n                ]\n           \
          \ },\n            \"class_type\": \"PreviewAudio\",\n            \"_meta\"\
          : {\n                \"title\": \"预览音频\"\n            }\n            },\n\
          \            \"49\": {\n            \"inputs\": {\n                \"audioUI\"\
          : \"\",\n                \"audio\": [\n                \"42\",\n       \
          \         3\n                ]\n            },\n            \"class_type\"\
          : \"PreviewAudio\",\n            \"_meta\": {\n                \"title\"\
          : \"预览音频\"\n            }\n            },\n            \"53\": {\n     \
          \       \"inputs\": {\n                \"image\": [\n                \"\
          4\",\n                0\n                ]\n            },\n           \
          \ \"class_type\": \"GetImageSizeAndCount\",\n            \"_meta\": {\n\
          \                \"title\": \"获取图像尺寸数量\"\n            }\n            }\n\
          \        }\n        };\n    return {\n        result : JSON.stringify(request_json)\n\
          \    };\n}"
        code_language: javascript
        desc: ''
        outputs:
          result:
            children: null
            type: string
        selected: false
        title: 构建生成任务请求参数
        type: code
        variables:
        - value_selector:
          - '1765786666983'
          - imageName
          value_type: string
          variable: imageName
        - value_selector:
          - '1765786897272'
          - audioName
          value_type: string
          variable: audioName
        - value_selector:
          - '1757494381783'
          - prompt
          value_type: string
          variable: prompt
      height: 53
      id: '1765786088559'
      position:
        x: 1700
        y: 367
      positionAbsolute:
        x: 1700
        y: 367
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        code: "\nfunction main({arg1}) {\n    return {\n        imageName: JSON.parse(arg1).name\n\
          \    }\n}\n"
        code_language: javascript
        desc: ''
        outputs:
          imageName:
            children: null
            type: string
        selected: false
        title: 获取上传图片名称
        type: code
        variables:
        - value_selector:
          - '1765782882984'
          - body
          value_type: string
          variable: arg1
      height: 53
      id: '1765786666983'
      position:
        x: 1366
        y: 367
      positionAbsolute:
        x: 1366
        y: 367
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        code: "\nfunction main({arg1}) {\n    return {\n        audioName: JSON.parse(arg1).name\n\
          \    }\n}\n"
        code_language: javascript
        desc: ''
        outputs:
          audioName:
            children: null
            type: string
        selected: false
        title: 获取上传音频名称
        type: code
        variables:
        - value_selector:
          - '1765786065578'
          - body
          value_type: string
          variable: arg1
      height: 53
      id: '1765786897272'
      position:
        x: 1366
        y: 549
      positionAbsolute:
        x: 1366
        y: 549
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        code: "\nfunction main({arg1}) {\n    return {\n        promptId: JSON.parse(arg1).prompt_id\n\
          \    }\n}\n"
        code_language: javascript
        desc: ''
        outputs:
          promptId:
            children: null
            type: string
        selected: false
        title: 获取任务id
        type: code
        variables:
        - value_selector:
          - '1765786082921'
          - body
          value_type: string
          variable: arg1
      height: 53
      id: '1765787035426'
      position:
        x: 3127
        y: 387
      positionAbsolute:
        x: 3127
        y: 387
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        break_conditions: []
        desc: ''
        error_handle_mode: terminated
        height: 321
        logical_operator: and
        loop_count: 100
        loop_variables:
        - id: 4b1b1d0a-3f42-45f7-b362-2b33d7106ce4
          label: video_url
          value: '"1"'
          value_type: constant
          var_type: string
        selected: false
        start_node_id: 1765787430855start
        title: 循环
        type: loop
        width: 2706
      height: 321
      id: '1765787430855'
      position:
        x: 3461
        y: 387
      positionAbsolute:
        x: 3461
        y: 387
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 2706
      zIndex: 1
    - data:
        desc: ''
        isInLoop: true
        selected: false
        title: ''
        type: loop-start
      draggable: false
      height: 48
      id: 1765787430855start
      parentId: '1765787430855'
      position:
        x: 60
        y: 116
      positionAbsolute:
        x: 3521
        y: 503
      selectable: false
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom-loop-start
      width: 44
      zIndex: 1002
    - data:
        desc: ''
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        selected: false
        sleep_time_ms: 60000
        title: 等待
        type: sleep
      height: 85
      id: '1765787457621'
      parentId: '1765787430855'
      position:
        x: 204
        y: 97
      positionAbsolute:
        x: 3665
        y: 484
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
      zIndex: 1002
    - data:
        authorization:
          config: null
          type: no-auth
        body:
          data: []
          type: none
        desc: ''
        headers: ''
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        method: get
        params: ''
        retry_config:
          max_retries: 3
          retry_enabled: true
          retry_interval: 100
        selected: false
        ssl_verify: true
        timeout:
          max_connect_timeout: 0
          max_read_timeout: 0
          max_write_timeout: 0
        title: 查询任务历史
        type: http-request
        url: '{{#1767169069000.result#}}/api/history/{{#1765787035426.promptId#}}'
        variables: []
      height: 159
      id: '1765787555844'
      parentId: '1765787430855'
      position:
        x: 508
        y: 60
      positionAbsolute:
        x: 3969
        y: 447
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
      zIndex: 1002
    - data:
        code: "\nfunction main({arg1}) {\n    return {\n        result: arg1 == \"\
          {}\" ? 0 : 1\n    }\n}\n"
        code_language: javascript
        desc: ''
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        outputs:
          result:
            children: null
            type: number
        selected: false
        title: 解析轮询结果
        type: code
        variables:
        - value_selector:
          - '1765787555844'
          - body
          value_type: string
          variable: arg1
      height: 53
      id: '1765788122700'
      parentId: '1765787430855'
      position:
        x: 1116
        y: 113
      positionAbsolute:
        x: 4577
        y: 500
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
      zIndex: 1002
    - data:
        cases:
        - case_id: 'true'
          conditions:
          - comparison_operator: '='
            id: 260bd241-5b6f-4e0c-b8aa-5c126c6298be
            value: '1'
            varType: number
            variable_selector:
            - '1765788122700'
            - result
          id: 'true'
          logical_operator: and
        desc: ''
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        selected: false
        title: 任务完成判断
        type: if-else
      height: 125
      id: '1765788244017'
      parentId: '1765787430855'
      position:
        x: 1420
        y: 77
      positionAbsolute:
        x: 4881
        y: 464
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
      zIndex: 1002
    - data:
        desc: ''
        isInIteration: false
        isInLoop: true
        items:
        - input_type: variable
          operation: over-write
          value:
          - '1765788629007'
          - result
          variable_selector:
          - '1765787430855'
          - video_url
          write_mode: over-write
        loop_id: '1765787430855'
        selected: false
        title: 变量赋值
        type: assigner
        version: '2'
      height: 85
      id: '1765788363329'
      parentId: '1765787430855'
      position:
        x: 2028
        y: 97
      positionAbsolute:
        x: 5489
        y: 484
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
      zIndex: 1002
    - data:
        desc: ''
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        selected: false
        title: 退出循环
        type: loop-end
      height: 53
      id: '1765788477761'
      parentId: '1765787430855'
      position:
        x: 2332
        y: 113
      positionAbsolute:
        x: 5793
        y: 500
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom-simple
      width: 243
      zIndex: 1002
    - data:
        code: "\nfunction main({body, promptId, host}) {\n    var fileInfo = JSON.parse(body)[promptId].outputs[\"\
          3\"].gifs[0];\n    return {\n        result: host + \"/api/viewvideo?filename=\"\
          \ + fileInfo.filename + \"&type=\"+ fileInfo.type +\"&subfolder=\"+fileInfo.subfolder+\"\
          &format=\"+fileInfo.format+\"&frame_rate=\"+fileInfo.frame_rate\n    }\n\
          }\n"
        code_language: javascript
        desc: ''
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        outputs:
          result:
            children: null
            type: string
        selected: false
        title: 获取Url
        type: code
        variables:
        - value_selector:
          - '1765787555844'
          - body
          value_type: string
          variable: body
        - value_selector:
          - '1765787035426'
          - promptId
          value_type: string
          variable: promptId
        - value_selector:
          - '1767169069000'
          - result
          value_type: string
          variable: host
      height: 53
      id: '1765788629007'
      parentId: '1765787430855'
      position:
        x: 1724
        y: 113
      positionAbsolute:
        x: 5185
        y: 500
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
      zIndex: 1002
    - data:
        desc: ''
        outputs:
        - value_selector:
          - '1765787430855'
          - video_url
          value_type: string
          variable: VideoUrl
        selected: false
        title: 结束 2
        type: end
      height: 89
      id: '1765790582964'
      position:
        x: 6274.383018653639
        y: 387
      positionAbsolute:
        x: 6274.383018653639
        y: 387
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        cases:
        - case_id: 'true'
          conditions:
          - comparison_operator: ≠
            id: ccc10467-43b7-4448-8a17-6e97b7facfc6
            value: '200'
            varType: number
            variable_selector:
            - '1765786082921'
            - status_code
          id: 'true'
          logical_operator: and
        desc: ''
        selected: false
        title: 发起生成任务结果判断
        type: if-else
      height: 125
      id: '1765801753970'
      position:
        x: 2368
        y: 367
      positionAbsolute:
        x: 2368
        y: 367
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        cases:
        - case_id: 'true'
          conditions:
          - comparison_operator: '='
            id: 69f03f0f-96be-4bd0-b122-5876f9df282d
            value: '200'
            varType: number
            variable_selector:
            - '1765787555844'
            - status_code
          id: 'true'
          logical_operator: and
        desc: ''
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        selected: false
        title: 查询任务结果判断
        type: if-else
      height: 125
      id: '1765802878589'
      parentId: '1765787430855'
      position:
        x: 812
        y: 77
      positionAbsolute:
        x: 4273
        y: 464
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
      zIndex: 1002
    - data:
        desc: ''
        isInIteration: false
        isInLoop: true
        loop_id: '1765787430855'
        selected: false
        title: 退出循环 2
        type: loop-end
      height: 53
      id: '1765802941106'
      parentId: '1765787430855'
      position:
        x: 1116
        y: 207
      positionAbsolute:
        x: 4577
        y: 594
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom-simple
      width: 243
      zIndex: 1002
    - data:
        code: "\nfunction main({arg1, arg2}) {\n    return {\n        result: !!arg2\
          \ ? arg2 : arg1\n    }\n}\n"
        code_language: javascript
        desc: ''
        outputs:
          result:
            children: null
            type: string
        selected: false
        title: 获取图片地址
        type: code
        variables:
        - value_selector:
          - '1757494381783'
          - upload_image
          - url
          value_type: file
          variable: arg1
        - value_selector:
          - '1757494381783'
          - upload_image_url
          value_type: string
          variable: arg2
      height: 53
      id: '1765943664935'
      position:
        x: 380.71484270828626
        y: 367
      positionAbsolute:
        x: 380.71484270828626
        y: 367
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        code: "\nfunction main({arg1, arg2}) {\n    return {\n        result: !!arg2\
          \ ? arg2 : arg1\n    }\n}\n"
        code_language: javascript
        desc: ''
        outputs:
          result:
            children: null
            type: string
        selected: false
        title: 获取音频地址
        type: code
        variables:
        - value_selector:
          - '1757494381783'
          - upload_audio
          - url
          value_type: file
          variable: arg1
        - value_selector:
          - '1757494381783'
          - upload_audio_url
          value_type: string
          variable: arg2
      height: 53
      id: '1765943669094'
      position:
        x: 380.71484270828626
        y: 549
      positionAbsolute:
        x: 380.71484270828626
        y: 549
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        desc: ''
        is_team_authorization: true
        output_schema: null
        outputs:
        - type: string
          value_selector:
          - '1737544327563'
          - result
          variable: result
        paramSchemas:
        - auto_generate: null
          default: null
          form: llm
          human_description:
            en_US: ''
            ja_JP: ''
            pt_BR: ''
            zh_Hans: ''
          label:
            en_US: 命令
            ja_JP: 命令
            pt_BR: 命令
            zh_Hans: 命令
          llm_description: ''
          max: null
          min: null
          name: cmd
          options: []
          placeholder:
            en_US: ''
            ja_JP: ''
            pt_BR: ''
            zh_Hans: ''
          precision: null
          required: true
          scope: null
          template: null
          type: string
        - auto_generate: null
          default: null
          form: llm
          human_description:
            en_US: ''
            ja_JP: ''
            pt_BR: ''
            zh_Hans: ''
          label:
            en_US: 参数
            ja_JP: 参数
            pt_BR: 参数
            zh_Hans: 参数
          llm_description: ''
          max: null
          min: null
          name: param
          options: []
          placeholder:
            en_US: ''
            ja_JP: ''
            pt_BR: ''
            zh_Hans: ''
          precision: null
          required: true
          scope: null
          template: null
          type: string
        params:
          cmd: ''
          param: ''
        provider_id: ba28022e-17fd-4b4a-be00-b701ed7a3661
        provider_name: 卡拉OK-生产机命令分发
        provider_type: workflow
        selected: false
        title: 卡拉OK-生产机命令分发 (3)
        tool_configurations: {}
        tool_description: 统一生产机http请求逻辑
        tool_label: 卡拉OK-生产机命令分发
        tool_name: aiKaraokePoster
        tool_node_version: '2'
        tool_parameters:
          cmd:
            type: mixed
            value: cmd_redirect
          param:
            type: mixed
            value: '{{#1767169068999.result#}}'
        type: tool
      height: 93
      id: '1767169068998'
      position:
        x: -43.56489237235178
        y: 429.7347052939663
      positionAbsolute:
        x: -43.56489237235178
        y: 429.7347052939663
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        code: "function main() {\n    const result = {\n        \"url\": \"http://192.168.56.57:8880/comfyui-service-host\"\
          ,\n        \"data\": {\n            type:  \"infinitetalk\",\n        }\n\
          \    };\n    return {\n        result: JSON.stringify(result)\n    }\n}"
        code_language: javascript
        desc: ''
        outputs:
          result:
            children: null
            type: string
        selected: false
        title: 构建获取Host接口参数
        type: code
        variables: []
      height: 53
      id: '1767169068999'
      position:
        x: -43.56489237235178
        y: 340.93854783776163
      positionAbsolute:
        x: -43.56489237235178
        y: 340.93854783776163
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    - data:
        code: "function main({ arg1 }) {\n  let host = JSON.parse(arg1[0].result).host;\n\
          \  return {\n    result: !!host ? host : \"https://q7rasns0jlj9q34v-8188.container.x-gpu.com\"\
          \n  }\n}"
        code_language: javascript
        desc: ''
        outputs:
          result:
            children: null
            type: string
        selected: true
        title: 获取Host
        type: code
        variables:
        - value_selector:
          - '1767169068998'
          - json
          value_type: array[object]
          variable: arg1
      height: 53
      id: '1767169069000'
      position:
        x: -43.56489237235178
        y: 551.6117841554236
      positionAbsolute:
        x: -43.56489237235178
        y: 551.6117841554236
      selected: true
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 243
    viewport:
      x: 547.1383317773311
      y: 397.07224099080815
      zoom: 0.6597539553864489