#4717 有中文音轨和中英文字幕srt文件各一份,怎么克隆音色生成英文音轨

142.171* Posted at: 2 hours ago

有中文音轨和中英文字幕srt文件各一份,怎么克隆音色生成英文音轨

17 Replies

原因

你的需求是使用已有的中文音轨和中文、英文字幕文件,跳过 ASR 识别和翻译,直接克隆原视频中的人声音色,生成英文配音。pyVideoTrans 支持这种工作流。

解决方案

按以下步骤操作:

  1. 准备字幕文件

    • 进入视频所在目录,创建 _video_out 文件夹。
    • _video_out 内创建与视频同名的子文件夹(若视频为 myhomework.mp4,则文件夹名为 myhomework-mp4;3.87 版后必须包含 - 加后缀)。
    • 将中文字幕文件放入该子文件夹并重命名为 zh-cn.srt,将英文字幕文件重命名为 en.srt
  2. 主界面设置

    • 源语言:选择“简体中文”。
    • 目标语言:选择“英语”。
    • 配音渠道:选择一个支持声音克隆的渠道,例如 F5-TTS(本地API)OmniVoice-TTS(本地API)GPT-SoVITSCosyVoice
    • 配音角色:选中 clone(表示使用原视频中对应片段的原始音色进行克隆)。
  3. 高级选项优化(强烈建议)

    • 打开 菜单 → 工具/选项 → 高级选项 → 语音识别参数

      • 将“最短语音持续毫秒”设为 3000
      • 将“最长语音持续秒数”设为 10
      • 同时勾选“Whisper预分割音频?”和“合并过短字幕到邻近”。
    • 此配置确保字幕时长时间落在 3~10 秒之间,提高克隆成功率(多数克隆渠道要求参考音频在此范围内)。
  4. 开始处理

    • 勾选“清理已生成”(确保不使用旧缓存)。
    • 点击“开始任务”。软件将跳过 ASR 和翻译阶段,直接使用你提供的字幕进行配音和合成。

请查阅相关文档:

按照这个操作只能选择视频文件吗?我只有中文音轨mp3文件

可以。主界面支持直接选择 音频文件(mp3/wav/m4a/flac/aac 等)。操作流程与视频完全一致:

  1. 准备字幕
    将音频文件放入一个文件夹,创建 _video_out,再创建 音频文件名-mp3 的子目录(注意:音频后缀是 mp3 则子目录名为 音频文件名-mp3),将中文字幕重命名为 zh-cn.srt,英文字幕重命名为 en.srt 放入该子目录。
  2. 主界面设置

    • 点击“选择音频或视频”,选中你的 MP3 文件。
    • 发音语言:简体中文;目标语言:英语。
    • 配音渠道:选择一个支持 clone 的渠道(如 F5-TTS/OmniVoice/GPT-SoVITS 等)。
    • 配音角色:选择 clone
    • 勾选“清理已生成”。
  3. 高级选项
    菜单 → 工具 → 高级选项 → 语音识别参数:设“最短语音持续毫秒”=3000,“最长语音持续秒数”=10,勾选“Whisper预分割音频?”和“合并过短字幕到邻近”。
  4. 开始处理
    点击开始即可。最终输出的内容将是 带英文配音的音频文件(默认保存到原文件所在目录下的 _video_out 文件夹中,文件格式保持为原音频格式,但软件会封装为 mp4 容器,只含音频轨道,不影响使用。如需纯音频,后续可用工具转换)。

注意

  • 如果最终只需要音频文件,处理完成后可直接使用输出目录中的 目标语言_配音文件(如 en.wav)或最终合成的封装文件。
  • 必须确保中文字幕 zh-cn.srt 的时间轴与音频中的人声对齐,否则音色克隆会错位。


Application started at 2026-05-26 00:55:21

