#1790 TaskCfg(cache_folder='C:/SOFT/pyvideotrans/tmp/20604/speech2text', target_dir='c:/soft/pyvideotrans/output/recogn', remo

240e:3b7* Posted at: 3 days ago 👁29

语音识别阶段出错:[阿里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 231, in run
File "videotrans\recognition\_base.py", line 78, in run
File "videotrans\recognition\_funasr.py", line 57, 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 "C:\SOFT\pyvideotrans\_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='C:/SOFT/pyvideotrans/tmp/20604/speech2text', target_dir='c:/soft/pyvideotrans/output/recogn', remove_noise=False, is_separate=False, detect_language='zh-cn', subtitle_language=None, source_language=None, target_language=None, source_language_code=None, target_language_code=None, source_sub=None, target_sub='c:/soft/pyvideotrans/output/recogn/R_MIC_251126-061350.srt', source_wav=None, source_wav_output=None, target_wav=None, target_wav_output=None, subtitles=None, novoice_mp4=None, noextname='R_MIC_251126-061350', shibie_audio='C:/SOFT/pyvideotrans/tmp/20604/speech2text/R_MIC_251126-061350-1764909243.6723275.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='D:/recode/R_MIC_251126-061350.mp3', basename='R_MIC_251126-061350.mp3', ext='mp3', dirname='D:/recode', shound_del_name=None, uuid='f1edccf8d1', remove_silent_mid=False, align_sub_audio=True, enable_diariz=True, nums_diariz=0, rephrase=0)


=
system:Windows-10-10.0.22631-SP0
version:v3.87
frozen:True
language:zh
root_dir:C:/SOFT/pyvideotrans

7 Replies

这个错误是阿里 FunASR 本地语音识别模块在处理音频时出现的内部异常,具体是 torch.cat 函数期望接收张量(Tensor)但收到了字符串(str)。这通常与音频文件格式或预处理有关。

请按以下步骤尝试解决:

  1. 检查音频文件:确认您处理的 D:/recode/R_MIC_251126-061350.mp3 文件是有效的、未损坏的音频文件。可以尝试用其他播放器打开。
  2. 转换音频格式:FunASR 对某些 MP3 编码可能兼容性不佳。请使用工具箱中的“音视频合并/分离”功能,将您的 MP3 文件转换为标准的 WAV 格式(如 PCM 16bit, 44100Hz),然后使用转换后的 WAV 文件进行识别。
  3. 更换识别模型:在语音识别设置中,暂时将模型从 paraformer-zh 切换到 faster-whisper 或其他模型,看是否能正常识别,以排除文件本身的问题。
  4. 清理缓存并重试:在主界面勾选“清理已生成”,然后重新处理。
  5. 检查 FunASR 模型文件:如果之前下载的模型文件不完整或损坏,也可能导致此错误。可以尝试在软件设置中删除并重新下载 FunASR 模型。

如果以上步骤均无效,请提供 C:/SOFT/pyvideotrans/logs/ 目录下最新的日志文件,以便进一步分析。


Application started at 2025-12-05 11:52:28

2025-12-05 11:52:36,179 - INFO - 返回缓存的编解码器 Windows-264: h264_nvenc
self.proxy_str='http://127.0.0.1:7889',self.uuid=None
进入执行分离阶段 trk.shoud_recogn=True
2025-12-05 11:54:21,571 - INFO - 返回缓存的编解码器 Windows-264: h264_nvenc
2025-12-05 11:54:21,571 - INFO - 检测到硬件编码器 h264_nvenc,正在调整参数...
应该送入语音识别队列 trk.shoud_recogn=True
进入执行语音识别阶段
self.proxy_str='http://127.0.0.1:7889',self.uuid='c29daa756b'
funasr version: 1.2.6.
Downloading Model from https://www.modelscope.cn to directory: C:/SOFT/pyvideotrans/models\models\iic\speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch
2025-12-05 11:56:57,480 - modelscope - INFO - Use user-specified model revision: v2.0.5
Downloading Model from https://www.modelscope.cn to directory: C:/SOFT/pyvideotrans/models\models\iic\speech_fsmn_vad_zh-cn-16k-common-pytorch
2025-12-05 11:57:04,632 - modelscope - INFO - Use user-specified model revision: v2.0.4
Downloading Model from https:/
......
12:55:27,790 - 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 231, in run
File "videotrans\recognition\_base.py", line 78, in run
File "videotrans\recognition\_funasr.py", line 57, 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 "C:\SOFT\pyvideotrans\_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
2025-12-05 12:55:27,790 - 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 231, in run
File "videotrans\recognition\_base.py", line 78, in run
File "videotrans\recognition\_funasr.py", line 57, 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 "C:\SOFT\pyvideotrans\_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 231, in run
File "videotrans\recognition\_base.py", line 78, in run
File "videotrans\recognition\_funasr.py", line 57, 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 "C:\SOFT\pyvideotrans\_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

从日志看,FunASR 模型下载成功,但推理时出现内部张量类型错误。这可能是 FunASR 版本兼容性问题或特定音频格式导致的。请按以下步骤解决:

  1. 首要尝试:转换音频格式
    这是最可能的原因。请使用软件内置工具转换您的 MP3 文件:

    • 在软件主界面,点击菜单栏的 “工具箱”
    • 选择 “音视频合并/分离”
    • 将您的 D:/recode/R_MIC_251126-061350.mp3 文件拖入,输出格式选择 WAV,采样率保持默认。
    • 转换完成后,使用生成的 WAV 文件进行语音识别。
  2. 备用方案:切换识别引擎

    • 在主界面“语音识别”区域,将识别引擎从 “阿里FunASR中文(本地)” 临时切换为 “faster-whisper(本地)”
    • 模型选择 mediumlarge-v3
    • 重新处理文件。如果 faster-whisper 能正常工作,则问题可定位到 FunASR 与您特定音频文件的兼容性上。
  3. 检查与重置 FunASR 环境(如果上述无效)

    • 关闭软件。
    • 删除 FunASR 模型缓存目录:C:/SOFT/pyvideotrans/models\models\iic\。删除前请确认路径。
    • 重新启动软件,再次尝试使用 FunASR。软件会自动重新下载模型。
  4. 报告问题
    如果以上所有方法均失败,且您确认音频文件是标准格式(建议提供文件详细信息,如时长、码率),则可能是软件集成的 FunASR 版本存在特定 Bug。请将完整的日志文件(位于 C:/SOFT/pyvideotrans/logs/)和您的音频文件样本提供给开发者进行排查。

使用pyVideoTrans 3.85版本时没有出现过此类问题

您提到在 v3.85 版本中正常,v3.87 版本出现此问题,这强烈指向了软件版本升级导致的兼容性问题,很可能是内置的 FunASR 库版本更新后引入了 Bug。请按以下步骤解决:回退到稳定版本(推荐)由于 v3.85 对您稳定,最直接的解决方案是暂时回退。请从官网下载 v3.85 的预打包版,在另一个目录解压使用。注意:不同版本的模型缓存可能不通用,如果回退后首次使用需要重新下载模型,属正常现象。在 v3.87 中尝试规避措施如果希望继续使用 v3.87,请尝试:严格按之前建议,使用“工具箱 -> 音视频合并/分离”功能将您的 MP3 文件转换为 WAV 格式(PCM 编码),然后用这个 WAV 文件进行识别。在“语音识别”设置中,暂时取消勾选“启用VAD(语音活动检测)”。因为错误堆栈指向 inference_with_vad 函数,禁用 VAD 可能绕过问题。如果问题依旧,则基本确认是 v3.87 内置的 FunASR (1.2.6) 版本存在兼容性 Bug。向开发者反馈您可以整理信息向开发者反馈:说明从 v3.85 升级到 v3.87 后,使用相同的音频文件,FunASR 出现 “TypeError: expected Tensor as element 1 in argument 0, but got str” 错误。提供您尝试过的步骤(转换格式、禁用 VAD)。附上完整的错误日志(如您已提供)和音频文件信息(格式、时长)。这有助于开发者在后续版本中修复。

我试了,一次处理一个文件没有问题,一次批量处理多个音频文件就有问题。

问题定位:这是 v3.87 版本中阿里 FunASR 模块在处理批量音频文件时出现的并发或缓存冲突 Bug。当批量处理时,多个识别任务可能共享或错误传递了缓存数据,导致 audio_sample_list[0] 变成了字符串而非张量。

解决方案:

  1. 立即解决(推荐):在软件主界面,不要一次性拖入多个文件进行批量处理。改为逐个文件添加和处理。这是目前最稳定的变通方法。
  2. 高级设置调整:如果必须批量处理,请尝试以下设置:

    • 在菜单栏选择 工具 -> 高级选项
    • 在“通用设置”区域,勾选“批量翻译时强制串行”。这会将并发任务改为逐个顺序执行,可能避免并发冲突。
    • 在“Faster/OpenAI/Whisper 语音识别微调”区域,尝试取消勾选“启用上下文感知”(如果该选项对 FunASR 有效)。
  3. 反馈与等待修复:鉴于 v3.85 正常而 v3.87 出现此问题,这属于新版本的引入 Bug。请将以下信息反馈给开发者,以便尽快修复:

    • 版本差异:v3.85 正常,v3.87 批量处理出错。
    • 错误现象:单文件正常,多文件批量处理时出现 TypeError: expected Tensor as element 1 in argument 0, but got str
    • 错误日志:您提供的完整错误堆栈。
    • 操作步骤:您已尝试过转换格式、单文件处理正常。

总结:目前请优先使用单文件顺序处理或启用强制串行选项来规避此 Bug。该问题需要开发者在新版本中修复 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