#8368 语音识别阶段出错[Huggingface_ASR(内置)] The expanded size of the tensor (3000) must match the existing size (6371) at non-singleto

2408**aeda Posted at: 1 hour ago

语音识别阶段出错[Huggingface_ASR(内置)] The expanded size of the tensor (3000) must match the existing size (6371) at non-singleton dimension 1. Target sizes: [128, 3000]. Tensor sizes: [128, 6371]:Traceback (most recent call last):
File "videotrans\process\stt_pipe.py", line 61, in pipe_asr
File "D:\Video Restoration\pyvideotrans-v4.16\_internal\transformers\pipelines\automatic_speech_recognition.py", line 247, in call

return super().__call__(inputs, **kwargs)

File "D:\Video Restoration\pyvideotrans-v4.16\_internal\transformers\pipelines\base.py", line 1257, in call

outputs = list(final_iterator)

File "D:\Video Restoration\pyvideotrans-v4.16\_internal\transformers\pipelines\pt_utils.py", line 126, in next

item = next(self.iterator)

File "D:\Video Restoration\pyvideotrans-v4.16\_internal\transformers\pipelines\pt_utils.py", line 271, in next

processed = self.infer(next(self.iterator), **self.params)

File "D:\Video Restoration\pyvideotrans-v
......
"D:\Video Restoration\pyvideotrans-v4.16\_internal\transformers\pipelines\pt_utils.py", line 126, in next

item = next(self.iterator)

File "D:\Video Restoration\pyvideotrans-v4.16\_internal\transformers\pipelines\pt_utils.py", line 271, in next

processed = self.infer(next(self.iterator), **self.params)

File "D:\Video Restoration\pyvideotrans-v4.16\_internal\torch\utils\data\dataloader.py", line 733, in next

data = self._next_data()

File "D:\Video Restoration\pyvideotrans-v4.16\_internal\torch\utils\data\dataloader.py", line 789, in _next_data

data = self._dataset_fetcher.fetch(index)  # may raise StopIteration

File "D:\Video Restoration\pyvideotrans-v4.16\_internal\torch\utils\data\_utils\fetch.py", line 43, in fetch

return self.collate_fn(data)

File "D:\Video Restoration\pyvideotrans-v4.16\_internal\transformers\pipelines\base.py", line 174, in inner

padded[key] = _pad(items, key, _padding_value, padding_side)

File "D:\Video Restoration\pyvideotrans-v4.16\_internal\transformers\pipelines\base.py", line 110, in _pad

tensor[i, : len(item[key][0])] = item[key][0]

RuntimeError: The expanded size of the tensor (3000) must match the existing size (6371) at non-singleton dimension 1. Target sizes: [128, 3000]. Tensor sizes: [128, 6371]
trk=[SpeechToText]: uuid='ff66e05a95', proxy_str=None, cfg=[TaskCfgSTT]
原始输入文件名: D:/Video Restoration/视频/修复/PRED-882.restored.mp4,
输出结果保存到文件夹: D:/Video Restoration/win-视频翻译pyvideotrans-v4.16/output/recogn,
临时文件夹: D:/Video Restoration/pyvideotrans-v4.16/tmp/28704/ff66e05a95
已启用CUDA加速
未选 降噪
语音识别:Huggingface_ASR(内置), kotoba-tech/kotoba-whisper-v2.0 LLM纠错
发音语言:ja
未选 降噪, precent=1, hasend=False, should_recogn=True, should_trans=False, should_dubbing=False, should_hebing=False, out_format='srt', copysrt_rawvideo=False, spk_insert=False


=
system:Windows-10-10.0.26300-SP0
version:v4.16
frozen:True
language:zh_CN
root_dir:D:/Video Restoration/pyvideotrans-v4.16

9 Replies

#1 DeepSeek reply at 1 hour ago

根本原因是:该报错发生在 transformers 的 ASR pipeline 批处理补齐阶段(base.py:_pad)。同一批次内参与补齐的音频特征长度不一致(目标补齐长度为 3000,实际切片长度为 6371),导致 kotoba-whisper-v2.0 在 Huggingface_ASR 渠道下无法正常完成批量推理。这与模型文件缺失无关,属于该内置渠道对当前音频切片长度的处理问题。知识库中暂无对此具体报错的既定修复参数。

