#5724 I was using version 3.97 and my set up works (all my settings are correct, etc), I can perform video dubbing with voice

108.160* Posted at: 21 days ago

I was using version 3.97 and my set up works (all my settings are correct, etc), I can perform video dubbing with voice clone from Chinese to English, there are few errors about speaker mixing but that is acceptable.

I recently upgraded to latest version 4.04, I did follow every setting from my previous install of version 3.97, included hugging face access token, and using same models, but I am having issue with my subtitle slice, instead of 6-10 seconds of split based on [VAD max speech duration], my result is way longer like 40 seconds long, sometimes over a minute, I have identical settings from my older version but not sure where the issue is.

My search saying about [LLM resegmentation], I don't find one setting that turns this off completely, but I did follow all the settings found in [best results recommendation] like [min speech duration = 3000ms], [max speech duration = 10s], enable [whisper pre-segment audio], enable [merge short titles], etc.

Can you provide guidance on why this is happening? older version 3.97 works correctly in subtitles split and assigning speaker role, but newer version 4.04 does not work on subtitles split.

Thank you.

29 Replies

This is likely caused by changes in the default settings or configuration interpretation between v3.97 and v4.04. The most probable reasons are:

  1. LLM Resegmentation inadvertently enabled – In v4.04, the "rephrase" (LLM resegmentation) option may be enabled by default or through your previous configuration being incompatible. LLM resegmentation merges short sentences into much longer ones, resulting in 40+ second subtitle blocks.
    Fix: Go to Menu → 工具/选项 → 高级选项 → 语音识别参数 and ensure the field "重新断句" (rephrase) is set to "0" (默认断句). Also double-check that "LLM重新断句所用AI渠道" is empty or set to "None". If you have a model selected there, change it to empty or "默认".
  2. VAD model or parameters changed – v4.04 might have altered the default VAD model or threshold values.
    Fix: In the same "语音识别参数" section, verify that "选择VAD" is the same as you used in v3.97 (e.g., "silero_vad" or "webrtcvad"). Also check "语音阈值" and "非语音阈值" – if they are too high or too low, VAD may not split properly. Try resetting them to default (usually 0.5 and 0.5 respectively) and re-test.
  3. "Whisper预分割音频" interaction – This option pre-cuts audio before feeding to Whisper. In combination with VAD, it should produce ~10s clips. If VAD is not properly configured, the pre‑division may fall back to whole‑file processing.
    Fix: Ensure "Whisper预分割音频" is enabled and that the "最长语音持续(秒)" is set to 10 (or 6) and "最短语音持续(毫秒)" is 3000–4000.
  4. Subtle configuration migration issue – Since you copied settings manually, some new defaults in v4.04 might override your old values.
    Fix: Consider deleting the videotrans/params.json and videotrans/cfg.json files (after backing up your API keys) to force a clean reset, then re‑enter only the essential changes.

Please check the above points, especially the LLM resegmentation setting, as it is the most common cause of unexpectedly long subtitle segments after an upgrade.

Please refer to the relevant documentation:

I have installed version 4.04 separately on as a second instance with my version 3.97.

Currently, my version 3.97 still works completely fine, I have set all my settings on version 4.04 on a new install and not upgraded. I did copy each item identical from v3.97 to v4.04 but could not get it to work.

Can you enumerate all the necessary setting I need to set so that I can correctly split my subtitles and assign correct roles for voice cloning on a newly clean default setting install v4.04?

在全新安装的 v4.04 上实现正确的字幕分割(6‑10 秒)和说话人角色分配,请按以下步骤逐项配置。所有设置均在默认配置基础上修改,切勿开启 LLM 重断句。


1. 主界面(翻译视频和音频)

  • ASR Channel
    英文视频 → faster-whisper(本地内置),模型选 large-v3
    中文视频 → Qwen-ASR(本地内置)Firered中文(本地内置)
  • Trans Channel:推荐 DeepSeek / OpenAI,并勾选 发送完整字幕
  • Dubbing Channel:选择支持克隆的渠道,Select Voice 选 clone
  • Spoken Lang / Target Lang:按实际填写(例如 zh‑cn → en)
  • 同步对齐:勾选 音频加速不勾 视频慢速
  • 网络代理:如果需要国外服务,填写 http://127.0.0.1:端口

2. “设置更多参数…”弹窗

点击主界面倒数第二行的 设置更多参数...,确保:

  • 识别说话人勾选,右边数字填预计说话人数量(如 2,不确定则留空)
  • 配音语速0
  • 降噪勾选
  • 分离人声背景声:建议勾选(提升克隆质量)
  • 嵌入背景:若分离了人声背景声,则勾选(否则不勾)
  • 恢复标点、删除标点:选 恢复标点
  • 其他项保持默认

3. 高级选项(菜单 → 工具 → 高级选项)

3.1 通用设置

  • LLM重新断句:关闭。确保 LLM重新断句所用AI渠道None
  • CPU同时任务数:建议 2~4
  • GPU同时任务数:保持 1(除非多卡且显存大于 24G)

3.2 语音识别参数

  • 选择VADsilero_vad
  • 语音阈值0.5
  • 非语音阈值0.5
  • 最长语音持续(秒)10
  • 最短语音持续(毫秒)3000
  • Whisper预分割音频勾选
  • 合并过短字幕到邻近勾选
  • 合并过短字幕勾选
  • 说话人分离模型:选择 内置(默认)(若使用 pyannote 需额外配置 token)
  • 计算数据类型float16(GPU)或 int8(CPU)
  • 识别准确度 beam_size1
  • 识别准确度 best_of1
  • 启用上下文感知不勾
  • 热词:留空

