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

古诗词Mv生产-提取歌词

来源:/Users/ljn/Desktop/自动化搭建/AI生产线知识库/raw/old_dsl/古诗词Mv生产-提取歌词.yml

古诗词Mv生产-提取歌词

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

文件大小
33166 bytes
来源路径
/Users/ljn/Desktop/自动化搭建/AI生产线知识库/raw/old_dsl/古诗词Mv生产-提取歌词.yml
app:
  description: 古诗词Mv生产-提取歌词
  icon: 🤖
  icon_background: '#E3E5E8'
  icon_type: emoji
  mode: workflow
  name: 古诗词Mv生产-提取歌词
  use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
  type: package
  value:
    plugin_unique_identifier: aict/ai_hub:3.3.1@4e71d8262fbecb133fd6801e8b0a4c141f0bf4f0d6b68cec1b5c254a65365e96
kind: app
version: 0.3.1
workflow:
  conversation_variables: []
  environment_variables:
  - description: ''
    id: bd0ec147-2e55-4611-b8bc-b10c5e8a1154
    name: token
    selector:
    - env
    - token
    value: ''
    value_type: secret
  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:
        isInIteration: false
        isInLoop: false
        sourceType: http-request
        targetType: code
      id: 1775894461313-source-1775894745736-target
      source: '1775894461313'
      sourceHandle: source
      target: '1775894745736'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        sourceType: iteration-start
        targetType: http-request
      id: 1775896386572start-source-1775896445458-target
      source: 1775896386572start
      sourceHandle: source
      target: '1775896445458'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        sourceType: http-request
        targetType: code
      id: 1775896445458-source-1775896471464-target
      source: '1775896445458'
      sourceHandle: source
      target: '1775896471464'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        sourceType: code
        targetType: if-else
      id: 1775896471464-source-1775896495874-target
      source: '1775896471464'
      sourceHandle: source
      target: '1775896495874'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        sourceType: if-else
        targetType: sleep
      id: 1775896495874-true-1775896546853-target
      source: '1775896495874'
      sourceHandle: 'true'
      target: '1775896546853'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        sourceType: if-else
        targetType: code
      id: 1775896495874-false-1775896558141-target
      source: '1775896495874'
      sourceHandle: 'false'
      target: '1775896558141'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInLoop: false
        sourceType: code
        targetType: iteration
      id: 1775894745736-source-1775896386572-target
      source: '1775894745736'
      sourceHandle: source
      target: '1775896386572'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: iteration
        targetType: code
      id: 1775896386572-source-1775899252828-target
      source: '1775896386572'
      sourceHandle: source
      target: '1775899252828'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        sourceType: sleep
        targetType: code
      id: 1775896546853-source-1775896558141-target
      source: '1775896546853'
      sourceHandle: source
      target: '1775896558141'
      targetHandle: target
      type: custom
      zIndex: 1002
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: code
        targetType: tool
      id: 1775899252828-source-1775899717844-target
      source: '1775899252828'
      sourceHandle: source
      target: '1775899717844'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: tool
        targetType: code
      id: 1775899717844-source-1775899817592-target
      source: '1775899717844'
      sourceHandle: source
      target: '1775899817592'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: code
        targetType: llm
      id: 1775899817592-source-1775900623427-target
      source: '1775899817592'
      sourceHandle: source
      target: '1775900623427'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: llm
        targetType: end
      id: 1775900623427-source-1775895707440-target
      source: '1775900623427'
      sourceHandle: source
      target: '1775895707440'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: start
        targetType: http-request
      id: 1775893207500-source-1775894461313-target
      source: '1775893207500'
      sourceHandle: source
      target: '1775894461313'
      targetHandle: target
      type: custom
      zIndex: 0
    nodes:
    - data:
        desc: ''
        selected: false
        title: 开始
        type: start
        variables:
        - label: audio_url
          max_length: 50000
          options: []
          required: false
          type: paragraph
          variable: audio_url
        - label: lyrics_info
          max_length: 50000
          options: []
          required: true
          type: paragraph
          variable: lyrics_info
      height: 116
      id: '1775893207500'
      position:
        x: 159.05589350854206
        y: 356.75
      positionAbsolute:
        x: 159.05589350854206
        y: 356.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        authorization:
          config: null
          type: no-auth
        body:
          data:
          - id: key-value-258
            key: ''
            type: text
            value: "{\n    \"model\":\"fun-asr\", //模型名,必选\n    \"input\":{\n    \
              \    \"file_urls\":[\n            \"{{#1775893207500.audio_url#}}\"\n\
              \        ] //待识别文件,必选\n    },\n    \"parameters\":{ \n        \"channel_id\"\
              :[\n            0\n        ], //音轨索引,可选\n        \"diarization_enabled\"\
              :false, //自动说话人分离,可选\n    }\n}"
          type: json
        desc: ''
        headers: 'Authorization:Bearer {{#env.token#}}

          Content-Type:application/json

          X-DashScope-Async:enable'
        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: 时间轴数据
        type: http-request
        url: https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription
        variables: []
      height: 156
      id: '1775894461313'
      position:
        x: 633
        y: 356.75
      positionAbsolute:
        x: 633
        y: 356.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        code: "\nfunction main({body}) {\n    const parsed = JSON.parse(body).output;\n\
          \    return {\n        task_id: parsed.task_id,\n        task_status: parsed.task_status,\n\
          \        polling_array: Array.from({ length: 30 }).fill(1),\n    }\n}\n"
        code_language: javascript
        desc: ''
        outputs:
          polling_array:
            children: null
            type: array[number]
          task_id:
            children: null
            type: string
          task_status:
            children: null
            type: string
        selected: false
        title: get task_id
        type: code
        variables:
        - value_selector:
          - '1775894461313'
          - body
          value_type: string
          variable: body
      height: 54
      id: '1775894745736'
      position:
        x: 936
        y: 356.75
      positionAbsolute:
        x: 936
        y: 356.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        desc: ''
        outputs:
        - value_selector:
          - '1775900623427'
          - structured_output
          - lyrics_info
          value_type: object
          variable: lyrics_json
        selected: false
        title: 结束
        type: end
      height: 90
      id: '1775895707440'
      position:
        x: 4230
        y: 356.75
      positionAbsolute:
        x: 4230
        y: 356.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        desc: ''
        error_handle_mode: terminated
        height: 313.5
        is_parallel: false
        iterator_input_type: array[number]
        iterator_selector:
        - '1775894745736'
        - polling_array
        output_selector:
        - '1775896558141'
        - result_info
        output_type: array[object]
        parallel_nums: 10
        selected: false
        start_node_id: 1775896386572start
        title: 遍历
        type: iteration
        width: 1719
      height: 314
      id: '1775896386572'
      position:
        x: 1239
        y: 356.75
      positionAbsolute:
        x: 1239
        y: 356.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 1719
      zIndex: 1
    - data:
        desc: ''
        isInIteration: true
        selected: false
        title: ''
        type: iteration-start
      draggable: false
      height: 48
      id: 1775896386572start
      parentId: '1775896386572'
      position:
        x: 60
        y: 114.5
      positionAbsolute:
        x: 1299
        y: 471.25
      selectable: false
      sourcePosition: right
      targetPosition: left
      type: custom-iteration-start
      width: 44
      zIndex: 1002
    - data:
        authorization:
          config: null
          type: no-auth
        body:
          data: []
          type: none
        desc: ''
        headers: Authorization:Bearer {{#env.token#}}
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        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: check status
        type: http-request
        url: https://dashscope.aliyuncs.com/api/v1/tasks/{{#1775894745736.task_id#}}
        variables: []
      height: 159
      id: '1775896445458'
      parentId: '1775896386572'
      position:
        x: 204
        y: 60
      positionAbsolute:
        x: 1443
        y: 416.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
      zIndex: 1002
    - data:
        code: "\nfunction main({body}) {\n    const parsed = JSON.parse(body).output;\n\
          \    return {\n        task_status: parsed.task_status,\n        message:\
          \ parsed.message || \"\",\n    }\n}\n"
        code_language: javascript
        desc: ''
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        outputs:
          message:
            children: null
            type: string
          task_status:
            children: null
            type: string
        selected: false
        title: extract body
        type: code
        variables:
        - value_selector:
          - '1775896445458'
          - body
          value_type: string
          variable: body
      height: 54
      id: '1775896471464'
      parentId: '1775896386572'
      position:
        x: 507
        y: 112
      positionAbsolute:
        x: 1746
        y: 468.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
      zIndex: 1002
    - data:
        cases:
        - case_id: 'true'
          conditions:
          - comparison_operator: contains
            id: 354ceb42-7d99-4d34-9c75-f37d7b8dc369
            value: RUNNING
            varType: string
            variable_selector:
            - '1775896471464'
            - task_status
          - comparison_operator: contains
            id: 1617ef99-8dbb-4ea7-a709-6ed3619d58a3
            value: PENDING
            varType: string
            variable_selector:
            - '1775896471464'
            - task_status
          id: 'true'
          logical_operator: or
        desc: ''
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        selected: false
        title: 条件分支 2
        type: if-else
      height: 152
      id: '1775896495874'
      parentId: '1775896386572'
      position:
        x: 810
        y: 63
      positionAbsolute:
        x: 2049
        y: 419.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
      zIndex: 1002
    - data:
        desc: ''
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        selected: false
        sleep_time_ms: 1000
        title: 等待 2
        type: sleep
      height: 86
      id: '1775896546853'
      parentId: '1775896386572'
      position:
        x: 1113
        y: 168.5
      positionAbsolute:
        x: 2352
        y: 525.25
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
      zIndex: 1002
    - data:
        code: "\nfunction main({body}) {\n    const parsed = JSON.parse(body).output;\n\
          \    return {\n        result_info: {\n            json_url: parsed.results\
          \ && parsed.results.length ? parsed.results[0].transcription_url : \"\"\
          ,\n            task_status: parsed.task_status,\n            message: parsed.message,\n\
          \        }\n    }\n}\n"
        code_language: javascript
        desc: ''
        isInIteration: true
        isInLoop: false
        iteration_id: '1775896386572'
        outputs:
          result_info:
            children: null
            type: object
        selected: false
        title: extract result
        type: code
        variables:
        - value_selector:
          - '1775896445458'
          - body
          value_type: string
          variable: body
      height: 54
      id: '1775896558141'
      parentId: '1775896386572'
      position:
        x: 1416
        y: 112
      positionAbsolute:
        x: 2655
        y: 468.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
      zIndex: 1002
    - data:
        code: "\nfunction main({outputs}) {\n    const found = outputs.find(output\
          \ => !!output.json_url)\n    return {\n        json_url: found ? found.json_url\
          \ : \"/\"\n    }\n}\n"
        code_language: javascript
        desc: ''
        outputs:
          json_url:
            children: null
            type: string
        selected: false
        title: get result
        type: code
        variables:
        - value_selector:
          - '1775896386572'
          - output
          value_type: array[object]
          variable: outputs
      height: 54
      id: '1775899252828'
      position:
        x: 3018
        y: 356.75
      positionAbsolute:
        x: 3018
        y: 356.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        desc: ''
        is_team_authorization: true
        output_schema: null
        outputs: null
        paramSchemas:
        - auto_generate: null
          default: null
          form: llm
          human_description:
            en_US: used for linking to webpages
            ja_JP: used for linking to webpages
            pt_BR: used for linking to webpages
            zh_Hans: 用于链接到网页
          label:
            en_US: URL
            ja_JP: URL
            pt_BR: URL
            zh_Hans: 网页链接
          llm_description: url for scraping
          max: null
          min: null
          name: url
          options: []
          placeholder: null
          precision: null
          required: true
          scope: null
          template: null
          type: string
        - auto_generate: null
          default: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
            like Gecko) Chrome/100.0.1000.0 Safari/537.36
          form: form
          human_description:
            en_US: used for identifying the browser.
            ja_JP: used for identifying the browser.
            pt_BR: used for identifying the browser.
            zh_Hans: 用于识别浏览器。
          label:
            en_US: User Agent
            ja_JP: User Agent
            pt_BR: User Agent
            zh_Hans: User Agent
          llm_description: null
          max: null
          min: null
          name: user_agent
          options: []
          placeholder: null
          precision: null
          required: false
          scope: null
          template: null
          type: string
        - auto_generate: null
          default: 'false'
          form: form
          human_description:
            en_US: If true, the crawler will only return the page summary content.
            ja_JP: If true, the crawler will only return the page summary content.
            pt_BR: If true, the crawler will only return the page summary content.
            zh_Hans: 如果启用,爬虫将仅返回页面摘要内容。
          label:
            en_US: Whether to generate summary
            ja_JP: Whether to generate summary
            pt_BR: Whether to generate summary
            zh_Hans: 是否生成摘要
          llm_description: null
          max: null
          min: null
          name: generate_summary
          options:
          - icon: null
            label:
              en_US: 'Yes'
              ja_JP: 'Yes'
              pt_BR: 'Yes'
              zh_Hans: 是
            value: 'true'
          - icon: null
            label:
              en_US: 'No'
              ja_JP: 'No'
              pt_BR: 'No'
              zh_Hans: 否
            value: 'false'
          placeholder: null
          precision: null
          required: false
          scope: null
          template: null
          type: boolean
        params:
          generate_summary: ''
          url: ''
          user_agent: ''
        provider_id: webscraper
        provider_name: webscraper
        provider_type: builtin
        selected: false
        title: get json content
        tool_configurations:
          generate_summary:
            type: constant
            value: false
          user_agent:
            type: mixed
            value: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
              like Gecko) Chrome/100.0.1000.0 Safari/537.36
        tool_description: 一个用于爬取网页的工具。
        tool_label: 网页爬虫
        tool_name: webscraper
        tool_node_version: '2'
        tool_parameters:
          url:
            type: mixed
            value: '{{#1775899252828.json_url#}}'
        type: tool
      height: 116
      id: '1775899717844'
      position:
        x: 3321
        y: 356.75
      positionAbsolute:
        x: 3321
        y: 356.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        code: "\nfunction main({text}) {\n    const json = JSON.parse(text.replace(\"\
          \\nTITLE: \\nAUTHOR: \\nTEXT:\\n\\n[{'text': '\" ,\"\").replace(/'\\}\\\
          ]\\n$/, ''));\n\n    const sentences = json.transcripts[0].sentences;\n\
          \    \n    // 1. cut words array\n    const output = sentences.map(s =>\
          \ ({\n        start: Math.floor(parseFloat(s.begin_time) / 1000),\n    \
          \    end: Math.ceil(parseFloat(s.end_time) / 1000),\n        lyrics: s.text,\n\
          \        idx: s.sentence_id,\n    }));\n\n    return {\n        sentences:\
          \ output,\n        sentences_stringified: JSON.stringify(output),\n    }\n\
          }\n"
        code_language: javascript
        desc: ''
        outputs:
          sentences:
            children: null
            type: array[object]
          sentences_stringified:
            children: null
            type: string
        selected: false
        title: convert to object and normalize
        type: code
        variables:
        - value_selector:
          - '1775899717844'
          - text
          value_type: string
          variable: text
      height: 54
      id: '1775899817592'
      position:
        x: 3624
        y: 356.75
      positionAbsolute:
        x: 3624
        y: 356.75
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        audio:
          configs:
            variable_selector: []
          enabled: false
        context:
          enabled: false
          variable_selector: []
        desc: ''
        document:
          configs:
            variable_selector: []
          enabled: false
        model:
          completion_params: {}
          mode: chat
          name: gemini-3.1-pro-preview
          provider: aict/ai_hub/ai_hub
        prompt_template:
        - id: 9309e75a-2aa6-4a11-b1d5-5b3a53dc9014
          role: system
          text: "<instruction>\n你是一个专业的歌词校正助手。你的任务是将AI音乐经过ASR语音识别后产生的时间轴数据中的lyrics字段,修正为古诗词原文中对应的正确语句。\n\
            \n请按照以下步骤完成任务:\n\n1. **理解输入数据**:你会收到两份数据:\n   - ASR语音识别的时间轴数据(JSON数组格式,包含start、end和lyrics字段)\n\
            \   - 参考歌词(古诗词原文,可能包含重复段落、副歌等结构)\n\n2. **分析对应关系**:\n   - 首先通读参考歌词,理解歌曲的完整结构(如哪些部分对应古诗词的哪些句子,是否有重复段落、副歌重复等)\n\
            \   - 将ASR识别的lyrics内容与参考歌词进行逐句对照,确定每条ASR记录大致对应参考歌词的哪一句\n   - 利用发音相似性、上下文语境和诗句结构来建立正确的映射关系\n\
            \n3. **检测并补全缺失片段**:\n   - 检查时间轴是否连续。如果两条相邻记录之间存在明显的时间间隔(即前一条的end与后一条的start之间有较大空隙),并且对应的歌词内容也不连续(跳过了某些诗句),则大概率是ASR语音识别遗漏了内容\n\
            \   - 根据古诗词原文和参考歌词,在缺失的时间段上补充对应的歌词条目\n   - 补充时,start设为上一条的end+100(或合理值),end设为下一条的start-100(或合理值)\n\
            \   - 不管缺失多少句,只需要补充一段记录\n   - 补充的歌词内容必须与古诗词原文完全一致\n\n4. **执行修正**:\n  \
            \ - 将ASR时间轴数据中的lyrics字段替换为对应的古诗词原文语句\n   - 保持原有记录的start和end不变\n   - 如果ASR将一句古诗词拆分成多条记录,保持拆分结构不变,按对应位置拆分古诗词原文填入\n\
            \   - 如果ASR将多句古诗词合并为一条记录,将对应的多句古诗词合并填入\n   - 如果歌曲中存在重复段落,对应的古诗词语句也应重复出现\n\
            \   - 注意辨别ASR中的谐音错误(如\"一\"→\"依\"、\"忘\"→\"望\"、\"剃\"→\"啼\"、\"之\"→\"知\"等)\n\
            \n5. **输出格式要求**:\n   - 输出修正后的完整JSON对象,格式为 {\"lyrics_info\": [...]}\n \
            \  - lyrics_info数组中每个元素包含start、end和lyrics三个字段\n   - 仅修改lyrics字段(以及补充缺失的条目),其余字段保持原样\n\
            \   - 确保输出的JSON格式正确,可直接解析使用\n   - 输出中不要包含任何XML标签、markdown代码块标记或额外注释文字,仅输出纯JSON对象\n\
            \n关键注意事项:\n- 当ASR将一句诗拆分为多条记录时,按对应位置拆分古诗词原文填入,保持时间轴的分段结构不变\n- 当ASR合并了多句诗为一条记录时,将对应的多句古诗词合并填入\n\
            - 注意辨别ASR中的谐音错误\n- 时间轴不连续且歌词也不连续时,必须补全缺失的歌词条目\n- 输出必须是合法的JSON格式,不包含任何XML标签、markdown代码块或额外注释\n\
            </instruction>\n\n<examples>\n<example>\nASR时间轴数据:\n[\n  {\"start\": 2000,\
            \ \"end\": 3500, \"lyrics\": \"窗前明月光\"},\n  {\"start\": 3600, \"end\"\
            : 5100, \"lyrics\": \"一是地上霜\"},\n  {\"start\": 5200, \"end\": 6800, \"\
            lyrics\": \"举头忘明月\"},\n  {\"start\": 6900, \"end\": 8500, \"lyrics\":\
            \ \"低头思故乡\"}\n]\n\n参考歌词:\n床前明月光\n疑是地上霜\n举头望明月\n低头思故乡\n\n修正后输出:\n{\"lyrics_info\"\
            : [{\"start\": 2000, \"end\": 3500, \"lyrics\": \"床前明月光\"}, {\"start\"\
            : 3600, \"end\": 5100, \"lyrics\": \"疑是地上霜\"}, {\"start\": 5200, \"end\"\
            : 6800, \"lyrics\": \"举头望明月\"}, {\"start\": 6900, \"end\": 8500, \"lyrics\"\
            : \"低头思故乡\"}]}\n\n说明:ASR将\"床\"误识别为\"窗\"、\"疑\"误识别为\"一\"、\"望\"误识别为\"忘\"\
            ,均为谐音错误,已按古诗词原文修正。\n</example>\n\n<example>\nASR时间轴数据:\n[\n  {\"start\"\
            : 3000, \"end\": 4200, \"lyrics\": \"春眠不觉晓\"},\n  {\"start\": 4300, \"\
            end\": 5800, \"lyrics\": \"处处闻剃鸟\"},\n  {\"start\": 5900, \"end\": 7500,\
            \ \"lyrics\": \"夜来\"},\n  {\"start\": 7600, \"end\": 9000, \"lyrics\"\
            : \"风雨声\"},\n  {\"start\": 9100, \"end\": 10800, \"lyrics\": \"花落知多少\"\
            },\n  {\"start\": 12000, \"end\": 13200, \"lyrics\": \"春眠不觉晓\"},\n  {\"\
            start\": 13300, \"end\": 14800, \"lyrics\": \"处处闻剃鸟\"},\n  {\"start\"\
            : 14900, \"end\": 16500, \"lyrics\": \"夜来风雨声\"},\n  {\"start\": 16600,\
            \ \"end\": 18200, \"lyrics\": \"花落之多少\"}\n]\n\n参考歌词:\n春眠不觉晓\n处处闻啼鸟\n夜来风雨声\n\
            花落知多少\n\n春眠不觉晓\n处处闻啼鸟\n夜来风雨声\n花落知多少\n\n修正后输出:\n{\"lyrics_info\": [{\"\
            start\": 3000, \"end\": 4200, \"lyrics\": \"春眠不觉晓\"}, {\"start\": 4300,\
            \ \"end\": 5800, \"lyrics\": \"处处闻啼鸟\"}, {\"start\": 5900, \"end\": 7500,\
            \ \"lyrics\": \"夜来\"}, {\"start\": 7600, \"end\": 9000, \"lyrics\": \"\
            风雨声\"}, {\"start\": 9100, \"end\": 10800, \"lyrics\": \"花落知多少\"}, {\"\
            start\": 12000, \"end\": 13200, \"lyrics\": \"春眠不觉晓\"}, {\"start\": 13300,\
            \ \"end\": 14800, \"lyrics\": \"处处闻啼鸟\"}, {\"start\": 14900, \"end\":\
            \ 16500, \"lyrics\": \"夜来风雨声\"}, {\"start\": 16600, \"end\": 18200, \"\
            lyrics\": \"花落知多少\"}]}\n\n说明:ASR将\"夜来风雨声\"拆分成了两条记录(\"夜来\"和\"风雨声\"),修正时保持了这种拆分结构。\"\
            处处闻剃鸟\"修正为\"处处闻啼鸟\",\"花落之多少\"修正为\"花落知多少\"。歌曲有重复段落,两次均正确对应。\n</example>\n\
            \n<example>\nASR时间轴数据:\n[\n  {\"start\": 1000, \"end\": 2800, \"lyrics\"\
            : \"白日一山尽\"},\n  {\"start\": 2900, \"end\": 4600, \"lyrics\": \"黄河入海流\"\
            },\n  {\"start\": 6500, \"end\": 8200, \"lyrics\": \"更上一层楼\"},\n  {\"\
            start\": 10000, \"end\": 11800, \"lyrics\": \"白日一山尽\"},\n  {\"start\"\
            : 11900, \"end\": 13600, \"lyrics\": \"黄河入海流\"},\n  {\"start\": 13700,\
            \ \"end\": 15400, \"lyrics\": \"欲穷千里目\"},\n  {\"start\": 15500, \"end\"\
            : 17200, \"lyrics\": \"更上一层楼\"}\n]\n\n参考歌词:\n白日依山尽\n黄河入海流\n欲穷千里目\n更上一层楼\n\
            \n(重复)\n白日依山尽\n黄河入海流\n欲穷千里目\n更上一层楼\n\n修正后输出:\n{\"lyrics_info\": [{\"start\"\
            : 1000, \"end\": 2800, \"lyrics\": \"白日依山尽\"}, {\"start\": 2900, \"end\"\
            : 4600, \"lyrics\": \"黄河入海流\"}, {\"start\": 4700, \"end\": 6400, \"lyrics\"\
            : \"欲穷千里目\"}, {\"start\": 6500, \"end\": 8200, \"lyrics\": \"更上一层楼\"},\
            \ {\"start\": 10000, \"end\": 11800, \"lyrics\": \"白日依山尽\"}, {\"start\"\
            : 11900, \"end\": 13600, \"lyrics\": \"黄河入海流\"}, {\"start\": 13700, \"\
            end\": 15400, \"lyrics\": \"欲穷千里目\"}, {\"start\": 15500, \"end\": 17200,\
            \ \"lyrics\": \"更上一层楼\"}]}\n\n说明:第一遍中ASR遗漏了\"欲穷千里目\"这一句(时间轴从4600直接跳到6500,中间有明显间隔,且歌词从\"\
            黄河入海流\"直接跳到了\"更上一层楼\",跳过了\"欲穷千里目\")。根据古诗词原文和参考歌词,在缺失的时间段(4700-6400)补充了\"\
            欲穷千里目\"。同时\"白日一山尽\"修正为\"白日依山尽\"。\n</example>\n</examples>"
        - id: ad1f4eb3-af8c-4dc4-9e7f-449d9f60c5f8
          role: user
          text: 'ASR语音识别的时间轴数据: {{#1775899817592.sentences_stringified#}}


            参考歌词:{{#1775893207500.lyrics_info#}}'
        selected: false
        structured_output:
          schema:
            additionalProperties: false
            properties:
              lyrics_info:
                items:
                  additionalProperties: false
                  properties:
                    end:
                      type: number
                    lyrics:
                      type: string
                    start:
                      type: number
                  required:
                  - start
                  - end
                  - lyrics
                  type: object
                type: array
            required:
            - lyrics_info
            type: object
        structured_output_enabled: true
        title: format lyrics
        type: llm
        variables: []
        video:
          configs:
            variable_selector: []
          enabled: false
        vision:
          enabled: false
      height: 122
      id: '1775900623427'
      position:
        x: 3927
        y: 356.75
      positionAbsolute:
        x: 3927
        y: 356.75
      selected: true
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    viewport:
      x: -1963.1634764966184
      y: 127.3952942638764
      zoom: 0.557648067399908