#1768 TaskCfg(cache_folder='E:/Download/win-pyvideotrans-v3.87/tmp/10972/79a19b5132', target_dir='E:/Download/_video_out/test-

175.29* Posted at: 4 days ago 👁32

预处理阶段出错:程序内部错误:'float' object has no attribute 'split':
Traceback (most recent call last):
File "videotrans\task\job.py", line 67, in run
File "videotrans\task\trans_create.py", line 198, in prepare
File "videotrans\util\help_ffmpeg.py", line 576, in get_video_info
AttributeError: 'float' object has no attribute 'split'

TaskCfg(cache_folder='E:/Download/win-pyvideotrans-v3.87/tmp/10972/79a19b5132', target_dir='E:/Download/_video_out/test-mp3', remove_noise=False, is_separate=False, detect_language='ja', subtitle_language=None, source_language='日语', target_language='简体中文', source_language_code='ja', target_language_code='zh-cn', source_sub='E:/Download/_video_out/test-mp3/ja.srt', target_sub='E:/Download/_video_out/test-mp3/zh-cn.srt', source_wav='E:/Download/win-pyvideotrans-v3.87/tmp/10972/79a19b5132/ja.wav', source_wav_output='E:/Download/_video_out/test-mp3/ja.m4a', target_wav='E:/Download/win-pyvideotrans-v3.87/tmp/10972/79a19b5132/target.wav', target_wav_output='E:/Download/_video_out/test-mp3/zh-cn.m4a', subtitles='', novoice_mp4='E:/Download/win-pyvideotrans-v3.87/tmp/10972/79a19b5132/novoice.mp4', noextname='test', shibie_audio=None, targetdir_mp4='E:/Download/_video_out/test-mp3/test.mp4', instrument=None, vocal=None, back_audio='', background_music=None, app_mode='tiqu', subtitle_type=0, volume='+0%', pitch='+0Hz', voice_rate='+0%', voice_role='No', copysrt_rawvideo=False, clear_cache=False, translate_type=1, tts_type=0, recogn_type=1, model_name='tiny', split_type=0, voice_autorate=False, video_autorate=False, cuda=True, name='E:/Download/test.mp3', basename='test.mp3', ext='mp3', dirname='E:/Download', shound_del_name=None, uuid='79a19b5132', remove_silent_mid=False, align_sub_audio=True, enable_diariz=False, nums_diariz=0, rephrase=2)


=
system:Windows-10-10.0.26200-SP0
version:v3.87
frozen:True
language:zh
root_dir:E:/Download/win-pyvideotrans-v3.87

9 Replies

这个错误是由于 ffmpeg 在分析您的音频文件 test.mp3 时返回了异常信息,导致程序内部解析失败。具体是 get_video_info 函数尝试对一个 float 类型的数据执行 .split() 操作。

核心解决方法:检查并修复您的输入音频文件。

请按以下步骤操作:

  1. 验证文件完整性:使用其他播放器(如 VLC、PotPlayer)打开 E:/Download/test.mp3,确认文件能正常播放且包含人声。
  2. 重新编码音频文件

    • 使用格式工厂、Audacity 或 FFmpeg 命令行工具,将您的 MP3 文件重新编码并输出为一个新的 MP3 或 WAV 文件
    • FFmpeg 命令行示例(在文件所在目录打开命令行):

      ffmpeg -i "test.mp3" -c:a libmp3lame -b:a 192k "test_fixed.mp3"
  3. 使用修复后的文件:在 pyVideoTrans 中,选择新生成的 test_fixed.mp3 文件进行处理。
  4. 检查文件路径:确保文件路径(E:/Download/)不包含特殊字符或过长的文件名。

如果问题依旧,请提供 E:/Download/win-pyvideotrans-v3.87/logs/ 目录下最新的日志文件,以便进一步分析。


Application started at 2025-12-04 22:28:11