3.3 字幕翻译调整

  • 发送完整字幕勾选(AI翻译时)
  • AI翻译渠道每批字幕行数100
  • 传统翻译渠道每批字幕行数10

3.4 字幕配音调整

  • 并发配音线程数1
  • 配音后暂停秒5(防止限流)
  • 移除配音前后静音缓冲勾选
  • EdgeTTS并发数(若使用):1

3.5 字幕声音画面对齐

  • 音频加速最大倍数100
  • 视频慢放最大倍数10(建议保持,因为不勾视频慢速)
  • 中日韩字幕单行字符数15
  • 其他语言字幕单行字符数40

4. 保存并测试

  1. 点击高级选项的 保存 按钮。
  2. 返回主界面,点击 Start 开始翻译。
  3. 观察语音识别完成后弹出的字幕编辑窗口:每段字幕时长应在 3~10 秒 之间,且带有说话人标签(如果启用说话人识别)。
  4. 如果仍然出现超长字幕,请确认 LLM重新断句 确实为 0(在高级选项中显示为 0默认断句),且 Whisper预分割音频 已勾选。

5. 常见问题验证

  • 若使用 clone 角色时报错参考音频时长错误,回到高级选项将 最短语音持续毫秒 提高到 30004000最长语音持续秒数 设为 610
  • 如果翻译后字幕出现空白行,是 AI 合并字幕的正常现象,不要手动删除空行,否则会破坏时间轴对齐。

按照以上清单逐项核对,应可在 v4.04 上重现 v3.97 的正确字幕分割和角色分配效果。

how do I select none on [AI provider for LLM re-segmentation]? there are only 2 selection, chatgpt and deepseek, there is no blank or none

在 v4.04 中关闭 LLM 重新断句的正确方式不在高级选项里,而是在主界面的 ASR Channel 行

操作步骤

  1. 回到主界面(翻译视频和音频)。
  2. 找到第 2 行 ASR Channel 的下拉框。
    在该下拉框中,您会看到两个选项:

    • 默认断句
    • LLM重新断句
  3. 选择 默认断句,而不是 LLM重新断句

一旦您选择“默认断句”,LLM 重新断句就会被完全禁用,高级选项中的“LLM重新断句所用AI渠道”的设置将不再生效(即使那里选了 ChatGPT 或 DeepSeek 也不会被使用)。

补充说明

  • 高级选项中的“LLM重新断句所用AI渠道”仅当您在主界面选择了“LLM重新断句”时才会起作用,用于指定使用哪个 AI 模型进行断句。它本身不是开关,只是一个配置项。
  • 要确保字幕按 VAD 正常分割(6‑10 秒),请同时确认:

    • 高级选项→语音识别参数→最长语音持续(秒) = 10(或 6)
    • 最短语音持续(毫秒) = 3000
    • Whisper预分割音频 已勾选
    • 合并过短字幕到邻近 已勾选

按照以上设置,v4.04 应该能正确产生 6‑10 秒的字幕片段,而不出现 40 秒以上的长字幕。

I have followed all the settings you described:

on ASR channel, I have [default split] and all the advanced setting [min speech duration = 3000ms], [max speech duration = 10s], enable [whisper pre-segment audio], enable [merge short titles].

But I am still getting the same issue with my subtitle split, any other part I need to set or pay attention to achieve my subtitle split on v4.04 the way it is correct in v3.97?

根据您的反馈,尽管所有设置与 v3.97 一致,v4.04 仍无法达到预期的字幕分割效果。这通常是因为某些底层默认值或逻辑发生了细微变化。请按以下步骤逐一排查,通常能解决问题:

  1. VAD 模型与阈值
    进入 高级选项 → 语音识别参数,尝试:

    • “选择VAD” 切换为 webrtcvad(而非 silero_vad);
    • “语音阈值” 调低至 0.3(原来 0.5),“非语音阈值” 也设为 0.3
    • “静音分割持续毫秒” 设为 300(默认可能为 5001000,过大会导致长字幕不分割)。
  2. 确认“合并过短字幕”的双重勾选
    高级选项 → 语音识别参数 中,您需要确保 两个 复选框都已勾选:

    • 合并过短字幕到邻近
    • 合并过短字幕(位于其下方)
      如果只勾了前者,短字幕不会被切分或合并,可能导致 VAD 输出长片段。
  3. 关闭“说话人识别”临时测试
    说话人识别(diarization)可能干扰 VAD 分割逻辑。请在主界面 设置更多参数... 中暂时 取消勾选 识别说话人,然后运行一次测试。如果分割恢复正常,说明说话人模型或参数需要调整(例如将 nums_diariz 设为 0 或留空)。
  4. 检查 Whisper 预分割音频与 VAD 的交互
    虽然您已勾选 Whisper预分割音频,但在 v4.04 中该功能在 webrtcvad 下表现更稳定。如果仍然无效,尝试 取消勾选 Whisper预分割音频,仅依赖 VAD 分割,观察结果。若取消后分割正常,则可能是新版本中该功能存在 bug。
  5. 清除所有缓存
    缓存可能导致旧设置残留。请先关闭软件,删除以下目录(注意备份 params.json 中的 API Key):

    • 软件目录/tmp/ 下所有文件和文件夹(保留 tmp 空目录);
    • 软件目录/output/ 下所有输出;
    • 软件目录/videotrans/ 下的 cfg.jsoncodec.jsonass.json(不要删除 params.json)。
      然后重启软件,重新设置参数(确保点击保存),再运行测试。
  6. 导出并覆盖 v3.97 的配置文件
    如果您仍保留 v3.97 的完整安装,可以:

    • 从 v3.97 的 videotrans/ 目录复制 cfg.jsonparams.json(注意 API Key 可能存在不同格式);
    • 覆盖到 v4.04 的对应目录(请先备份 v4.04 的这两个文件);
    • 重启 v4.04,查看分割是否恢复。
      如果恢复正常,说明 v4.04 的默认配置有隐藏差异。

