#6482 你说说,最终替换人声并嵌入背景发生在最终合成阶段(assembling),;那他的前一个阶段一定有能暂停的,在前一个阶段替换人声后重新嵌入背景:那我使用原 vocal.wav(人声)替换不就完了,;具体是哪个阶段替换?我可以用外部脚本工具完

66.90.**5 Posted at: 4 hours ago

你说说,最终替换人声并嵌入背景发生在最终合成阶段(assembling),;那他的前一个阶段一定有能暂停的,在前一个阶段替换人声后重新嵌入背景:那我使用原 vocal.wav(人声)替换不就完了,;具体是哪个阶段替换?我可以用外部脚本工具完成,我需要考虑涉及到哪些文档,怎么进行的,

9 Replies

按软件内部流水线顺序,配音生成本身发生在 dubbing(语音合成)阶段,音画变速对齐发生在 align 阶段,最终将“无声视频 + 配音 + 背景声 + 字幕”压制合并发生在 assembling(最终合成)阶段

如果你想用外部工具把原 vocal.wav 替换掉软件生成的目标语言配音,最合理的介入点是:

  1. dubbing 阶段结束:此时 cache_folder 中已生成每句字幕对应的配音切片(queue_tts 中每条记录都含 filename 指向该切片)。
  2. align 阶段之前替换:直接把你准备好的、与字幕时间轴对应的音频切片覆盖替换这些 filename 指向的文件,或修改 queue_tts 中的 filename 指向你外部生成的音频文件。
  3. 注意:如果开启了“配音加速/视频慢速”,align 阶段会对这些切片做变速处理,可能导致你的原始人声被加速或改变。如果不想被变速,请不要勾选“配音加速”和“视频慢速”。
  4. 背景声嵌入是在最后的 assembling 阶段完成的:该阶段才会把 instrument.wav(或你指定的背景音频)与替换后的配音合并进最终视频。

软件没有提供官方“暂停在 align 前并自动替换人声”的开关。单视频交互模式下,配音完成后会弹出校对/重新配音窗口,你可以在这个窗口逐句试听并重新配音,但替换整段原始人声仍需通过修改临时目录中的配音文件或外部脚本实现。

涉及的关键文件和数据结构:

  • 临时目录:软件目录/tmp/<PID>/ 下每个任务有独立 cache_folder
  • 配音片段列表:queue_tts,每条包含 filename(对应音频切片路径)、start_timeend_time
  • 背景音频:分离后的 instrument.wav,通常在 cache_folder 或输出目录中
  • 最终合成阶段使用的核心命令逻辑在 videotrans/task/assemble.py(源码部署时可见)

如果你需要更确定的脚本方案,请提供:

  • 软件版本号(左上角)
  • 你是用单视频模式还是批量模式
  • logs/ 中最新日志文件的尾部报错信息(如果报错)

请查阅相关文档:

我想要部分分离阶段的人物原声,而不要配音,人物原声在哪里放置?如果我使用外部字幕而非软件自带的识别能力生成字幕,人物原声不会生成字幕,如何替换?因为配音阶段不会给没字幕的阶段配音的

软件不会自动保留无字幕时间段的原声:合成阶段只会用配音字幕切片替换对应时间段的人声,没有字幕的时间段不会保留原声,只会填充背景声或静音。你希望“部分保留原声”,软件没有内置开关,只能通过外部脚本或手动混音完成。

人物原声文件在哪里

  • 若勾选了“分离人声背景声”,分离出的文件是 vocal.wav(人声)和 instrument.wav(背景声),通常存放在任务的临时缓存目录 软件目录/tmp/<PID>/ 下对应的 cache_folder 中,也可能出现在输出目录的 _video_out/视频名-格式/ 下。
  • 如果想手动指定,可在 _video_out/视频名-格式/ 目录放置 vocal.wavinstrument.wav,并勾选“分离人声背景声”和“重新嵌入背景”,软件会优先使用这些文件。

为什么外部字幕不会生成原声字幕

外部字幕本身带有开始/结束时间,软件会依据它生成配音切片,没有字幕的时间段不会生成配音,也不会自动调用 vocal.wav 去补原声。这是正常的,因为软件默认把所有有对白时间段全部替换为目标语言配音。

如何用外部脚本替换为原声