2025-12-04 22:28:15,807 - INFO - 返回缓存的编解码器 Windows-264: h264_nvenc
self.proxy_str=None,self.uuid=None
2025-12-04 22:28:32,304 - INFO - 最终配置信息:self.cfg=TaskCfg(cache_folder='E:/Software/Tools/Portable_Software/win-pyvideotrans-v3.87/tmp/20628/28c3773f2a', target_dir='E:/Download/_video_out/test_fixed-mp3', remove_noise=False, is_separate=False, detect_language='ja', subtitle_language=None, source_language='日语', target_language='简体中文', source_language_code='ja', target_language_code='zh-cn', source_sub='E:/Download/_video_out/test_fixed-mp3/ja.srt', target_sub='E:/Download/_video_out/test_fixed-mp3/zh-cn.srt', source_wav='E:/Software/Tools/Portable_Software/win-pyvideotrans-v3.87/tmp/20628/28c3773f2a/ja.wav', source_wav_output='E:/Download/_video_out/test_fixed-mp3/ja.m4a', target_wav='E:/Software/Tools/Portable_Software/win-pyvideotrans-v3.87/tmp/20628/28c3773f2a/target.wav', target_wav_output='E:/Download/_video_out/test_fixed-mp3/zh-cn.m4a', subtitles='', novoice_mp4='E:/Software/Tools/Portable_Software/win-pyvideotrans-v3.87/tmp/20628/28c3773f2a/novoice.mp4', noextname='test_fixed', shibie_audio=None, targetdir_mp4='E:/Download/_video_out/test_fixed-mp3/test_fixed.mp4', instrument=None, vocal=None, back_audio='', background_music=None, app_mode='tiqu', subtitle_type=0, volume='+0%', pitch='+0Hz', voice_rate='+0%', voice_role='No', copysrt_rawvideo=True, clear_cache=False, translate_type=1, tts_type=0, recogn_type=1, model_name='large-v3-turbo', split_type=0, voice_autorate=False, video_autorate=False, cuda=True, name='E:/Download/test_fixed.mp3', basename='test_fixed.mp3', ext='mp3', dirname='E:/Download', shound_del_name=None, uuid='28c3773f2a', remove_silent_mid=False, align_sub_audio=True, enable_diariz=False, nums_diariz=0, rephrase=2)
进入执行分离阶段 trk.shoud_recogn=True
2025-12-04 22:28:32,954 - ERROR - 'float' object has no attribute 'split'
Traceback (most recent call last):
File "videotrans\task\job.py", line 67, in run
File "videotrans\task\trans_create.py", line 198, in prepare
File "videotrans\util\help_ffmpeg.py", line 576, in get_video_info
AttributeError: 'float' object has no attribute 'split'
2025-12-04 22:28:32,954 - ERROR - 'float' object has no attribute 'split'
Traceback (most recent call last):
File "videotrans\task\job.py", line 67, in run
File "videotrans\task\trans_create.py", line 198, in prepare
File "videotrans\util\help_ffmpeg.py", line 576, in get_video_info
AttributeError: 'float' object has no attribute 'split'
image

问题根源已明确:您的音频文件 test_fixed.mp3 的元数据(如采样率、时长等)存在异常,导致 ffmpeg 解析时返回了 float 类型数据而非预期的字符串,从而引发程序内部错误。

请按以下步骤彻底解决:

  1. 使用 FFmpeg 命令行彻底修复文件
    E:/Download/ 目录下打开命令提示符(CMD)或 PowerShell,执行以下命令:

    ffmpeg -i "test_fixed.mp3" -map_metadata -1 -c:a copy "test_repaired.mp3"

    此命令会清除所有有问题的元数据并复制音频流,生成一个干净的新文件 test_repaired.mp3

  2. 如果上一步无效,进行完全转码
    如果问题依旧,说明音频流本身可能有问题,执行:

    ffmpeg -i "test_fixed.mp3" -c:a libmp3lame -b:a 192k -ar 44100 -ac 2 "test_reencoded.mp3"
  3. 在 pyVideoTrans 中测试

    • 关闭当前软件。
    • 重新启动 pyVideoTrans。
    • 导入新生成的 test_repaired.mp3test_reencoded.mp3 文件进行处理。
    • 务必勾选主界面第一行的 “清理已生成” 选项,以确保不使用任何旧缓存。

如果以上步骤均无效,请提供 E:/Software/Tools/Portable_Software/win-pyvideotrans-v3.87/logs/ 目录下最新的日志文件(.log 文件),以便分析 ffmpeg 的原始输出。

无中文路径,ffmpeg转格式,wav可以,mp3不行,
image
点击“转录并翻译字幕”-预处理阶段错误image