PIL\Image.py:116: RuntimeWarning: The _imaging extension was built for another version of Pillow or PIL:
Core version: 12.1.0
Pillow version: 12.1.1
if version != getattr(core, "PILLOW_VERSION", None):
First searching GPU...
[DEBUG] 返回缓存的编解码器 Windows-264: h264_nvenc
[DEBUG] 返回缓存的编解码器 Windows-265: hevc_nvenc
NVIDIA_GPU_NUMS=1
Found 1 GPUs, cost=2s
start workers...
process_max_gpu=1
multi_gpus=False
Concurrent task_nums=1
process_max=0
start 9 jobs
ended workers
[DEBUG] 最终配置信息:self.cfg=TaskCfgVTT(is_cuda=True, uuid='c2fb8ddabe', cache_folder='D:/pyVideoTrans/tmp/2344/c2fb8ddabe', target_dir='D:/拍摄/充电分享youtube/_video_out/中文音轨-mp3', sosk
='简体中文', sosk
_code='zh-cn', source_sub='D:/拍摄/充电分享youtube/_video_out/中文音轨-mp3/zh-cn.srt', source_wav='D:/pyVideoTrans/tmp/2344/c2fb8ddabe/zh-cn.wav', source_wav_output='D:/拍摄/充电分享youtube/_video_out/中文音轨-mp3/zh-cn.m4a', task
='英语', task
_code='en', target_sub='D:/拍摄/充
......
schema
File "pyimod02_importers.py", line 457, in exec_module
File "transformers\utils\sk
_utils.py", line 51, in

from PIL.Image import Image

File "pyimod02_importers.py", line 457, in exec_module
File "PIL\Image.py", line 103, in
ImportError: The _imaging extension was built for another version of Pillow or PIL:
Core version: 12.1.0
Pillow version: 12.1.1
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "videotrans\configure\_base.py", line 285, in _new_process
File "concurrent\futures\_base.py", line 458, in result
File "concurrent\futures\_base.py", line 403, in __get_result
ImportError: The _imaging extension was built for another version of Pillow or PIL:
Core version: 12.1.0
Pillow version: 12.1.1
concurrent.futures.process._RemoteTraceback:
"""
Traceback (most recent call last):
File "concurrent\futures\process.py", line 246, in _process_worker
File "videotrans\process\stt_fun.py", line 806, in qwen3asr_fun
File "D:\pyVideoTrans\_internal\qwen_asr\__init__.py", line 20, in

from .inference.qwen3_asr import Qwen3ASRModel

File "D:\pyVideoTrans\_internal\qwen_asr\inference\qwen3_asr.py", line 21, in

from qwen_asr.sk-***_backend import (

File "D:\pyVideoTrans\_internal\qwen_asr\core\transformers_backend\__init__.py", line 16, in

from .configuration_qwen3_asr import Qwen3ASRConfig

File "D:\pyVideoTrans\_internal\qwen_asr\core\transformers_backend\configuration_qwen3_asr.py", line 15, in

from transforsk-***_utils import PretrainedConfig

File "pyimod02_importers.py", line 457, in exec_module
File "transformers\__init__.py", line 27, in

from . import dependsk-***_check

File "pyimod02_importers.py", line 457, in exec_module
File "transformers\dependsk


_check.py", line 16, in

from .usk-*** import require_version, require_version_core

File "pyimod02_importers.py", line 457, in exec_module
File "transformers\utils\__init__.py", line 37, in

from .sk-***_utils import DocstringParsingException, TypeHintParsingException, get_json_schema

File "pyimod02_importers.py", line 457, in exec_module
File "transformers\utils\sk


_utils.py", line 51, in

from PIL.Image import Image

File "pyimod02_importers.py", line 457, in exec_module
File "PIL\Image.py", line 103, in
ImportError: The _imaging extension was built for another version of Pillow or PIL:
Core version: 12.1.0
Pillow version: 12.1.1
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "videotrans\configure\_base.py", line 285, in _new_process
File "concurrent\futures\_base.py", line 458, in result
File "concurrent\futures\_base.py", line 403, in __get_result
ImportError: The _imaging extension was built for another version of Pillow or PIL:
Core version: 12.1.0
Pillow version: 12.1.1
[DEBUG] [语音识别]渠道2,1.7B:共耗时:5s

这是由于软件内置的 Pillow 库版本(12.1.0)与环境中实际加载的版本(12.1.1)不一致导致的。最直接的原因是使用了不完整的补丁包覆盖或解压路径存在冲突。

解决方法:

  1. 删除当前的软件目录,从官网重新下载完整软件包.7z 完整版,非补丁包)。
  2. 解压到纯英文路径(例如 D:\pyVideoTrans),不要含中文、空格或特殊符号。
  3. 确保解压时完整解压,没有遗漏文件。如果是多层压缩包,解压后直接运行 sp.exe 即可,无需覆盖其他文件。

此问题在重新解压完整包后即可修复,无需修改其他配置。

用Qwen-tts(本地)配音只能参考f5-tts里的几秒参考音频吗?能克隆原音频断句之后每句的音色可以吗

可以。Qwen-TTS(本地)支持 clone 角色,选择 clone 后会自动根据原音频中每句话对应的片段提取音色进行克隆,无需手动准备参考音频。你需要在配音渠道中选择 Qwen-TTS(本地),然后在配音角色中选择 clone,软件会自动将原音频按断句后的每段语音作为参考进行声音克隆。无需在 f5-tts 文件夹中放置任何参考音频(该文件夹仅用于 F5-TTS 等渠道的手动参考音频)。

进度条一直在Qwen-TTS starting不动了 log就到这里[DEBUG] 开始语音合成:渠道1
2026-05-26 01:34:48,093 - modelscope - WARNING - We can not confirm the cached file is for revision: master
2026-05-26 01:34:48,095 - modelscope - WARNING - We can not confirm the cached file is for revision: master
[DEBUG] [新进程任务 开始:Qwen3-TTS]
[DEBUG] 任务参数:kwargs={'queue_tts_file': 'D:/pyVideoTrans/tmp/28744/99472cbaeb/queusk


.0968525.json', 'language': 'English', 'logs_file': 'D:/pyVideoTrans/tmp/28744/99472cbaeb/qwen3sk
.0968525.log', 'defaulelang': 'zh', 'is_cuda': True, 'model_name': '1.7B', 'roledict': {'No': 'No', 'clone': 'clone', 'nverguo.wav': {'ref_wav': 'nverguo.wav', 'ref_text': '你说四大皆空,却为何,紧闭双眼,若你睁开眼睛看看我,我不相信你,两眼空空。'}, 'Vivian': 'Vivian', 'Serena': 'Serena', 'Uncle_fu': 'Uncle_fu', 'Dylan': 'Dylan', 'Eric': 'Eric', 'Ryan': 'Ryan', 'Aiden': 'Aiden', 'Ono_anna': 'Ono_anna', 'Sohee': 'Sohee'}, 'prompt': '', 'device_index': 0}

原因日志显示 Qwen-TTS 模型初始化卡住,可能是参考音频文件 nverguo.wav 未找到或格式不正确,也可能是模型首次运行需要在线下载,网络缓慢导致无响应。解决方案1. 检查参考音频

  • 确认 nverguo.wav 文件位于软件根目录下的 f5-tts/ 文件夹内(Qwen-TTS 本地版与 F5-TTS 等共享该目录)。
  • 文件格式必须为 .wav,时长 3~10 秒,且文件名和路径不含中文/空格。
  • 若你希望使用“断句每句话的原始音色克隆”,请在配音角色中选 clone,而不是选择一个具体的 .wav 文件。
  1. 等待模型下载

    • 首次运行 Qwen-TTS(本地)时,需要自动下载 1.7B 参数模型,耗时较长(可能数分钟至几十分钟)。请保持软件运行,观察网络流量。
    • 如需加速,可提前手动下载模型到 models/ 目录(参考官方文档)。
  2. 检查网络与 CUDA

    • 确保网络通畅(海外模型下载可能需要代理)。
    • 如显存不足,可关闭其他 GPU 占用程序,或在高级选项中降低模型精度(float16/int8)。

请先按 1 调整角色设置,然后重新启动任务,耐心等待。

勾选了cuda但是处理了过程中gpu之有显存被大模型占用,实际没有调用gpu加速,只有cpu在高主频跑,是怎么回事

勾选了 CUDA 但 GPU 未用于计算(仅显存占用、CPU 高负载),通常由以下原因导致:1. CUDA 版本或 cuDNN 不符合要求:软件要求 CUDA 12.8+、cuDNN 9.11+。2. 环境变量缺失:系统 Path 中未添加 CUDA 的 binlib 目录。3. 子进程 CUDA 不可见:本地 ASR 或 TTS 服务通过子进程运行,子进程默认无法继承主进程的 CUDA 上下文,需要正确设置环境变量。4. TTS 渠道本身不支持 GPU:如 Qwen-TTS(本地)目前主要运行在 CPU 上(PyTorch 虽支持 CUDA,但模型加载可能固定为 CPU)。请按以下步骤排查:1. 验证 CUDA 基础环境:打开 CMD 输入 nvcc -V(查看编译器版本)和 nvidia-smi(查看驱动及支持的最高 CUDA 版本),确认 CUDA >= 12.8,cuDNN >= 9.11。若未安装,参考 Windows上安装CUDA12.8和cuDNN9.11。2. 确认环境变量:在“系统变量”的 Path 中应包含 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\binC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\libnvvp(安装路径可能不同,请按实际修改),添加后重启软件。3. 调整高级选项:打开 菜单 → 工具/选项 → 高级选项 → 在“语音识别参数”区域:将“CUDA数据类型”设为 float16int8;将“beam_size”和“best_of”均设为 1;勾选“Whisper预分割音频?”;取消勾选“启用上下文感知”。——这些设置可降低显存需求并使子进程更容易调用 CUDA。4. 确认 TTS 渠道的 CUDA 支持:Qwen-TTS(本地)默认可能使用 CPU 推理。如需 GPU 加速,可尝试切换为其他本地 TTS 渠道(如 CosyVoice 或 F5-TTS),这些渠道明确支持 CUDA(在正确配置环境下)。若以上步骤仍无效,请提供 nvidia-smi 输出及软件 logs/ 目录下的最新日志文件(特别是包含 cudadevicegpu 关键字的行),以便进一步分析。

一共62句 卡在第20句就一直不动了

卡在第20句不动,通常是该句的配音请求未被正确处理(模型推理超时、参考音频提取失败或子进程阻塞)。请按以下顺序排查:

1. 立刻查看日志

打开 logs/ 目录下最新日志文件,搜索第20句对应的行,看是否有 ErrortimeoutretryCUDA out of memory 等关键字。

2. 调整句子分割参数

如果使用 clone 角色,该句的原语音片段时长可能不在 3~10s 范围内,导致 Qwen-TTS 无法提取参考音频。
操作:打开 菜单→工具→高级选项→语音识别参数,将:

  • 最短语音持续毫秒 → 1000(放宽下限)
  • 最长语音持续秒数 → 5(缩短上限,避免长句)
  • 取消勾选 合并过短字幕到邻近
    然后清理已生成重新执行。

3. 换渠道测试

Qwen-TTS(本地)对每句的参考音频提取和推理存在不稳定性。
临时改为 Edge-TTS(免费),如果迅速通过第20句,则说明是 Qwen-TTS 自身问题。此时可换用 CosyVoice(本地API)F5-TTS(本地API) 的 clone 角色,它们对 CUDA 和长句子支持更好。

4. 强制串行 + 单核处理

高级选项→通用设置 中:

  • 勾选 批量翻译时强制串行
  • GPU同时任务数[重启生效] 设为 1
    重启软件后重新执行,避免并发冲突。

5. 跳过问题句子(最终手段)

如果只需快速完成,可手动修改原始字幕,将第20句的内容缩短或拆分为两句,然后重新执行(需清理已生成)。或者使用单视频交互模式,在配音弹出编辑框时直接删除/替换该句。

请查阅相关文档:

log就到这里没有了
[DEBUG] 开始语音合成:渠道1
2026-05-26 01:38:18,256 - modelscope - WARNING - We can not confirm the cached file is for revision: master
2026-05-26 01:38:18,258 - modelscope - WARNING - We can not confirm the cached file is for revision: master
[DEBUG] [新进程任务 开始:Qwen3-TTS]
[DEBUG] 任务参数:kwargs={'queue_tts_file': 'D:/pyVideoTrans/tmp/30644/99472cbaeb/queusk


.2585669.json', 'language': 'English', 'logs_file': 'D:/pyVideoTrans/tmp/30644/99472cbaeb/qwen3sk
.2585669.log', 'defaulelang': 'zh', 'is_cuda': True, 'model_name': '1.7B', 'roledict': {'No': 'No', 'clone': 'clone', 'nverguo.wav': {'ref_wav': 'nverguo.wav', 'ref_text': '你说四大皆空,却为何,紧闭双眼,若你睁开眼睛看看我,我不相信你,两眼空空。'}, 'Vivian': 'Vivian', 'Serena': 'Serena', 'Uncle_fu': 'Uncle_fu', 'Dylan': 'Dylan', 'Eric': 'Eric', 'Ryan': 'Ryan', 'Aiden': 'Aiden', 'Ono_anna': 'Ono_anna', 'Sohee': 'Sohee'}, 'prompt': '', 'device_index': 0}
[DEBUG] GPU进程池:max_workers=1

从日志看到,你在 Qwen3-TTS 的角色列表中同时包含了 clone(逐句克隆)和一个手动参考音频 nverguo.wav。这通常意味着你在主界面的“配音角色”下拉框中选择的是 nverguo.wav 而非 clone。如果选择了 nverguo.wav,软件会固定使用该文件作为参考音频来合成所有句子,不会逐句提取原音频对应的片段。这可能导致卡住,因为该参考音频的文本或时长可能不满足要求,或模型在加载该参考音频时出现异常。解决方案:1. 在主界面“配音角色”中,务必选择 clone 而不是 nverguo.wav 或其他具体文件名。2. 清理已生成(勾选主界面“清理已生成”),然后重新开始任务。3. 如果仍然卡住,等待时间可能因首次加载 1.7B 模型需要较长时间(网络下载,约数分钟)。请保持网络通畅(可能需要代理),并耐心等待。若超过10分钟无变化,可检查是否有杀毒软件拦截子进程。如果你确定已经选择了 clone,但日志中仍出现 nverguo.wav,请检查是否在“高级选项”中错误配置了参考音频路径。正常选择 clone 后,roledict 里不应包含具体的 wav 文件条目。

选的就是clone

你确认选择了 clone,但日志中依然出现了 nverguo.wav 参考音频条目。这说明软件内仍残留了手动参考音频的配置,导致即使选择 clone,模型仍然尝试加载 nverguo.wav 作为参考,从而卡住。请按以下步骤彻底清除参考音频残留:1. 删除 f5-tts 文件夹中的 nverguo.wav:进入软件根目录下的 f5-tts/ 文件夹,删除 nverguo.wav 文件(如果存在)。2. 清理 TTS 设置中的参考音频:打开菜单 → TTS设置 → Qwen-TTS(或 F5-TTS 设置面板),确认“参考音频”输入框为空,若填写了任何内容(如 nverguo.wav),请清空并保存。3. 清理已生成:勾选主界面的“清理已生成”选项,重新开始任务。4. 重启软件:完全关闭并重新启动 pyVideoTrans,确保配置生效。5. 再次确认角色选择:在主界面“配音角色”下拉框中,确认选中的是 clone(不是 nverguo.wav 或其他具体文件名)。如果以上步骤执行后日志中不再出现 nverguo.wav,则问题解决;若仍卡住,可能是 Qwen-TTS 本地模型本身存在不稳定,建议换用 F5-TTS(本地API)CosyVoice(本地API) 的 clone 角色(这些渠道对逐句克隆更稳定,且在 CUDA 环境下表现更好)。

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.

Related resource