古诗词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