#2611 处理2个以上文件,阿里funasr就报错,一个没问题

103.196* Posted at: 14 hours ago 👁17

处理2个以上文件,阿里funasr就报错,一个没问题

7 Replies

根据您的描述,这很可能是因为批量处理时,阿里FunASR模型在内存或显存中重复加载导致冲突。请按以下步骤解决:

  1. 立即解决方案

    • 在软件主界面,勾选 “清理已生成” 选项。
    • 在菜单栏选择 工具 -> 选项 -> 高级选项
    • 在“通用设置”区域,找到并勾选 “批量翻译时强制串行”
    • 点击“保存”后,重新尝试批量处理。
  2. 根本性解决方案(推荐)

    • 停止所有正在运行的pyVideoTrans进程
    • 导航到软件安装目录下的 models 文件夹。
    • 找到并删除 funasr 开头的文件夹(例如 funasr_models)。
    • 重新启动软件,处理第一个视频时,软件会自动重新下载FunASR模型。此后,在“强制串行”模式下,多个视频将能依次正常处理。

原理说明:阿里FunASR模型在初始化后,其进程或内存状态可能未完全释放。当并行处理下一个文件时,会导致冲突。“强制串行”模式让文件逐个处理,避免了并发问题;而清理模型目录可以重置一个干净的初始状态。

如果以上方法无效,请提供具体的错误日志(位于软件目录下的 logs 文件夹中),以便进一步分析。

请查看更多参考文档:

我不是批量,是用阿里funasr来进行语音识别

您遇到的问题是使用阿里FunASR进行语音识别时,处理单个文件正常,但连续处理第二个文件就报错。这通常是FunASR模型进程或内存未正确释放导致的。

请按以下步骤解决:

  1. 重启软件:在尝试处理第二个文件前,请先完全关闭并重新启动pyVideoTrans软件。
  2. 启用“清理已生成”:在主界面处理每个文件时,务必勾选“清理已生成”。这会强制清理上一个任务留下的临时文件,有助于重置状态。
  3. (高级设置) 修改识别模式:在菜单栏选择 工具 -> 选项 -> 高级选项

    • 在“Faster/OpenAI/Whisper语音识别”区域,找到“强制批量推理”选项。
    • 尝试勾选或取消勾选此选项,然后保存并重试。这可能会改变FunASR的调用方式。
  4. 终极方案:手动重置模型

    • 关闭所有pyVideoTrans进程。
    • 进入软件安装目录下的 models 文件夹。
    • 删除名为 funasr_models 的文件夹。
    • 重新启动软件,它会自动重新下载模型。之后再次尝试连续处理。

如果以上步骤均无效,请提供具体的错误信息或日志文件(位于软件目录下的 logs 文件夹中),这对于定位问题至关重要。

请查看更多参考文档:


Application started at 2026-01-12 19:36:34