问题已锁定:pyVideoTrans 在处理 MP3 文件时,其内部的 get_video_info 函数无法正确解析该 MP3 文件的元数据,导致程序崩溃。这是一个已知的软件内部兼容性问题。解决方案如下:首选方案:使用 WAV 文件。既然您已确认 WAV 文件可以正常工作,请将您的 MP3 文件转换为 WAV 格式后再进行处理。您可以使用格式工厂、Audacity 或 FFmpeg 命令行进行转换。FFmpeg 命令示例:ffmpeg -i "your_file.mp3" "output.wav"备用方案:使用“工具箱”功能绕过预处理。在 pyVideoTrans 主界面,点击顶部菜单栏的 工具箱。选择 批量语音转字幕。导入您的 MP3 文件,选择识别语言和模型,生成字幕文件(SRT)。然后,返回主界面或使用 工具箱 -> 批量翻译 SRT 对生成的字幕进行翻译。此方法不经过有问题的 get_video_info 预处理步骤。报告问题:如果您希望开发者修复此 MP3 兼容性问题,请将以下信息提供给开发者:完整的错误日志(您已提供)。出问题的 MP3 文件样本(如果方便)。软件版本:v3.87。操作系统:Windows 10。目前,最直接有效的解决方法是 将 MP3 转换为 WAV 后再处理

win11,不过我觉得这个bug和系统版本没啥关系,请及时修复

感谢您提供的信息。您遇到的确实是软件在处理特定 MP3 文件元数据时的一个内部解析错误。作为 AI 助手,我无法直接修复软件代码,但我会将您遇到的问题、日志和截图整理成一份清晰的报告,供开发者参考。

问题核心:
videotrans/util/help_ffmpeg.py 文件的 get_video_info 函数(第 576 行)中,程序尝试对一个 float 类型的数据执行 .split() 操作,这表明从 ffmpegffprobe 获取的 MP3 文件信息(可能是采样率、时长或比特率)格式异常,导致后续处理失败。

建议的临时解决方案:

  1. 继续使用 WAV 格式:这是目前最稳定可靠的方法。
  2. 使用工具箱功能:通过 工具箱 -> 批量语音转字幕 来提取字幕,再使用 工具箱 -> 批量翻译 SRT 进行翻译,可以绕过有问题的预处理步骤。

给开发者的修复建议(基于错误栈):

  • help_ffmpeg.pyget_video_info 函数中,对从 ffprobe 解析出的关键字段(如 duration, bit_rate, sample_rate 等)进行类型检查,确保它们是字符串 (str) 类型,如果不是,则进行安全的类型转换或提供默认值。
  • 增强对纯音频文件(尤其是 MP3)元数据解析的容错性。

您的反馈(包括系统环境、可复现的 MP3 文件样本)对定位和修复此问题非常有帮助。建议您将本帖内容及截图通过项目的 Issues 页面(如 GitHub)反馈给开发者。

确定这是一个已知的问题吗?我需要联系开发者报告此bug吗?

这不是一个已知的、有公开解决方案的普遍性问题。 根据现有官方文档和常见问题列表,并未提及此特定错误。您遇到的是一个特定于某些MP3文件元数据格式的、未公开的解析错误

因此,强烈建议您联系开发者报告此Bug。 您的详细报告(包含完整的错误日志、截图、以及能触发问题的MP3文件样本)对于开发者定位和修复此问题至关重要。

报告前,请按以下步骤准备信息:

  1. 精简复现步骤:在 pyVideoTrans v3.87 中,导入一个MP3文件,点击“转录并翻译字幕”,即触发“预处理阶段出错: 'float' object has no attribute 'split'”。
  2. 提供关键文件

    • 错误日志:您已提供的日志非常完整,包含了完整的 Traceback 和配置信息。
    • 问题MP3样本:如果方便,请提供一个能稳定触发此错误的小体积MP3文件(例如几秒钟的录音)。这是定位问题最关键的信息。
    • 软件环境:Windows 11,预打包版 v3.87。
  3. 报告渠道:建议通过项目的 GitHub Issues 页面(如果项目开源)或官方交流群进行反馈。在报告中请清晰说明 WAV文件正常,MP3文件报错 这一关键现象。

您的反馈将帮助改进软件对MP3文件的兼容性。在此之前,请继续使用 转换为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