建议按以下顺序处理:

  1. 更换日语识别渠道(最快规避,推荐)
    在 语音识别(STT Service) 下拉中改用以下任一渠道,模型选 large-v3:

    • openai-whisper(内置)(知识库中日语首选方案)
    • faster-whisper(内置)
    • Nemotron-3.5-asr-0.6b(内置)(支持日语)
  2. 若必须使用 Huggingface_ASR
    将模型从 kotoba-tech/kotoba-whisper-v2.0 换为 openai/whisper-large-v3 或 nvidia/nemotron-3.5-asr-streaming-0.6b(两者均支持 ja),再执行一次。
  3. 修正安装路径
    当前软件位于 D:\Video Restoration\pyvideotrans-v4.16,路径中含空格。请整体移动到仅含英文、数字的浅层目录(如 D:\pyvideotrans)后再测试,避免底层命令解析异常。
  4. 重试前勾选 清理已生成(Clear Output),避免复用上一轮的中间文件与切片缓存。
  5. 若按上述操作后仍在 Huggingface_ASR 渠道复现同一报错,请提供 软件目录/logs/ 下最新日志文件底部约 30 行内容,以便进一步定位。

请查阅相关文档:

#2 2408**aeda reply at 1 hour ago

2小时日语视频 推荐用什么 语音识别 识别模型 翻译渠道

#3 DeepSeek reply at 1 hour ago

2 小时日语长视频的核心矛盾是耗时(识别 + 翻译 + 配音都按小时级累积),配置应以“质量达标且不中途崩”为原则。

一、语音识别(STT Service)

优先级渠道模型说明
首选openai-whisper(内置)large-v3知识库日语首选,准确度高;有 N 卡必须勾选启用CUDA加速
备选(更快)faster-whisper(内置)large-v3-turbo速度与质量兼顾,2 小时视频耗时明显低于 large-v3
备选Nemotron-3.5-asr-0.6b(内置)nemotron-3.5-asr-streaming-0.6b官方支持日语,模型小、速度快,CUDA 可用时优先走 GPU
收费OpenAI 语音识别 API / Gemini—速度最快、质量优秀,但 2 小时音频按量计费较高

注意:

  1. 日语请明确把发音语言设为 日语(ja),不要用自动检测(长视频易出现语言代码漂移,中断后续流水线)。
  2. 勿再选用 kotoba-whisper-v2.0(你上一轮的报错来源,该模型在 Huggingface_ASR 渠道批处理补齐时不稳定)。
  3. 依次进入菜单-工具-高级选项-语音识别参数:计算数据类型设为 float16(GPU)或 int8(显存紧张);beam_size/best_of 保持默认,显存不足时降到 1。

二、字幕翻译(TranslateSrt)

优先级渠道说明
首选DeepSeek价格极低、日语→中文质量好,2 小时长文本成本可控
备选Gemini / OpenAI ChatGPT质量更佳,成本更高
免费Google(免费) / 微软(免费)免费但有限流,长视频易中断,且小语种覆盖有限

关键设置(提升长视频翻译质量与稳定性):

  1. 勾选发送完整字幕。
  2. 依次进入菜单-工具-高级选项-字幕翻译,将AI翻译渠道每批字幕行数设为 100 左右(模型上下文足够时可更大);若出现Could not parse response content截断报错,降到 20~30 或调大该渠道 max tokens。
  3. 依次进入菜单-工具-高级选项-字幕翻译,勾选AI翻译附带所有字幕做参考(翻译质量最佳,但返回较慢,需旗舰级模型)。
  4. 可选:勾选LLM纠错(默认 DeepSeek 渠道),修正日语识别的错字与断句。

三、长视频附加建议

  1. 2 小时素材建议先勾选分离人声背景声(或降噪),显著提升日语识别准确率。
  2. 数据量大,务必勾选完成后关机(Auto Shutdown)。
  3. 可先截取 2~3 分钟片段跑通全流程,确认识别与翻译效果后再跑完整 2 小时,避免中途返工浪费数小时。
  4. 留意磁盘空间:tmp/ 临时切片在长视频下占用较大,中途报错后需手动清空。

请查阅相关文档:

#4 2408**aeda reply at 1 hour ago

如何把长视频分段

#5 DeepSeek reply at 1 hour ago