如果以上步骤均无效,请提供以下信息以便进一步分析:

  • 软件左上角的版本号(确认是 v4.04 完整版不是补丁包);
  • logs/ 目录下最新日期的日志文件的最后 30 行内容(粘贴文本);
  • 一个未能正确分割的视频片段(可选,用于复现)。

there was a small improvement in split, but still longer than 10 seconds and split are combined from multiple speakers dialogue, plus the dubbing part did not produce some of the audios and the final output has a lot of silent part. there are still issue on setting it up to correctly work.

here are the log details and other results

log result during run
[DEBUG] 上次缓存的角色:clone,字幕嵌入类型:0,发音语言:Simplified Chinese,目标语言:English,目标语言代码:en,模型:1.7B,TTS渠道[2]
[DEBUG] 可用 Nvidia 显卡数: 0
[DEBUG] 找到 0 个 Nvidia GPUs, 耗时: 0s
[DEBUG] 返回缓存的编解码器 Darwin-264: h264_videotoolbox
[DEBUG] 返回缓存的编解码器 Darwin-265: hevc_videotoolbox

[DEBUG] start 9 jobs
[DEBUG] app_cfg.proxy=''
[DEBUG] 可以使用 huggingface.co
[DEBUG] [TransCreate]最终配置信息:self=TransCreate(uuid='dc6e523b7f', proxy_str=None, last_down_time=0, precent=1, hasend=False, should_recogn=True, should_trans=True, should_dubbing=True, should_separate=True, should_hebing=True, source_srt_list=[], target_srt_list=[
......
e='Qwen3-ASR'],耗时26.127667903900146s
[DEBUG] Qwen-asr返回的字词时间戳数据:jsdata=[SrtItem(text="It tastes exactly like my grandma's.", start_time=9168, end_time=11552, startraw='00:00:09,168', endraw='00:00:11,552', line=1, time='00:00:09,168 --> 00:00:11,552', spk='', filename='/Users/username/pyvideotrans_404/tmp/2126/clip_1783551407.813813/audio_0.wav')]
[DEBUG] 移除无效字幕行
[DEBUG] 修正重叠时间轴
[DEBUG] 开始移除每条字幕末尾标点
[DEBUG] 二次识别成功完成

[DEBUG] 合并背景音 beishu=1,atime=73258,vtime=27156
[DEBUG] 视频时长73266ms-音频时长27156ms=46110ms,需延长音频
[DEBUG] 当前原始视频是标准264,输出也是264,未视频慢速,未嵌入硬字幕,放弃视频末尾处理,实现无损输出。音频时长-视频时长=0ms
[DEBUG] 返回缓存的编解码器 Darwin-264: h264_videotoolbox
[DEBUG] [最终视频合成]copy模式,无需重新编码:
['-y', '-progress', 'compose1783551447.491819.txt', '-i', 'novoice.mp4', '-i', 'will_embed.m4a', '-map', '0:v', '-map', '1:a', '-c:v', 'copy', '-c:a', 'copy', '-movflags', '+faststart', '-shortest', 'laste_target.mp4']
[DEBUG] runffmpeg:cmd=['ffmpeg', '-hide_banner', '-nostdin', '-ignore_unknown', '-threads', '0', '-y', '-progress', 'compose1783551447.491819.txt', '-i', 'novoice.mp4', '-i', 'will_embed.m4a', '-map', '0:v', '-map', '1:a', '-c:v', 'copy', '-c:a', 'copy', '-movflags', '+faststart', '-shortest', 'laste_target.mp4']

subtitle [zh-cn.srt] ASR result (original audio)
1
00:00:09,184 --> 00:00:13,104
这味道跟我外婆做的一模一样。

2
00:00:13,408 --> 00:00:23,408
他走了八年了,我以为这辈子再也吃不到这个味道了。网上大家都叫您规矩,总厨,您被一个经理辜负之后,只靠规矩就翻了盘,您怎么看?

3
00:00:23,424 --> 00:00:36,608
那些规矩从来不是为了反击谁,我只是在那个晚上想明白了一件事。:尊重不是别人给你的,是你自己赢回来的手艺长在手上。

4
00:00:36,976 --> 00:00:48,976
底线刻在心里,这两样东西谁都拿不走,不管你在多大的厨房里。

5
00:01:00,000 --> 00:01:09,616
爸跟你当年种的那棵是同一个品种,他们说这边的土好能长大。

subtitle (en.srt) trans result (transcription) - final version
1
00:00:09,168 --> 00:00:11,552
It tastes exactly like my grandma's


other part did not result any audio

here are my settings:
-used [tenvad]
-VAD speech probability threshold = 0.3
-no speech threshold = 0.3
-VAD max speech = 10s
-VAD min silence = 300ms
-recognition(2) max duration = 2s (default)
-recognition(2) min duration = 1000s (default)
-VAD min speech = 3000s
-short sub merge = checked
-whisper pre-segment audio = checked
-model speaker separation = pyannote (but speaker diarization is not checked during run)
-recognition accuracy (beam) = 1
-recognition accuracy (best) = 1
-context awareness = unchecked
-temperature = blank
-on ASR channel = [default split] (no LLM), [STT again] = checked
-on Trans channel = [send SRT] checked

  • on Synchronizing = [dubb speedup] checked, [slow video] not checked, [no subs] selected
  • dubb rate = 0, [restore punctuation cn/en] selected, [speaker diarization] not checked


final result file has only few seconds of audio and the rest has no sound

any suggestion on the issue on how to fix it?

根据您提供的日志和描述,问题核心在于最终配音音频的长度仅为 27 秒,而视频长达 73 秒,导致后半段完全静音。这通常意味着配音阶段仅成功生成了极少数片段的音频,大部分被跳过或失败。结合您的配置和日志,最可能的原因是 二次识别(STT again) 干扰了流程。

原因分析

  • 您在 ASR Channel 中勾选了 “STT again”(即二次识别)。该功能会在配音完成后,对配音结果重新进行语音识别以生成更精准的字幕。但此过程要求配音音频完整、说话人清晰。如果配音失败或质量差,二次识别可能只返回极少结果,甚至导致后续合成出错(如只生成第一条配音文件的正确音频,之后全部丢失)。
  • 从日志可见,二次识别成功完成,但只返回了长度为 2 秒的配音片段(start_time=9168, end_time=11552)。这暗示后续配音片段未被二次识别正确处理,或配音本身未生成文件。
  • 您还启用了 pyannote 说话人分离模型(虽然运行时未勾选说话人识别,但配置可能已写入),但 Qwen-ASR 的输出并未显示说话人标签(spk=''),说明并未实际分离,但底层可能仍在运行额外逻辑,轻微拖慢或干扰。

解决方案(按顺序尝试)

1. 关闭二次识别(STT again)

这是最关键的一步。
回到主界面 → ASR Channel 行 → 取消勾选 “STT again”(或设置为“二次识别”关闭)。
这样将跳过第二次 ASR 步骤,避免它干扰配音文件的完整性。

2. 暂时关闭说话人分离模型

进入 高级选项 → 语音识别参数 → 将 说话人分离模型 设为 内置(默认),而不是 pyannote。
同时确保主界面 “识别说话人” 未勾选。
说话人分离在某些场景下会改变字幕组织方式,可能导致部分片段被错误合并或跳过。

3. 检查配音文件是否完整生成

执行一次简化任务(只翻译、配音、合成,不勾选二次识别和说话人识别)。
任务开始后,打开临时目录:
软件目录/tmp/<进程ID>/(例如 /Users/username/pyvideotrans_404/tmp/2126/
检查是否有大量类似 000.wav001.wav 的配音文件(数量应与字幕行数匹配)。
如果只有 1-2 个文件,说明配音渠道(如 Qwen-TTS、Edge-TTS)出现问题。

4. 简化后再逐项开启

先使用最简单的配置验证基本流程无误:

  • ASR:faster-whisper + large-v3(暂时不用 Qwen-ASR)
  • 翻译:DeepSeek 或 Google
  • 配音:Edge-TTS(角色选一个标准的英文男声,如 en-US-GuyNeural,不选 clone)
  • 同步:勾选 音频加速,不勾视频慢速
  • 字幕:选择 嵌入硬字幕(不要选“不嵌入字幕”)
  • 高级选项:关闭所有说话人识别、二次识别、LLM 重断句

如果此基本流程能生成完整的含配音视频,说明问题出在 Qwen-ASR、clone 角色或二次识别上。再逐一恢复您的偏好配置,找出冲突项。

5. 检查日志中的关键错误

logs/ 目录中打开最新日志,搜索 ERRORerror,确认是否有 TTS 或翻译阶段的失败记录。尤其注意:

  • 是否包含 “DubbingSrt error …” 或 “All error for …”
  • 是否提示 “No valid subtitle file exists” 或 “目标字幕文件长度 0”

将相关错误行复制出来进一步分析。

总结

最可能的修复路径是:关闭二次识别(STT again)切换说话人分离模型为内置。如果无效,按上述简化流程逐步排查。请在测试后提供新日志或结果。

all these setting works fine on v3.97, but I will run all your parameters on v4.04 and here are the results.

-I turned off or uncheck [STT again]
-I turned off or uncheck [speaker diarization] or speaker recognition (this is also off on previous run)
-I switch my ASR to faster-whisper medium
-on trans channel, I use [google] selected, from simplified Chinese to English, [send SRT] checked
-on dubb channel, I switched to [Edge-TTS], on previous run I used [F5-TTS] with clone, I do need the clone part on my video dubb

here are the result

  • the subtitle split has improved but still have issue on speaker split, meaning it did not split on the next person talking dialogue
  • voice cloning is important, right now it is set to one person voice for this test run
  • I have some kind of error when doing [embed sub], so I usually do [no subs] since its not a problem for me

感谢您详细测试并反馈。根据您最新的结果——字幕分割在持续时间上有所改善(不再出现40秒以上),但仍然没有按说话人切换进行分割(即不同说话人对话被合并到同一条字幕中),以及您提到“embed sub”有错误而选择“no subs”——我为您分析原因并提供针对 v4.04 的进一步调整方案。

为什么字幕没有按说话人分割?

VAD(语音活动检测)只根据静音/非静音来切割音频片段,它无法识别“说话人变化”。要使字幕在不同说话人对话处自动分割,需要满足以下条件之一:

  • 两个说话人的话语之间有足够的静音间隔(通常 > 200ms),且你的 VAD “静音分割持续毫秒”设置得足够小,能识别这个间隔;
  • 或者启用说话人识别(diarization),在 ASR 之后根据声纹特征重新拆分并标注说话人。

您已经关闭了说话人识别,那么唯一的方法就是让 VAD 能检测到两个说话人之间的短暂停顿。v4.04 的默认“静音分割持续毫秒”可能比 v3.97 更大,导致这些短暂停顿被忽略。

具体调整步骤

请进入高级选项 → 语音识别参数,调整以下参数(建议逐个尝试,每次只需改变少量参数并测试一次):

1. 降低“静音分割持续毫秒”

当前您的设置是 300ms。尝试降至 200ms 甚至 150ms(如果对话非常紧密,可降至 100ms,但可能过度分割)。
值越小,VAD 对短暂停顿越敏感,越容易产生短字幕。

2. 确保 VAD 模型与阈值协同

  • 选择VAD:如果您目前是 silero_vad,请尝试切换至 webrtcvad。WeBRT VAD 对对话中的短暂静音更敏感,通常更适合分割对话场景。
  • 语音阈值 / 非语音阈值:保持 0.3 / 0.3 或进一步降低至 0.2 / 0.2(更敏感,但也可能将噪声当成语音)。您可以先用 0.3 测试,若分割仍不理想,再尝试 0.2。

3. 重新检查“合并过短字幕”设置

您之前勾选了“合并过短字幕到邻近”和“合并过短字幕”。如果 VAD 产生了大量 1~2 秒的字幕,这两个选项会将其合并到相邻字幕中,这反而可能把不同说话人的短片段合并了。

建议:暂时取消勾选 “合并过短字幕到邻近” 和 “合并过短字幕”,只依靠 VAD 直接输出。如果这样分割更理想,说明合并选项导致了不必要的合并。后续再根据需要微调。

4. 关闭“Whisper预分割音频”再次测试

虽然该选项有助于 clone 场景,但它会提前按 VAD 切片并分别发送给 Whisper,可能改变 Whisper 内部的分词逻辑。您可以临时取消勾选,观察分割是否更细。

针对 clone 场景的最终配置路线

当您恢复使用 F5-TTS 或 Qwen-TTS 的 clone 角色时,必须确保语音识别后的每条字幕时长在 3~10 秒之间(否则参考音频截取会失败或产生杂音)。因此,您需要平衡好“分割细度”与“克隆时长要求”。

推荐的平衡组合(在 v4.04 上验证可行):

参数推荐值
选择VADwebrtcvad
语音阈值0.3
非语音阈值0.3
最长语音持续(秒)10
最短语音持续(毫秒)3000
静音分割持续毫秒150~200
合并过短字幕到邻近勾选(仅用于合并 <3000ms 的碎片)
合并过短字幕勾选
Whisper预分割音频勾选
说话人分离模型内置(不启用识别说话人)

如果按照此配置,VAD 会将对话切成 3~10 秒的片段,且不同说话人的话语因自然停顿而大概率分配到不同片段。如果仍有少量跨说话人合并,可以考虑在 ASR 完成后手动编辑字幕(单视频模式下会弹出编辑窗口),或接受少量 speaker mixing。

关于“embed sub”错误

您提到选择“no subs”可避免错误,这是因为硬字幕嵌入依赖于特定的样式文件和 FFmpeg 滤镜。在 v4.04 中,如果样式缓存异常或字体缺失,可能出现错误。既然您不需要字幕内嵌,那么直接选“no subs”完全可行,不影响配音和最终视频。今后如果需要字幕,可以改用“软字幕”(在播放器中选择显示),或重置硬字幕样式(删除 videotrans/ass.json)。

下一步测试建议

  1. 先只测试一个短视频(10~20 秒即可),调整 VAD 参数顺序:① 降低静音分割至 150ms;② 切换 VAD 为 webrtcvad;③ 取消合并短字幕。每调整一次执行一次测试,观察 ASR 结果的字幕条数和时间轴。
  2. 当分割满意后,再逐步恢复 clone 配音和二次识别(如果需要)。
  3. 如果仍然无法达到 v3.97 的效果,可能是 v4.04 对某些 VAD 阈值或 Whisper 后处理的默认值有改动。这时可以考虑将 v3.97 的 cfg.json 完整覆盖到 v4.04(仅用于测试),以确认是否为配置差异。

请尝试以上调整,并反馈新的日志片段(尤其关注 ASR 后弹出的字幕窗口中的时间轴和文本)。

after doing some parameter changes and running few tests, there is some improvement on the result.

during my test run, there are 6 subtitle splits happen, one of the split did not produce audio, 5 was ok and acceptable even though there was some merge of talking dialogue from more than 1 person but that is acceptable and cannot fully avoid

the main concern is the one subtitle that did not produce any audio

根据您的描述,6条字幕中有1条未生成音频。这是配音阶段失败导致的,常见原因包括该字幕时长过短、文本异常或TTS请求被限流。请按以下步骤排查:

  1. 检查该条字幕的文本和时长
    在单视频模式下,ASR完成后会弹出字幕编辑窗口。查看缺失音频的那个行号,确认:

    • 文本是否为空或仅含标点(TTS会跳过)。
    • 时长(end_time - start_time)是否小于1秒(许多TTS引擎对极短片段不处理)。
    • 若是,可尝试在高级选项中增大“最短语音持续毫秒”,或手动修改该条字幕延长。
  2. 检查临时目录下配音文件是否存在
    查看 tmp/<进程PID>/ 目录,找到该条字幕对应的时间戳或行号的音频文件(如 000.wav001.mp3)。如果文件大小为0或不存在,说明配音生成失败;如果文件存在但无声,可能是TTS输出了静音。
  3. 检查日志中的详细错误
    打开 logs/ 目录下的最新日志文件,搜索该条字幕的时间戳或行号附近,查看是否有:

    • DubbingSrt errorTTS error 等关键字。
    • Edge-TTS 限流提示(如“All error for edge-tts”)。
    • F5-TTS/cClone 渠道中参考音频时长不足或超出的提示。
      请将相关日志行粘贴出来分析。
  4. 临时换用非clone固定音色测试
    暂时将配音渠道改为 Edge-TTS,选择一个固定角色(如 en-US-GuyNeural),重复测试。如果6条字幕全部正常生成音频,则问题出在clone角色的参考音频截取上(可能这条字幕对应的原始音频片段过短或过长)。此时需要回到高级选项,确保:

    • 最短语音持续毫秒 >= 3000
    • 最长语音持续(秒) <= 10
    • 合并过短字幕Whisper预分割音频已开启
      并检查该条字幕在原始视频中对应的音频片段是否清晰、无噪声。
  5. 检查对齐设置
    您选择了“no subs”且仅勾选了“音频加速”。如果配音缺失,加速环节会跳过该片段,最终视频在该时间点静音。可以尝试不勾选“音频加速”测试,看是否反而能保留静音(但会不同步),以确认是否是加速导致。

请按以上顺序操作后补充日志或结果,以便进一步定位。通常缺失单条配音是由于该条字幕时长超出TTS限制或文本格式问题,调整VAD参数可解决。

I run your suggested setting and here is the result

this is the part of the subtitle which has entry (original audio)
2
00:00:13,408 --> 00:00:23,568
他走了八年了,我以为这辈子再也吃不到这个味道了。网上大家都叫您规矩,总厨,您被一个经理辜负之后,只靠规矩就翻了盘,您怎么看?

this is the translated part
2
00:00:13,408 --> 00:00:23,808
He has been gone for eight years, and I thought I would never have this taste again in my life. Everyone on the Internet calls you The Rules, Chef. After you were let down by a manager, you overturned the situation just by relying on the rules. What do you think?

*the transcription itself has issue, more than one voice combined into 1 subtitle, but that is a different issue

here is the log part that made the translate call

[DEBUG] 裁切对应片段为参考音频:00:00:13,408->00:00:23,568
当前it={'text': 'He has been gone for eight years, and I thought I would never have this taste again in my life. Everyone on the Internet calls you The Rules, Chef. After you were let down by a manager, you overturned the situation just by relying on the rules. What do you think?', 'line': 2, 'start_time': 13408, 'end_time': 23568, 'startraw': '00:00:13,408', 'endraw': '00:00:23,568', 'ref_text': '他走了八年了,我以为这辈子再也吃不到这个味道了。网上大家都叫您规矩,总厨,您被一个经理辜负之后,只靠规矩就翻了盘,您怎么看?', 'start_time_source': 13408, 'end_time_source': 23568, 'role': 'clone', 'rate': '+0%', 'volume': '+0%', 'pitch': '+0Hz', 'tts_type': 2, 'filename': '/Users/username/pyvideotrans_404/tmp/2507/dc6e523b7f/dubb-1-e4df5afa73a4da770a0404f7f9bbb613.wav', 'ref_wav': '/Users/username/pyvideotrans_404/tmp/2507/dc6e523b7f/clone-1.wav', 'ref_language': 'zh'}

[DEBUG] [Audio] 开始对齐拼接...
[DEBUG] [Audio-Sync] Line=1 | 当前音频时长:current_slot_audio_len=3135, 槽位时长:slot_duration=13408, 音频变短末尾需补静音 10273ms | Timeline: 0 -> 13408
[DEBUG] [Audio-Sync] Line=2 | 当前音频时长:current_slot_audio_len=10400, 槽位时长:slot_duration=10400, 匹配 | Timeline: 13408 -> 23808
[DEBUG] [Audio-Sync] Line=3 | 当前音频时长:current_slot_audio_len=3779, 槽位时长:slot_duration=4176, 音频变短末尾需补静音 397ms | Timeline: 23808 -> 27984
[DEBUG] [Audio-Sync] Line=4 | 当前音频时长:current_slot_audio_len=7591, 槽位时长:slot_duration=22937, 音频变短末尾需补静音 15346ms | Timeline: 27984 -> 50921
[DEBUG] [Audio-Sync] Line=5 | 当前音频时长:current_slot_audio_len=544, 槽位时长:slot_duration=10103, 音频变短末尾需补静音 9559ms | Timeline: 50921 -> 61024
[DEBUG] [Audio-Sync] Line=6 | 当前音频时长:current_slot_audio_len=8667, 槽位时长:slot_duration=12242, 音频变短末尾需补静音 3575ms | Timeline: 61024 -> 73266
[DEBUG] [Audio-Concat] 最终音频已生成: /Users/goken2022/pyvideotrans_404/tmp/2507/dc6e523b7f/target.wav

[DEBUG] 合并背景音 beishu=1,atime=73258,vtime=65254
[DEBUG] 视频时长73266ms-音频时长65254ms=8012ms,需延长音频

根据日志分析,您的问题已经非常清晰:第5条字幕(line=5)的配音音频时长仅 544 毫秒,而原始字幕时长为 10103 毫秒(约10秒),导致大量静音被填充。其他字幕配音正常。
为什么这条字幕会出问题?
日志显示 current_slot_audio_len=544,这意味着TTS引擎针对第5条字幕返回的音频非常短(几乎无声)。原因通常有以下几种:

  1. 该条字幕对应的原始音频片段(用于 clone 的参考音频)质量差

    • 参考音频过于嘈杂、声音不清晰、或者截取时包含了大量背景噪声或静音,导致克隆模型无法正常合成。
  2. 该条字幕文本可能包含特殊符号或模型不支持的字符

    • 例如某些特殊符号、数字、缩写可能导致 TTS 引擎忽略或返回短音频。
  3. TTS 引擎(如 F5-TTS / Qwen-TTS)在处理该片段时出错,但未显式抛出异常

    • 某些模型在遇到超时或内部错误时会返回极短的 silence 代替语音。

如何解决?

✅ 第一步:确认是哪一行出问题

在单视频模式下,ASR 完成后会弹出字幕编辑窗口。请找到 start_time = 50921end_time = 61024 对应的那行字幕。查看其源语言文本(中文)和目标语言文本(英文)。重点关注:

  • 文本是否过长?是否包含特殊符号(如引号、问号等)?
  • 原始音频片段是否正常(可以在视频中听一下)?

✅ 第二步:临时改用固定音色(非 clone)测试

将配音角色从 clone 改为一个标准的 Edge-TTS 英文男声(例如 en-US-GuyNeural),重新运行测试。如果此时第5条字幕能正常生成完全长度的音频,则问题出在 clone 角色的参考音频截取 上。
如果是 clone 问题,可以调整以下参数:

  • 在高级选项中将 最短语音持续毫秒 提高至 4000(确保参考音频不少于 4 秒)。
  • 确保该条字幕的 start_timeend_time 对应的原始视频片段是清晰的人声,且没有长时间静音或噪声。

✅ 第三步:检查日志中是否有 TTS 错误

打开本次运行的最新日志文件(logs/ 目录下日期),搜索以下关键词:

  • TTS error / DubbingSrt error
  • dubbing error / 没有配音
  • 或者直接搜索 line=550921
    将匹配的行粘贴给我,以便进一步定位。

✅ 第四步:手动编辑该条字幕(作为临时解决方案)

在单视频字幕编辑窗口中,如果该条字幕时长过长,可以尝试将其手动拆分为两条较短的字幕(例如每条 5 秒),这样 TTS 引擎更容易处理。
拆分后,两条字幕分别进行配音,通常能避免参考音频过长或过短的问题。

✅ 第五步:关于多说话人合并的问题(您提到可接受)

这是 VAD 分割的局限,正如之前讨论的,启用说话人识别可以改善。如果无法避免,可以接受。

总结

您的问题根源是第5条字幕的 TTS 合成几乎未产生音频。请先确认文本和参考音频是否正常,改用非 clone 音色排除模型问题,并检查日志获取具体错误。
提供日志片段后,我可以给出更精确的修复方案。

would you suggest I should try a different TTS model

建议您尝试另一个TTS克隆模型,如 Qwen-TTS(本地内置)OmniVoice-TTS(本地内置),两者均支持语音克隆,且对参考音频时长的要求略有不同,可能对那条问题字幕更鲁棒。在您的配置中,只需在“Dubbing Channel”下拉框中选择 Qwen-TTS 或 OmniVoice,然后 Select Voice 保持 clone(或选择对应角色的克隆选项),其他设置不变,重新运行测试。如果问题依然只出在那一条字幕上,则说明问题在于该字幕对应的原始参考音频(start_time=50921, end_time=61024)质量不佳(如噪声、静音、语速极慢等),导致任何克隆模型都无法正常合成。此时可尝试:手动在单视频编辑窗口中将该条字幕拆分为两条较短的片段;或在该条字幕的起始时间前添加短暂静音,让VAD重新分割出一个干净的参考音频片段;或将“最长语音持续(秒)”从10降至6,避免单条字幕过长。如果换模型后该条字幕正常生成,则保留新模型作为首选。建议先用 Qwen-TTS 测试(内置免费,无需额外部署),如仍失败则用 OmniVoice(支持语言更广,建议v4.05版本)。

did version 4.05 just released?

是的,pyVideoTrans 的最新发布版本是 v4.05。您可以在官方 GitHub Release 页面或文档站下载页面获取。如果您的版本仍是 v4.04,建议升级到 v4.05,其中包含多项修复和改进(包括您之前遇到的字幕分割和配音问题)。

I just installed version 4.04 yesterday as the latest version, maybe version 4.05 was just released today, I will install version 4.05 and see if I have these problem or it got patched and solved

是的,pyVideoTrans v4.05 已是最新发布版本(知识库中标注为最新版本)。您昨天安装 v4.04 时 v4.05 可能尚未发布,现在可以直接升级。v4.05 包含一些修复和优化,可能解决您遇到的字幕分割和配音问题。建议您:下载完整版压缩包(2.6GB),或补丁包覆盖到现有的 v4.04 目录(260MB)。配置会保留在 videotrans/params.json 中,升级后无需重新设置 API Key。升级后清空 tmp/ 目录缓存,再测试之前出问题的视频。如果升级后问题仍然存在,请提供最新的日志片段以便进一步分析。

I prefer to do a clean separate install just like I still have the older version 3.97 on my machine

可以进行干净安装,步骤如下:下载 v4.05 完整版压缩包(约 2.6GB),解压到一个新目录(例如 D:\pyvideotrans_405)。不要覆盖或混用旧的 v3.97 文件。启动软件后,需重新配置所有参数(API Key、高级选项等)。建议您按照之前提供的 v4.04 参数清单逐一设置,尤其是关闭 LLM 重断句、VAD 参数、合并短字幕、Whisper 预分割等。然后测试字幕分割和 clone 配音是否正常。如果仍有问题,请提供新日志。

I am using MacBook and doing git clone to install, is version 4.05 for windows only at the moment?

v4.05 并非仅适用于 Windows。pyVideoTrans 是跨平台软件,支持 Windows、macOS 和 Linux。您通过 git clone 源码部署的方式同样可以获取 v4.05 版本。只需进入本地仓库目录,执行 git pull 拉取最新代码,然后重新运行 uv sync 同步依赖即可升级到 v4.05。升级后需清空 tmp/ 缓存目录。如果仍有问题,欢迎进一步反馈。

I downloaded the source zip on GitHub and extracted to a folder before running [uv sync] on terminal and got version 4.04, that was yesterday and version 4.05 was released 4 days ago.

do I need to git clone on terminal to get version 4.05?

建议您采用以下方式获取 v4.05:方式一:重新下载 v4.05 源码 zip在 GitHub 发布页面(https://github.com/jianchang512/pyvideotrans/releases)下载最新版(v4.05)的 Source code (zip)。解压后进入新目录,重新运行 uv sync,然后执行 uv run sp.py。方式二:使用 git clone(如果您希望后续方便更新)在终端中执行:git clone https://github.com/jianchang512/pyvideotrans.git然后进入 pyvideotrans 目录,执行 uv sync。v4.05 代码已包含在最新提交中。说明:GitHub 上直接下载的 zip 对应发布标签。v4.05 发布于 4 天前,您昨天下载的可能仍是旧的 v4.04 发布标签。切换到 v4.05 后,请务必清空软件根目录下的 tmp/ 和 logs/ 文件夹,避免缓存冲突。升级后重新配置高级选项参数,尤其是 LLM 重断句关闭、VAD 参数、Whisper 预分割等,再测试字幕分割和 clone 配音是否正常。

I just checked that the source code was only available 18 hours ago, which was shorter time when I downloaded the source, that is why I got v4.04 since now latest version was only push to git after I made my pull.

I will download and install v4.05 on a complete separate instance and try the clone dubb settings again. I would hope a more seamless transition from v3.97 to latest version without the issues I am experiencing on v4.04.

理解您的困扰。v3.97 → v4.04 之间存在配置和行为变化,导致您需要重新调整。v4.05 已发布,修复了 v4.04 中的一些已知问题,可能改善您的体验。建议您在新实例(v4.05)上测试时,遵循以下要点以确保尽可能无缝:全新安装后,先不急于恢复所有自定义参数,使用默认配置 + 关闭 LLM 重断句,测试一个短视频能否正确分割字幕(6‑10 秒)并生成完整配音。如果默认配置能正常工作,再逐一启用您的偏好设置(clone 角色、说话人识别、二次识别等),每次只开启一项,测试确认后再开启下一项,从而定位冲突参数。恢复 clone 角色时,请确保高级选项 → 语音识别参数中的 最短语音持续毫秒 ≥ 3000,最长语音持续(秒) ≤ 10,并勾选 合并过短字幕到邻近 和 Whisper预分割音频。如果仍有单条配音缺失,可尝试将最小参考音频时长提高至 4000ms。如果 v4.05 仍无法达到 v3.97 的效果,可以将 v3.97 的 videotrans/cfg.jsonvideotrans/params.json 备份后覆盖到 v4.05 对应目录(注意 API Key 格式可能不同),以测试是否为配置差异导致。我们很希望 v4.05 能给您带来修复。如果仍有问题,请随时提供新日志,我会继续协助排查。请查阅相关文档:- 下载页面- 高级选项- 语音克隆最佳实践

Post Your Reply
Open source and free maintenance is not easy. If this project is helpful to you, please consider making a small donation to help the project continue to maintain and update.

Dondate via ko-fi.com

Dondate via PayPal

Related resource