Set default params
Bind signal...
2026-01-12 19:36:41,024 - INFO - 返回缓存的编解码器 Windows-264: libx264
2026-01-12 19:36:41,026 - INFO - 返回缓存的编解码器 Windows-265: libx265
Load torch...
end
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
self.proxy_str='http://127.0.0.1:10020',self.uuid=None
进入执行分离阶段 trk.shoud_recogn=True
2026-01-12 19:56:03,552 - INFO - cmd=['ffmpeg', '-hide_banner', '-ignore_unknown', '-threads', '0', '-y', '-i', 'E:/Downloads/10.mp4', '-ac', '1', '-ar', '16000', '-c
......
File "videotrans\task\job.py", line 113, in run
File "videotrans\task\_speech2text.py", line 146, in recogn
File "videotrans\recognition\__init__.py", line 227, in run
File "videotrans\recognition\_base.py", line 80, in run
File "videotrans\recognition\_funasr.py", line 60, in _exec
File "funasr\auto\auto_model.py", line 306, in generate

return self.inference_with_vad(input, input_len=input_len, **cfg)

File "funasr\auto\auto_model.py", line 383, in inference_with_vad

res = self.inference(

File "funasr\auto\auto_model.py", line 345, in inference

res = model.inference(**batch, **kwargs)

File "D:\win-videotrans-v3.67-tiny\_internal\funasr\models\fsmn_vad_streaming\model.py", line 690, in inference

audio_sample = torch.cat((cache["prev_samples"], audio_sample_list[0]))

TypeError: expected Tensor as element 1 in argument 0, but got str
2026-01-12 19:58:58,128 - ERROR - expected Tensor as element 1 in argument 0, but got str
Traceback (most recent call last):
File "videotrans\task\job.py", line 113, in run
File "videotrans\task\_speech2text.py", line 146, in recogn
File "videotrans\recognition\__init__.py", line 227, in run
File "videotrans\recognition\_base.py", line 80, in run
File "videotrans\recognition\_funasr.py", line 60, in _exec
File "funasr\auto\auto_model.py", line 306, in generate

return self.inference_with_vad(input, input_len=input_len, **cfg)

File "funasr\auto\auto_model.py", line 383, in inference_with_vad

res = self.inference(

File "funasr\auto\auto_model.py", line 345, in inference

res = model.inference(**batch, **kwargs)

File "D:\win-videotrans-v3.67-tiny\_internal\funasr\models\fsmn_vad_streaming\model.py", line 690, in inference

audio_sample = torch.cat((cache["prev_samples"], audio_sample_list[0]))

TypeError: expected Tensor as element 1 in argument 0, but got str
ERROR:VideoTrans:expected Tensor as element 1 in argument 0, but got str
Traceback (most recent call last):
File "videotrans\task\job.py", line 113, in run
File "videotrans\task\_speech2text.py", line 146, in recogn
File "videotrans\recognition\__init__.py", line 227, in run
File "videotrans\recognition\_base.py", line 80, in run
File "videotrans\recognition\_funasr.py", line 60, in _exec
File "funasr\auto\auto_model.py", line 306, in generate

return self.inference_with_vad(input, input_len=input_len, **cfg)

File "funasr\auto\auto_model.py", line 383, in inference_with_vad

res = self.inference(

File "funasr\auto\auto_model.py", line 345, in inference

res = model.inference(**batch, **kwargs)

File "D:\win-videotrans-v3.67-tiny\_internal\funasr\models\fsmn_vad_streaming\model.py", line 690, in inference

audio_sample = torch.cat((cache["prev_samples"], audio_sample_list[0]))

TypeError: expected Tensor as element 1 in argument 0, but got str
进入执行语音识别阶段
正在等待线程 SpeechToText 结束...
Successfully killed ffmpeg processes using taskkill

根据您提供的详细错误日志,问题已经非常明确。这是一个FunASR模型内部缓存(cache["prev_samples"])状态错误,在处理完第一个文件后,缓存中残留了错误的数据类型(字符串 str),导致处理第二个文件时 torch.cat 函数期望的是张量(Tensor)而失败。

核心解决方案是强制重置FunASR模型状态。请按以下步骤操作:

  1. 立即停止并重启软件:关闭所有pyVideoTrans进程。
  2. 删除模型缓存:进入您的软件安装目录 D:\win-videotrans-v3.67-tiny\_internal\,找到并删除 models 文件夹下的 funasr_models 文件夹。
  3. 启用“清理已生成”:重新启动软件后,在处理每一个文件时,务必在主界面勾选“清理已生成”选项。这是关键步骤,它会清理任务间的临时状态。
  4. (可选)修改高级设置:如果问题依然出现,请尝试:

    • 进入 工具 -> 选项 -> 高级选项
    • 在“通用设置”区域,勾选“批量翻译时强制串行”。即使您不是批量处理,此设置也会强制以更安全的方式初始化模型。
    • 保存设置。

如果以上步骤无效,请尝试临时解决方案
在“语音识别”设置中,将识别模式从“整体识别”切换为“批量推理”。这两种模式调用FunASR的底层方式不同,“批量推理”可能不会触发这个特定的缓存错误。

问题根源:此错误是FunASR库在流式VAD模式下内部状态管理的一个已知问题。pyVideoTrans的开发者已在后续版本中进行了优化。如果您使用的是较旧版本(如v3.67),建议升级到最新版本以获得更稳定的体验。

请查看更多参考文档:

语音识别阶段出错:[阿里FunASR中文(本地)] 程序内部错误:expected Tensor as element 1 in argument 0, but got str:
Traceback (most recent call last):
File "videotrans\task\job.py", line 113, in run
File "videotrans\task\_speech2text.py", line 146, in recogn
File "videotrans\recognition\__init__.py", line 227, in run
File "videotrans\recognition\_base.py", line 80, in run
File "videotrans\recognition\_funasr.py", line 60, in _exec
File "funasr\auto\auto_model.py", line 306, in generate

return self.inference_with_vad(input, input_len=input_len, **cfg)

File "funasr\auto\auto_model.py", line 383, in inference_with_vad

res = self.inference(

File "funasr\auto\auto_model.py", line 345, in inference

res = model.inference(**batch, **kwargs)

File "D:\win-videotrans-v3.67-tiny\_internal\funasr\models\fsmn_vad_streaming\model.py", line 690, in inference

audio_sample = torch.cat((cache["prev_samples"], audio_sample_list[0]))

TypeError: expected Tensor as element 1 in argument 0, but got str

TaskCfg(cache_folder='D:/win-videotrans-v3.67-tiny/tmp/27224/speech2text', target_dir='e:/doc/pyvideo/recogn', remove_noise=False, is_separate=False, detect_language='auto', subtitle_language=None, source_language=None, target_language=None, source_language_code=None, target_language_code=None, source_sub=None, target_sub='e:/doc/pyvideo/recogn/16.srt', source_wav=None, source_wav_output=None, target_wav=None, target_wav_output=None, subtitles=None, novoice_mp4=None, noextname='16', shibie_audio='D:/win-videotrans-v3.67-tiny/tmp/27224/speech2text/16-1768222803.335135.wav', targetdir_mp4=None, instrument=None, vocal=None, back_audio=None, background_music=None, app_mode='biaozhun', subtitle_type=0, volume='+0%', pitch='+0Hz', voice_rate='+0%', voice_role=None, copysrt_rawvideo=False, clear_cache=False, translate_type=None, tts_type=None, recogn_type=2, model_name='paraformer-zh', split_type=0, voice_autorate=False, video_autorate=False, cuda=True, name='E:/Downloads/16.mp4', basename='16.mp4', ext='mp4', dirname='E:/Downloads', shound_del_name=None, uuid='b5a6726352', remove_silent_mid=False, align_sub_audio=True, enable_diariz=False, nums_diariz=0, rephrase=0, only_out_mp4=False)

system:Windows-10-10.0.19045-SP0
version:v3.90
frozen:True
language:zh
root_dir:D:/win-videotrans-v3.67-tiny

根据您提供的完整错误日志,问题根源与之前一致,是FunASR模型内部缓存状态错误。您使用的是v3.90版本,但错误依然存在。请按以下步骤彻底解决:强制重置FunASR模型状态:关闭所有pyVideoTrans进程。进入软件安装目录 D:\win-videotrans-v3.67-tiny。删除 models 文件夹下的 funasr_models 文件夹。重新启动软件,处理第一个文件时,软件会自动重新下载模型。关键操作:启用“清理已生成”:重新启动软件后,在处理每一个文件时,务必在主界面勾选“清理已生成”选项。这是防止缓存状态残留的关键。修改识别模式(临时方案):如果上述步骤后,处理第二个文件仍报错,请临时更改识别模式:在“语音识别”设置中,将“识别模式”从“整体识别”切换为“批量推理”。这两种模式调用FunASR的底层方式不同,“批量推理”可能不会触发这个特定的缓存错误。问题处理完毕后,可以切换回“整体识别”。检查高级设置:进入 工具 -> 选项 -> 高级选项。在“通用设置”区域,确认已勾选“批量翻译时强制串行”。保存设置。如果以上所有方法均无效,说明此问题在v3.90版本中可能仍存在。您可以尝试以下终极方案:降级FunASR库版本(仅限源码部署用户),或等待软件后续更新。作为临时替代方案,您可以考虑使用其他语音识别引擎,如 faster-whisper(本地) 或 阿里FunASR(在线API),以避免这个本地模型的状态错误。请查看更多参考文档:阿里FunASR中文识别遇到报错如何处理

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