LLM重新断句怎么这么慢了,之前版本都挺快
#4396 LLM重新断句怎么这么慢了
20 Replies
导致 LLM 重新断句速度变慢的可能原因较多,包括模型服务的并发限制、网络延迟增加、默认断句参数变化或系统资源竞争等,暂无法直接定位。建议先后尝试以下排查步骤:
- 调整高级选项:将“LLM重新断句每批字幕行数”增大(如 50 或 100)以减少请求次数,同时确认“最大进程数”未被过低限制。
- 检查网络代理:确保 AI 渠道的 API 地址和代理设定正常,可临时关闭代理测试。
- 切换翻译渠道:某些 AI 模型在高负载时会主动限速,可换用 DeepSeek、OpenAI 等不同渠道对比。
- 关闭其他 GPU 任务:避免同时运行多个 CUDA 任务抢占显存或带宽。
若问题依旧,请提供软件安装目录下 logs/ 文件夹中最新的日志文件(复制底部约 30 行报错信息)以便进一步分析。
请查阅相关文档:
[DEBUG] 视频定格应延长1553ms,实际向上取整秒延长1.553s,操作成功。
[DEBUG] 原始hw_type='h264_nvenc'
[DEBUG] 整理后hw_type='nvenc'
[DEBUG] [尝试硬件编解码执行命令]
-y -progress compose1777783095.6557298.txt -i novoice.mp4 -i origin_audio.m4a -filter_complex [0:v]subtitles=filename='shuang.ass'[v_out] -map [v_out] -map 1:a -c:v h264_nvenc -c:a copy -cq 23 -preset p4 -movflags +faststart -t 47.083000 laste_target.mp4
[DEBUG] 最终配置信息:self.cfg=TaskCfgVTT(is_cuda=True, uuid='debc807f97', cache_folder='E:/win-pyvideotrans-v3.99-428/tmp/25336/debc807f97', target_dir='F:/Youtube/Tubedown Download/2026-04-26/PolyPaint/_video_out/00-mp4', source_language='英语', source_language_code='en', source_sub='F:/Youtube/Tubedown Download/2026-04-26/PolyPaint/_video_out/00-mp4/en.srt', source_wav='E:/win-pyvideotrans-v3.99-428/tmp/25336/debc807f97/en.wav', source_wav_output='F:/Youtube/Tubedown Download/2026-04-26/PolyPaint/_video_out/00-mp4/en.m4a', target_language='简体中文', target_language_code='zh-cn', target_sub='F:/Youtube/Tubedown Downl
......
ions': 0, 'film_grain': 0, 'has_b_frames': 1, 'sample_aspect_ratio': '1:1', 'display_aspect_ratio': '16:9', 'pix_fmt': 'yuv420p', 'level': 40, 'color_range': 'tv', 'color_space': 'bt709', 'color_transfer': 'bt709', 'color_primaries': 'bt709', 'chroma_location': 'left', 'field_order': 'progressive', 'refs': 1, 'is_avc': 'true', 'nal_length_size': '4', 'id': '0x1', 'r_frame_rate': '24/1', 'avg_frame_rate': '24/1', 'time_base': '1/12288', 'start_pts': 0, 'start_time': '0.000000', 'duration_ts': 559616, 'duration': '45.541667', 'bit_rate': '2132108', 'bits_per_raw_sample': '8', 'nb_frames': '1093', 'extradata_size': 45, 'disposition': {'default': 1, 'dub': 0, 'original': 0, 'comment': 0, 'lyrics': 0, 'karaoke': 0, 'forced': 0, 'hearing_impaired': 0, 'visual_impaired': 0, 'clean_effects': 0, 'attached_pic': 0, 'timed_thumbnails': 0, 'non_diegetic': 0, 'captions': 0, 'descriptions': 0, 'metadata': 0, 'dependent': 0, 'still_image': 0, 'multilayer': 0}, 'tags': {'language': 'und', 'handler_name': 'ISO Media file produced by Google Inc.', 'vendor_id': '00'}}, {'index': 1, 'codec_name': 'aac', 'codec_long_name': 'AAC (Advanced Audio Coding)', 'profile': 'LC', 'codec_type': 'audio', 'codec_tag_string': 'mp4a', 'codec_tag': '0x6134706d', 'sample_fmt': 'fltp', 'sample_rate': '44100', 'channels': 2, 'channel_layout': 'stereo', 'bits_per_sample': 0, 'initial_padding': 0, 'id': '0x2', 'r_frame_rate': '0/0', 'avg_frame_rate': '0/0', 'time_base': '1/44100', 'start_pts': 0, 'start_time': '0.000000', 'duration_ts': 2011136, 'duration': '45.603991', 'bit_rate': '127999', 'nb_frames': '1964', 'extradata_size': 16, 'disposition': {'default': 1, 'dub': 0, 'original': 0, 'comment': 0, 'lyrics': 0, 'karaoke': 0, 'forced': 0, 'hearing_impaired': 0, 'visual_impaired': 0, 'clean_effects': 0, 'attached_pic': 0, 'timed_thumbnails': 0, 'non_diegetic': 0, 'captions': 0, 'descriptions': 0, 'metadata': 0, 'dependent': 0, 'still_image': 0, 'multilayer': 0}, 'tags': {'language': 'und', 'handler_name': 'ISO Media file produced by Google Inc.', 'vendor_id': '00'}}], 'format': {'filename': 'F:/Youtube/Tubedown Download/2026-04-26/PolyPaint/00.mp4', 'nb_streams': 2, 'nb_programs': 0, 'nb_stream_groups': 0, 'format_name': 'mov,mp4,m4a,3gp,3g2,mj2', 'format_long_name': 'QuickTime / MOV', 'start_time': '0.000000', 'duration': '45.603991', 'size': '12899342', 'bit_rate': '2262844', 'probe_score': 100, 'tags': {'major_brand': 'isom', 'minor_version': '512', 'compatible_brands': 'isomiso2avc1mp41', 'encoder': 'Lavf59.27.100'}}}
[DEBUG] The file info after process:result={'video_fps': 24.0, 'r_frame_rate': '24/1', 'video_codec_name': 'h264', 'audio_codec_name': 'aac', 'width': 1920, 'height': 1080, 'time': 45541, 'streams_len': 2, 'streams_audio': 1, 'video_streams': 1, 'color': 'yuv420p'}
[DEBUG] [FFMPEG-CMD]:
ffmpeg -hide_banner -nostdin -ignore_unknown -threads 0 -y -fflags +genpts -i F:/Youtube/Tubedown Download/2026-04-26/PolyPaint/00.mp4 -an -c:v copy novoice.mp4
提供的日志属于视频合成阶段的调试信息,不包含 LLM 重新断句过程。若需诊断断句速度异常,请取出软件根目录 logs/ 文件夹下涉及 LLM 调用的相关日志(通常会打印类似 LLM rephrase 或调用 AI 接口的超时/完成时间等记录),复制底部约 30 行内容以便分析。
LLM重新断句后,句子怎么会变短?
LLM 重新断句后句子变短,通常与模型的生成倾向或提示词设置有关。原因可能包括:
- 模型默认输出偏好:部分模型在断句时会倾向于按较短的语义单元拆分,尤其是如果提示词(prompt)没有明确要求保留原有句长。
- 每批次发送行数不足:如果“LLM重新断句每批字幕行数”较小,模型无法获取完整上下文,容易将长句拆分成多个短句。
- 温度值设置过高:高级选项中的“AI翻译模型温度值”如果偏高(如 > 0.5),会增加输出的随机性,可能导致断句过于碎片化。
- 提示词未针对性优化:
prompts目录下的重断句提示词可能未约束“尽量保持原句子完整性”。
建议按以下步骤调整:
- 增大“LLM重新断句每批字幕行数”,建议 50-100,或一次性发送全部。
- 将“AI翻译模型温度值”调低至 0.1-0.3。
- 检查并修改提示词文件,增加“请尽量保留原始字幕的句子长度,仅在语义不完整时才拆分”等指令。
- 若使用本地小模型(如 7B),可尝试换用大模型(如 GPT-4、DeepSeek-V3)以提升服从性。
若仍无法解决,请提供对应日志文件末尾 30 行以供深入分析。
请查阅相关文档:
[DEBUG] [语音识别]渠道0,large-v3-turbo:共耗时:10s
2026-05-03 21:53:49,564 - modelscope - WARNING - We can not confirm the cached file is for revision: master
[DEBUG] 开始标点恢复
[DEBUG] 标点恢复完成,耗时:44s
[INFO] Starting call to 'videotrans.translator._chatgpt.ChatGPT.llm_segment.._send', this is the 1st time calling it.
[DEBUG] 需要断句的:message=[{'role': 'system', 'content': 'Role:\nYou are an expert Multi-Language ASR Post-Editor. Your goal is to losslessly repair, correct, and re-segment subtitles from the given SRT.\n\n
\n\n# GOLDEN RULE — ABSOLUTE REQUIREMENTS\n1. Do NOT delete any meaningful information.\n2. Removing meaningless fillers ("uh", "umm", "erm", “えー”, “嗯”) is allowed and does NOT violate rule #1.\n3. All semantic content must appear in the final output. No summarizing. No shortening.\n\n
\n\n# CORE TASKS\n1. Retention: preserve all meaning.\n2. Correction: fix ASR mistakes (typos, homophones, missing punctuation).\n3. **Segmentat
......
uggling with 2D animation in Blender?\n\n2\n00:00:02,613 --> 00:00:05,696\nDreaming of clean lines and buttery smooth motion.\n\n3\n00:00:06,448 --> 00:00:09,920\nWell, you can make it happen with Blender's grease pencil.\n\n4\n00:00:11,296 --> 00:00:13,308\nThis free step-by-step series\n\n5\n00:00:13,308 --> 00:00:16,015\ntakes you from total beginner to studio-ready.\n\n6\n00:00:16,496 --> 00:00:19,398\nWe'll start by mastering the interface and brushes,\n\n7\n00:00:19,398 --> 00:00:20,981\nmoving to smart coloring\n\n8\n00:00:20,981 --> 00:00:24,016\nand real animation principles like squash and stretch.\n\n9\n00:00:24,400 --> 00:00:26,720\nAnd even build parallax camera moves,\n\n10\n00:00:26,720 --> 00:00:29,392\nfinishing with pro effects and compositing.\n\n11\n00:00:30,000 --> 00:00:33,493\nCreate stunning 2D animation completely on your own.\n\n12\n00:00:33,493 --> 00:00:36,352\nYour animation journey starts right here.\n\n13\n00:00:37,136 --> 00:00:38,532\nSubscribe and hit the bell,\n\n14\n00:00:38,532 --> 00:00:41,264\nso you don't miss a single video when the series drops.\n"
self.trans_thread=50,self.aisendsrt=True,self.translate_type=4
[DEBUG] [deepseek]响应:response=ChatCompletion(id='5c628735-308a-4619-a7fc-f461279bdfba', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='\n1\n00:00:00,000 --> 00:00:05,000\nHello, my friend.\n', refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=None, reasoning_content='我们需要翻译输入的内容。输入是:\n\n\n1\n00:00:00,000 --> 00:00:05,000\n你好啊我的朋友\n\n\n任务是翻译成英语,保留所有格式。只有一个块。索引1,时间戳不变,翻译文本:"你好啊我的朋友"。\n\n全局上下文也是"你好啊我的朋友",但不要翻译全局上下文,仅用于理解。这里上下文和输入相同,但无关紧要。\n\n翻译:"你好啊我的朋友" -> 自然英语口语:"Hello, my friend." 或者 "Hey there, my friend." 但需要简洁自然。作为字幕,可能用"Hey, my friend." 或 "Hello, my friend."\n\n注意:没有其他块,只需输出一个块。严格按照格式,用包装。保持空白行(输入中块之间有空行,但只有一个块,所以只需在块之后有换行?输入是:\n\n1\n00:00:00,000 --> 00:00:05,000\n你好啊我的朋友\n\n可能末尾有换行。我们将输出:\n\n\n1\n00:00:00,000 --> 00:00:05,000\nHey, my friend.\n\n\n或者"Hello, my friend." 更自然。都是可行的。选择"Hello, my friend." 或 "Hey there, friend." 但是原文是"你好啊我的朋友",是友好问候。用"Hello, my friend." 很好。\n\n检查术语表:无相关术语。所以自由翻译。\n\n最终输出。'))], created=1777816752, model='deepseek-v4-pro', object='chat.completion', service_tier=None, system_fingerprint='fp_9954b31ca7_prod0820_fp8_kvcache_20260402', usage=CompletionUsage(completion_tokens=365, prompt_tokens=1181, total_tokens=1546, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=None, audio_tokens=None, reasoning_tokens=328, rejected_prediction_tokens=None), prompt_tokens_details=PromptTokensDetails(audio_tokens=None, cached_tokens=1152), prompt_cache_hit_tokens=1152, prompt_cache_miss_tokens=29))
[DEBUG] 按SRT格式翻译,原始字幕行数:1,整理为list[dict]后的行数:1
[DEBUG] [字幕翻译]渠道4,deepseek-v4-pro:共耗时:12s
text=[{'line': 1, 'start_time': 0, 'end_time': 5000, 'text': 'Hello, my friend.', 'startraw': '00:00:00,000', 'endraw': '00:00:05,000', 'time': '00:00:00,000 --> 00:00:05,000'}]
从日志看,这不是“句子变短”的预期优化,而是 LLM 断句任务出现了严重误处理——模型将全部字幕合并成了一句 Hello, my friend.,丢失了原始所有内容。原因在于模型把整段 SRT 当作了一批待翻译的文本,而提示词可能未严格区分“断句”与“翻译”指令,或模型智能不足。
请按以下步骤解决:
- 降低单批行数:将“LLM重新断句每批字幕行数”改为 20–30(日志中
self.trans_thread=50偏高),避免模型一次性接收过长的上下文导致混乱。 - 优化断句提示词:在
prompts目录对应文件中,明确要求“只做断句/合并修正时间轴,严禁翻译任何文字,输出必须为原始语言的 SRT 格式”。 - 切换更可靠的 AI 模型:尝试使用
deepseek-chat或gpt-4o等指令遵循度更高的模型。 - 临时禁用“发送完整字幕”:如果当前选中了该选项,先取消它,改用简单按行处理,避免模型误把整段 SRT 当作翻译任务。
- 清理缓存重试:勾选主界面“清理已生成”,重新执行任务,确保不再使用上次的错误缓存。
本软件为免费开源作品,无法保证所有模型都能完美执行复杂断句,若需高精度建议使用商业大模型。
请查阅相关文档:
-No-LLM重新断句.srt,为什么会生成这个字幕文件?
该文件是软件在语音识别完成后自动生成的原始字幕备份。当未启用 LLM 重新断句,或 LLM 断句任务未成功执行(例如失败、跳过)时,软件会将识别结果直接保存为 -No-LLM重新断句.srt,用以区分经过 AI 重新断句处理后的字幕,方便用户对比或进行后续手动编辑。
[DEBUG] [语音识别]渠道0,large-v3-turbo:共耗时:11s
2026-05-04 00:39:12,679 - modelscope - WARNING - We can not confirm the cached file is for revision: master
[DEBUG] 开始标点恢复
[DEBUG] 标点恢复完成,耗时:39s
[INFO] Starting call to 'videotrans.translator._chatgpt.ChatGPT.llm_segment.._send', this is the 1st time calling it.
[DEBUG] 需要断句的:message=[{'role': 'system', 'content': 'Role:\nYou are an expert Multi-Language ASR Post-Editor. Your goal is to losslessly repair, correct, and re-segment subtitles from the given SRT.\n\n
\n\n# GOLDEN RULE — ABSOLUTE REQUIREMENTS\n1. Do NOT delete any meaningful information.\n2. Removing meaningless fillers ("uh", "umm", "erm", “えー”, “嗯”) is allowed and does NOT violate rule #1.\n3. All semantic content must appear in the final output. No summarizing. No shortening.\n\n
\n\n# CORE TASKS\n1. Retention: preserve all meaning.\n2. Correction: fix ASR mistakes (typos, homophones, missing punctuation).\n3. **Segmentat
......
- preserve all meaning.\n2. Correction: fix ASR mistakes (typos, homophones, missing punctuation).\n3. Segmentation: cut long text into natural sentences.\n4. Formatting: output valid SRT wrapped in
and.\n\n
\n\n# SEGMENTATION RULES (CRITICAL)\n1. If an original block contains multiple sentences or is longer than 10 seconds,\n - split into multiple sub-lines.\n - Prioritize breaking sentences at punctuation marks\n2. Each SRT block must contain ONE line only.\n3. Max line length:\n - CJK: ~25 characters\n - Latin/others: ~50 characters\n4. If a sentence exceeds line limit → split visually but not semantically harmful.\n5. The sentence segmentation results should not include sentences shorter than 1 second.\n\n\nPriority order (highest → lowest):\n1) semantic meaning\n2) sentence integrity\n3) visual length limit\n4) timing allocation\n\n
\n\n# TIMING RULES\n1. First sub-block start time = original start.\n2. Last sub-block end time = original end.\n3. Inner segments must have proportional durations based on text length.\n4. Each block must be within 1s–10s.\n5. Time must be strictly increasing:\n - no overlaps\n - no backward jumps\n - no duplicate timestamps\n\n
\n\n# LANGUAGE RULES\n1. Auto-detect language (CJK, Latin, mixed).\n2. Restore correct punctuation based on language habits.\n3. For languages without explicit punctuation (zh/ja/ko), split based on semantic pauses.\n\n
\n\n# SRT OUTPUT RULES\n1. Always discard original SRT numbering.\n2. Rebuild numbering starting from 1, strictly increasing.\n3. Output must be:\n\n\n1\n00:00:00,000 --> 00:00:02,000\nText...\n...\n\n\n4. If any required structure is missing → regenerate internally before showing.\n\n
\n\n# Input SRT:\n'}, {'role': 'user', 'content': "srt\n1\n00:00:00,112 --> 00:00:05,728\n Struggling with 2D animation in Blender pinning of clean lines and battery smooth motion.\n\n2\n00:00:06,448 --> 00:00:10,048\n Well, you can make it happen with Blender's grease pencil.\n\n3\n00:00:11,344 --> 00:00:16,000\n This free step-by-step series takes you from total beginner to studio ready.\n\n4\n00:00:16,576 --> 00:00:24,064\n We'll start by mastering the interface and brushes moving to smart coloring and real animation principles like squash and stretch.\n\n5\n00:00:24,544 --> 00:00:29,376\n And even build parallax camera moves finishing with pro effects and compositing.\n\n6\n00:00:30,464 --> 00:00:36,304\n Create stunning 2D animation completely on your own Your animation journey starts right here.\n\n7\n00:00:37,184 --> 00:00:41,280\n Subscribe and hit the bell, so you don't miss a single video when the series drops.\n"}]
[INFO] Finished call to 'videotrans.translator._chatgpt.ChatGPT.llm_segment.._send' after 48.750(s), this was the 2nd time calling it.
[WARNING] 重新断句失败[except],已恢复原样 RetryError[]
[WARNING] 重新断句失败[except],已恢复原样 RetryError[]
self.trans_thread=50,self.aisendsrt=True,self.translate_type=4
该文件是 LLM 重新断句操作失败后的自动回退产物。当 AI 断句任务因超时、格式错误或接口异常等原因未能成功执行时,软件会回落到原始识别结果,并将其保存为 -No-LLM重新断句.srt,防止任务中断。
从日志看,你的 DeepSeek 模型在 48.75 秒内两次尝试均失败(RetryError),可能原因:
- API 响应时间过长或被服务端限流;
- 返回内容不符合 SRT 格式规范;
- 单批发送行数过多(
self.trans_thread=50),导致上下文过长。
解决办法:
- 降低批处理行数:在
菜单 → 工具/选项 → 高级选项中,将“LLM重新断句每批字幕行数”设为 20–30,减轻单次请求压力。 - 检查网络与代理:确保 DeepSeek API 地址和代理设置正确,必要时关闭代理测试。
- 使用更稳定的模型:临时切换至
deepseek-chat等响应更快的模型,或换成 OpenAI 的gpt-4o。 - 清理缓存后重试:勾选主界面“清理已生成”,再重新执行任务。
若问题依旧,请从 logs/ 目录提供对应时间的完整日志,以便进一步定位。
请查阅相关文档:
00:00:02,000\nText...\n...\n\n\n4. If any required structure is missing → regenerate internally before showing.\n\n---\n\n# Input SRT:\n'}, {'role': 'user', 'content': "srt\n1\n00:00:00,112 --> 00:00:05,728\n Struggling with 2D animation in Blender pinning of clean lines and battery smooth motion.\n\n2\n00:00:06,448 --> 00:00:10,048\n Well, you can make it happen with Blender's grease pencil.\n\n3\n00:00:11,344 --> 00:00:16,000\n This free step-by-step series takes you from total beginner to studio ready.\n\n4\n00:00:16,576 --> 00:00:24,064\n We'll start by mastering the interface and brushes moving to smart coloring and real animation principles like squash and stretch.\n\n5\n00:00:24,544 --> 00:00:29,376\n And even build parallax camera moves finishing with pro effects and compositing.\n\n6\n00:00:30,464 --> 00:00:36,304\n Create stunning 2D animation completely on your own Your animation journey starts right here.\n\n7\n00:00:37,184 --> 00:00:41,280\n Subscribe and hit the bell, so you don't miss a single video when the series drops.\n`"}]
[INFO] Finished call to 'videotrans.translator._chatgpt.ChatGPT.llm_segment.._send' after 20.672(s), this was the 2nd time calling it.
[WARNING] 重新断句失败[except],已恢复原样 RetryError[]
[WARNING] 重新断句失败[except],已恢复原样 RetryError[]
LLM 重新断句失败并回退生成 -No-LLM重新断句.srt,属于接口调用异常。日志提示 RetryError,说明模型返回内容不符合要求或请求超时,两次调用均未成功。建议按以下步骤排查:降低批处理行数:将“LLM重新断句每批字幕行数”调整为 20–30(当前可能过大),减小模型压力。检查网络与代理:确认 DeepSeek API 地址和代理设置正确,可尝试临时关闭代理。使用更稳定的模型:将断句模型切换为 deepseek-chat 或 gpt-4o,提高指令遵循度。清理缓存重试:勾选主界面“清理已生成”,重新运行任务。若问题依旧,请提供 logs/ 目录下对应时刻的完整日志进一步定位。请查阅相关文档:
为什么语音转文字环节生成的时间戳,会在翻译成中文字幕时发生改变,改变的是每行字幕的结束时间,会有毫秒级的变化,并不是完全将SRT获取的时间戳原封不动的传递给中文字幕,这就导致双语字幕的时间戳也跟着中文字幕的时间戳一并发生变化,因为双语的时间是根据中文字幕来设定的,这一连串的时间戳变化,就有机率会产生上一条字幕的结尾时间,与下一条字幕的开始时间产生几毫秒的重叠,最后就会导致字幕的位置发生朝上方向上的位置偏移,我要怎么解决这个问题
语音识别生成的时间戳在翻译阶段发生微小偏移,是由于翻译接口在返回结果时进行了舍入、规范化或内部重新对齐,而双语字幕默认以中文字幕的时间轴为准,因此连带引起整体偏移。若偏移叠加造成重叠,便可能触发播放器对字幕位置进行异常调整。解决办法如下(按推荐顺序尝试):
- 关闭 LLM 重新断句:在菜单 → 工具/选项 → 高级选项 中,将“LLM重新断句每批字幕行数”设为 0,避免翻译渠道对时间轴进行二次调整。
- 强制使用原始时间戳:勾选 “发送完整字幕” 并取消 “AI翻译附带完整原字幕”,让翻译仅处理文本(时间戳仅作为上下文参考),要求渠道严格复制原时间轴。
- 更换翻译渠道:某些模型(如 Gemini/本地小模型)更容易修改时间戳,可改用 DeepSeek 或 OpenAI 等指令遵循度更好的渠道。
- 调整合并策略:在高级选项 → 语音识别参数中,增大 “静音分割持续毫秒”(如 800),减少原始字幕因碎片化导致的边界模糊,降低重叠概率。
- 手动修复重叠:若已生成字幕,可用记事本打开对应的 SRT 文件,查找两条字幕时间重叠处,将前一条的结束时间减少几毫秒(如
00:00:05,000→00:00:04,980)。 - 清理缓存重试:勾选主界面左上角 “清理已生成”,重新执行完整的翻译流程。
本软件为免费开源项目,时间轴对齐涉及复杂的音频、文本匹配逻辑,细微偏移难以完全避免,建议优先使用高质量商业模型以减少此类问题。
请查阅相关文档:
- 视频翻译中声画同步问题
- 优化断句效果,调整语音识别时的字幕时长
- 高级设置各个选项说明
强制使用原始时间戳:勾选 “发送完整字幕” 并取消 “AI翻译附带完整原字幕”,让翻译仅处理文本(时间戳仅作为上下文参考),要求渠道严格复制原时间轴。
AI翻译附带完整原字幕为什么使时间戳发生变化
勾选“发送完整字幕”并取消“AI翻译附带完整原字幕”,原理是:保留完整 SRT 上下文(含时间轴)提升翻译质量,同时避免 AI 被要求附带原字幕时可能对时间轴进行修正或格式化,从而最大程度保留原始时间戳。
操作步骤:
- 主界面勾选 “发送完整字幕”。
- 进入 菜单 → 工具/选项 → 高级选项,取消勾选 “AI翻译附带完整原字幕”。
- 在高级选项中将 “AI翻译渠道每批字幕行数” 设为较大值(如 100),确保一次发送全部字幕。
- 推荐使用指令遵循度高的模型(如 DeepSeek-V3、GPT-4o),本地小模型可能依然会改时间轴。
- 务必勾选主界面 “清理已生成” 后重新执行任务,避免缓存干扰。
注意:此方法依赖 AI 严格按提示词原样输出时间戳,若模型不听话仍会微调,可尝试更换渠道。对于毫秒级重叠,可事后用记事本手动修正 SR。
能不能通过LLM重新断句的提示词,让时间戳保留完整
可以修改 LLM 重断句提示词,但强行保留原始时间戳会与重断句本身的设计目标冲突。LLM 重断句的作用是重新组织句子、切分过长字幕,必然需要重新分配时间戳。如果要求 AI“禁止修改时间轴”,则等同于只纠错、不切分,那么不如直接关闭重断句功能,或在翻译时强制使用原始时间戳。
如果你仍想尝试修改提示词,文件位于软件目录下的 prompts/recharge/recharge-llm.txt,可在其中添加类似指令:
“你只能纠正文本错误,不得修改任何时间戳,每个字幕块必须完全沿用原始的开始和结束时间。”
注意:即便写入提示词,许多模型仍可能忽略该约束,且当原始句子被切分后时间戳将无法分配,导致断句失败。更稳定、更简单的方案是:直接关闭 LLM 重断句功能(将“LLM重新断句每批字幕行数”设为 0),并按照上一轮建议的方式强制使用原始时间轴进行翻译。