知识库中,pyVideoTrans 没有内置“按时间/大小把长视频切成多段”的功能。软件内部虽然有 VAD 切分,但它只用于语音识别阶段的音频分段,不对原始视频做物理分割,且参数不可用于导出分段视频。要切分,需用外部工具先分段,再用软件批量翻译。方案一(推荐):用软件自带 ffmpeg 无损分段。Windows 预打包版的 ffmpeg 目录内已含 ffmpeg.exe。1. 打开命令提示符,进入视频所在目录。2. 执行以下命令(每 30 分钟切一段,-c copy 不重编码、秒级完成):ffmpeg -i "input.mp4" -c copy -f segment -segment_time 1800 -reset_timestamps 1 "out_%03d.mp4"输出 out_000.mp4、out_001.mp4……3. 注意:-c copy 按关键帧切分,实际切点可能有几秒偏差。若需精确到秒,去掉 -c copy 并加 -force_key_frames "expr:gte(t,n_forced*1800)"(会重新编码,较慢)。也可以用 LosslessCut、剪映、MKVToolNix 等工具手工切分。方案二:用软件的“按字幕剪辑视频”。若已有该视频的 SRT 字幕,可用 菜单-工具/选项-按字幕剪辑视频 按字幕段落切出片段,但这是按句切,不适合按时长均分。分段后的批量翻译在 翻译视频 主界面点 选择音频或视频 后,按住 Ctrl 多选全部片段(或勾选 文件夹 批量处理整个目录),一次性提交。要点:- 各片段独立识别、翻译、配音、合成,输出到各自结果文件夹,互不影响;- 片段文件名建议只用英文、数字、下划线,路径不要带空格和特殊符号;- 勾选 完成后关机,适合长时间批量任务;- 各段视频之间可能有几秒静音或截断,属正常现象。合并译后视频若需把各段译后视频拼回一个文件,可用 ffmpeg 拼接:先写一个列表文件 list.txt,每行 file 'out_000.mp4',再执行 ffmpeg -f concat -safe 0 -i list.txt -c copy final.mp4。也可用 菜单-工具/选项-媒体合并(Merge V/A/Srt) 处理单个片段。切分点建议切点尽量落在静音处,避免把一句话截成两半影响识别。可先切一段 2~3 分钟的做全流程测试,确认日语识别与翻译效果后再跑全部。请查阅相关文档:使用文档导入本地字幕或人声调节VAD精确控制语音识别高级选项

#6 2408**aeda reply at 1 hour ago

选择VAD 选什么?

#7 DeepSeek reply at 1 hour ago

知识库中未收录“选择VAD(Select VAD)”下拉选项中各模型的具体名称和差异对比,因此无法给出各选项准确的优劣结论,也无法确认某个选项在某类音频下必然更好。

务实建议:

  1. 保持默认值,不要更改。默认 VAD 已能满足绝大多数场景,v4.12 起官方也优化过 VAD 切分算法。随意更换 VAD 反而可能引起切分异常。
  2. 日语长视频如果你觉得断句不理想,应优先调整这三个时长参数,而不是换 VAD:菜单-工具-高级选项-语音识别参数

    • 最长语音持续(秒):默认 5,想字幕更短可设 3~4
    • 最短语音持续(毫秒):默认 3000,想让短句独立可降到 1000~1500(但若后续用 clone 配音,必须保持 ≥3000)
    • 静音分割持续(毫秒):默认 600,想断句更灵敏调到 200~400,想句子更完整调到 800+
    • 注意:最长语音持续(秒)×1000 必须大于最短语音持续(毫秒)
  3. 若某段音频有大量背景音乐或噪声导致 VAD 误判,改用勾选分离人声背景声或降噪,效果比更换 VAD 更直接。

如果你在软件下拉框里看到的选项与识别效果差异明显,可把该下拉框的实际选项名和遇到的问题描述出来,以便进一步判断;或提供 logs/ 下最新日志底部约 30 行。

请查阅相关文档:

#8 2408**aeda reply at 59 minutes ago

VAD
silero和tenvad 区别?

#9 DeepSeek reply at 59 minutes ago

知识库中未收录 silero 与 tenvad 这两个 VAD 选项的具体差异、各自算法特性或适用场景,因此无法给出准确对比结论,也无法断言哪一个在日语长视频场景下更优。在无法依据官方资料判断的情况下,不建议凭猜测更换。可行的判断方法:

保持默认 VAD,用同一段 2~3 分钟的日语素材做 A/B 测试

  1. 先用默认 VAD 跑一次语音转录,记下字幕条数、断句是否合理、有无漏句或切碎。
  2. 再切换为另一个 VAD,其余参数(最长语音持续、最短语音持续、静音分割持续)保持完全一致,再跑一次。
  3. 勾选 清理已生成 后再重试,避免复用上一轮缓存切片,否则对比无效。
  4. 对比两份 SRT 的断句质量,选效果更好的那个。

对比时的变量控制要点:

  • 两次测试必须用同一个视频文件、同样的发音语言(ja)、同样的识别渠道和模型;
  • 不要同时改动切分时长参数,否则无法判断差异来自 VAD 还是来自参数。

如果你的目的是改善日语长视频的断句,优先调整以下参数通常比更换 VAD 更直接有效:

  • 菜单-工具-高级选项-语音识别参数
  • 静音分割持续(毫秒):默认 600,断句过碎则调大到 800+,切不开则调小到 200~400
  • 最短语音持续(毫秒):默认 3000
  • 最长语音持续(秒):默认 5

若对比后仍无法判断,可将两次生成的 SRT 片段(各取前 20 行左右)和所用 VAD 名称发来,便于进一步分析。

请查阅相关文档:

Thinking...
Post Your Reply
If you have more than 50 messages, you will no longer receive an automatic reply. Please ask a new question!
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

Related resource