推荐做法:先让软件正常生成翻译视频(可配音或不配音),然后用 ffmpeg 或音频编辑软件,根据你手中的 SRT 字幕时间轴,把原始 vocal.wav 中对应片段混入最终视频的音频轨道。

基本思路:

  1. 从原始视频提取原始人声(或使用 vocal.wav)。
  2. 获取最终生成视频的音频轨道。
  3. 用 ffmpeg 的 adelayamixvolume 等滤镜,将你希望保留原声的时间段片段叠加入最终音频轨道。
  4. 如果不想让 TTS 出现在这些时间段,可在“配音完成后校对”界面清空对应字幕文本,使这些片段不生成配音(但合成时会是静音/背景声),再用外部工具混入原声。

涉及的文件:原始视频或 vocal.wav、最终生成的视频/音频、SRT 字幕文件(提供时间轴)、外部脚本或 ffmpeg 命令。

请查阅相关文档:

如果需要更具体的脚本,请提供你的软件版本号(左上角)及你使用的任务模式(单视频/批量),我可以结合你本地的日志路径给出更细的实操建议。

我想要人物原声在align阶段之前,也就是配音阶段之后,就放入配音文件中
我需要知道,分离出的 vocal.wav(人声)文件是否相应的时间坐标,能否支持我将他在这个中间时段放入,并和画面对其,

vocal.wav 本身是一条完整的人声音轨,没有内嵌时间坐标。但可通过原始 SRT 字幕的时间轴提取对应时间段的人声片段,从而在 dubbing 之后、align 之前替换对应配音切片。

具体接入点:

  1. dubbing 阶段结束后,任务缓存目录 tmp/<PID>/ 下的 queue_tts 列表中,每条记录都包含 start_timeend_timefilename(指向该句配音切片)。
  2. 你可用 ffmpeg 按 start_time/end_time 从 vocal.wav 中切出对应片段,覆盖 filename 指向的配音文件,或修改 queue_tts 中该条的 filename 指向你的新音频。
  3. 这样后续 align 阶段会按原时间轴处理这些音频(若开启音频加速/视频慢速,原声也会被变速;若不想变速,请关闭这两个选项)。

所以答案是:vocal.wav 可通过字幕时间轴获得坐标,支持在中间时段放入并与画面对齐。

请查阅相关文档:

你理解的有问题,我用自己的字幕生成配音,目标时间段是没有tts配音切片的,相当于只有背景音;
我只是想把分离出来的人声再放回去

vocal.wav 本身没有外挂时间码,但它就是从原视频分离出的完整人声音轨,因此时间轴与原视频天然同步,具备隐含的“时间坐标”。你可以把它按原视频时间轴任意切片,放入某个中间时段并与画面对齐。

但软件没有内置“在无 TTS 配音的时间段自动放回原声”的功能。如果你想在 dubbing 之后、align 之前,把原声放到那些没有配音切片的时间段,需要外部脚本处理:

  1. 让软件正常执行,在 dubbing 阶段结束后、align 开始前暂停(或直接在任务完成后处理)。
  2. 获取该任务 cache_folder 中生成的配音切片文件列表(每个字幕片段对应一个音频文件),以及对应的 SRT 时间轴。
  3. 找出没有配音切片的时间段(即没有字幕或字幕为空的时间段)。
  4. 用 ffmpeg 按这些时间段的起止时间,从 vocal.wav 中切出对应音频片段。
  5. 将这些片段作为额外的“配音片段”加入到该任务的待合成音频列表中,或直接混入最终合成前的音频轨道。

如果你只是想整体把 vocal.wav 放回去(即使有 TTS 的时间段也混入原声),则可以直接在最终合成时用 ffmpeg 将 vocal.wav 与配音轨道混合,但那样会造成原声与 TTS 重叠。要避免重叠,必须按时间轴控制。

因此答案是:vocal.wav 有隐式时间坐标,能支持中途插入并与画面对齐,但需要外部脚本按时间轴切片后放入配音文件列表;软件本身不提供这个开关。

请查阅相关文档:

作者推荐的分离人声和背景音的工具是什么

作者推荐使用 UVR5-GUI(Ultimate Vocal Remover GUI)在 GPU 加速下分离人声和背景声。软件内置人声分离为纯 CPU 计算,速度较慢,因此建议使用该第三方工具离线分离后,将 vocal.wav 和 instrument.wav 放到输出目录对应位置供软件使用。请查阅相关文档:导入本地已有的字幕或人声

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