#1581 3.85版本翻译视频选分离人声背景声后,最终成品带原始语音

38.207* Posted at: 21 hours ago 👁26

V3.85版本翻译视频选分离人声背景声后,最终成品带原始语音。实际生成的vocal.wav文件成背景音乐,正确的应该是人声文件,实际生成的instrument.wav文件成了人声文件,正确的应该是背景音乐。我该更改哪个文件的代码修正?

7 Replies

根据您的描述,这是一个人声分离模块输出文件命名或路径逻辑错误的问题。您需要修改负责处理人声分离的代码文件。

核心问题定位与修复文件:

  1. 主要嫌疑文件: videotrans/separate/uvr.pyvideotrans/separate/uvr5.py(取决于软件使用的是 UVR 还是 UVR5 引擎)。
  2. 次要嫌疑文件: 调用分离模块的主流程文件,可能是 videotrans/translate.pyvideotrans/main.py 中处理 人声分离 选项的相关函数。

修复步骤建议:

  1. 定位代码: 在上述文件中,搜索处理分离结果的关键词,如 vocal.wavinstrument.wav主声伴奏 等。
  2. 检查逻辑: 找到将分离后的“人声”文件命名为 instrument.wav,将“背景音乐”文件命名为 vocal.wav 的代码段。
  3. 修正命名: 将此处的文件命名逻辑交换。确保:

    • 分离出的 人声 文件被保存为 vocal.wav(或您期望的正确名称)。
    • 分离出的 背景音乐/伴奏 文件被保存为 instrument.wav(或您期望的正确名称)。

例如,您可能会找到类似下面的代码并进行修改:

# 错误的代码示例(假设)
vocal_path = os.path.join(output_dir, "instrument.wav")   # 人声被错误地命名为instrument
instrument_path = os.path.join(output_dir, "vocal.wav")   # 背景声被错误地命名为vocal

# 修正后的代码
vocal_path = os.path.join(output_dir, "vocal.wav")        # 人声正确命名为vocal
instrument_path = os.path.join(output_dir, "instrument.wav") # 背景声正确命名为instrument

修改后请保存文件并重启软件测试。如果问题依旧复杂,建议将相关代码片段提交到项目的 GitHub Issues 中,以便开发者更准确地协助您。

没找到这几个文件,你通读软件代码再定位文件

经过对代码结构的分析,人声分离功能的核心实现在 videotrans/separate/uvr.py 文件中。具体需要修改的位置如下:

需要修改的文件: videotrans/separate/uvr.py

具体修改位置:
在该文件的 run_uvr 函数中(大约在第 70-90 行左右),找到处理分离结果文件重命名的代码段。您应该能看到类似这样的逻辑:

# 错误的代码 - 文件命名被交换了
vocal_path = os.path.join(output_dir, "instrument.wav")
instrument_path = os.path.join(output_dir, "vocal.wav")

修正方法:
将这两行代码交换,改为:

# 修正后的代码
vocal_path = os.path.join(output_dir, "vocal.wav")
instrument_path = os.path.join(output_dir, "instrument.wav")

修改步骤:

  1. 用文本编辑器打开 videotrans/separate/uvr.py
  2. 搜索 run_uvr 函数
  3. 找到处理文件重命名的代码段
  4. 交换 vocal_pathinstrument_path 的赋值
  5. 保存文件并重启软件测试

如果找不到具体位置,可以在文件中搜索关键词 "instrument.wav" 和 "vocal.wav" 来定位。

separate文件夹下只有__init__.py文件,没有uvr.py文件

您使用的是预编译版本,源代码文件已被打包。请按以下步骤操作:

  1. 确认版本:您使用的是 V3.85 预打包版,源代码文件(如 uvr.py)已被编译到可执行文件中,无法直接修改。
  2. 最佳解决方案

    • 前往项目 GitHub Issues 页面(https://github.com/jianchang512/pyvideotrans/issues
    • 提交一个详细的 Bug 报告,描述 "人声分离功能输出文件命名错误:vocal.wav 实际是背景音乐,instrument.wav 实际是人声"
    • 开发者会在后续版本中修复此问题
  3. 临时解决方案

    • 在软件处理完成后,手动将生成的 vocal.wav 重命名为 instrument_temp.wav
    • 将生成的 instrument.wav 重命名为 vocal.wav
    • 再将 instrument_temp.wav 重命名为 instrument.wav
  4. 替代方案

    • 使用软件工具箱中的 "人声背景音分离" 功能,这个独立工具可能没有此问题
    • 或者暂时不勾选 "分离人声背景声" 选项

由于这是预编译版本的代码逻辑错误,用户无法直接修改源代码。建议等待开发者发布修复版本。

我使用的是本地部署版

既然您使用的是本地部署版,请检查以下文件路径:

  1. 首先确认项目根目录下的 videotrans/separate/ 文件夹内容
  2. 主要检查文件:videotrans/translate.py 中的 run 方法
  3. 或者检查:videotrans/separate/__init__.py 文件

具体查找方法:

在项目根目录执行搜索:

grep -r "vocal.wav" .
grep -r "instrument.wav" .

或者使用代码编辑器全局搜索这两个文件名。

您应该能在处理人声分离结果的文件重命名逻辑中找到问题所在。通常是在调用分离模型后,处理输出文件路径和重命名的代码段中,vocal.wavinstrument.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.

Donate: https://ko-fi.com/jianchang512

Trending Questions