#2187 [Errno 24] Too many open files: '/Volumes/Ventoy/video/pyvideotrans/videotrans/cfg.json'

144.34* Posted at: 13 hours ago 👁52

[Errno 24] Too many open files: '/Volumes/Ventoy/video/pyvideotrans/videotrans/cfg.json'


=
system:macOS-26.1-arm64-arm-64bit
version:v3.91
frozen:False
language:zh
root_dir:/Volumes/Ventoy/video/pyvideotrans
Python: 3.10.19 (main, Dec 9 2025, 19:17:38) [Clang 21.1.4 ]

2025-12-22 00:25:23,587 - INFO - cmd=['ffmpeg', '-hide_banner', '-ignore_unknown', '-threads', '0', '-y', '-i', '/var/folders/gn/t926ngdx4lzcyxsybc8lbgmh0000gn/T/pyvideotrans/1766334319.232897.wav.mp3', '-ar', '48000', '-ac', '2', '-c:a', 'pcm_s16le', '/var/folders/gn/t926ngdx4lzcyxsybc8lbgmh0000gn/T/pyvideotrans/1766334319.232897.wav']

24 Replies

这个错误 [Errno 24] Too many open files 表明您的系统(macOS)达到了文件描述符(打开文件数)的上限,导致软件无法打开新的配置文件(cfg.json)。这通常发生在批量处理大量文件或软件存在资源泄漏时。

请按以下步骤解决:

  1. 立即重启软件:关闭所有 pyVideoTrans 进程,然后重新启动。这能释放被占用的文件描述符。
  2. 检查并调整系统限制

    • 打开终端(Terminal)。
    • 输入以下命令查看当前用户限制:ulimit -n
    • 如果数值较低(例如 256),可以临时提高限制(仅对当前终端会话有效):ulimit -n 2048
    • 然后在该终端中,使用 cd 命令切换到您的 pyvideotrans 目录,并使用 uv run sp.pypython sp.py 启动软件。
  3. 优化处理方式

    • 如果正在批量处理大量视频,请进入菜单 工具 -> 选项 -> 高级选项
    • 在“通用设置”区域,务必勾选“批量翻译时强制串行”。这会让软件逐个处理视频,而不是同时打开大量临时文件,能有效避免此问题。
  4. 清理临时文件

    • 手动删除软件运行时产生的临时文件目录:/var/folders/gn/t926ngdx4lzcyxsybc8lbgmh0000gn/T/pyvideotrans/。您可以在终端中执行:rm -rf /var/folders/gn/t926ngdx4lzcyxsybc8lbgmh0000gn/T/pyvideotrans/

如果问题频繁出现,建议每次处理不超过5个视频,并确保勾选了“强制串行”选项。

系统错误 (24):Too many open files:
Traceback (most recent call last):
File "/Volumes/Ventoy/video/pyvideotrans/videotrans/util/ListenVoice.py", line 18, in run

tts.run(

File "/Volumes/Ventoy/video/pyvideotrans/videotrans/tts/__init__.py", line 276, in run

CosyVoice(**kwargs).run()

File "", line 14, in init
File "/Volumes/Ventoy/video/pyvideotrans/videotrans/tts/_cosyvoice.py", line 28, in post_init
File "/Volumes/Ventoy/video/pyvideotrans/videotrans/tts/_base.py", line 65, in post_init

super().__post_init__()

File "/Volumes/Ventoy/video/pyvideotrans/videotrans/configure/_base.py", line 25, in post_init
File "/Volumes/Ventoy/video/pyvideotrans/videotrans/configure/_config_loader.py", line 338, in parse_init
File "/Users/man/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/lib/python3.10/pathlib.py", line 1134, in read_text

with self.open(mode='r', encoding=encoding, errors=errors) as f:

File "/Users/man/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/lib/python3.10/pathlib.py", line 1119, in open

return self._accessor.open(self, mode, buffering, encoding, errors,

OSError: [Errno 24] Too many open files: '/Volumes/Ventoy/video/pyvideotrans/videotrans/cfg.json'

错误 Too many open files 表明您的 macOS 系统已达到文件描述符(打开文件数)上限。这通常在使用 CosyVoice 等本地 TTS 模型进行批量配音时发生,因为每个处理线程都可能打开大量临时文件。

核心解决方案:

  1. 立即重启软件:关闭所有 pyVideoTrans 进程,释放被占用的文件句柄。
  2. 调整软件并发设置

    • 进入菜单 工具 -> 选项 -> 高级选项
    • “配音调整” 区域,将 “同时配音字幕数” 改为 1
    • 这将强制软件串行处理配音,大幅减少同时打开的文件数。
  3. 调整系统限制(临时)

    • 打开终端(Terminal)。
    • 输入以下命令查看当前限制:ulimit -n
    • 如果数值较低(如 256),输入以下命令临时提高(仅对当前会话有效):ulimit -n 2048
    • 然后在该终端中,使用 cd 命令切换到您的 pyvideotrans 目录,并使用 uv run sp.py 启动软件。
  4. 启用强制串行处理

    • 高级选项“通用设置” 区域,务必勾选 “批量翻译时强制串行”
    • 这确保整个流程(识别、翻译、配音)都是逐个视频处理,而不是并行,能从根本上避免此问题。
  5. 清理临时文件

    • 在终端中执行:rm -rf /var/folders/gn/t926ngdx4lzcyxsybc8lbgmh0000gn/T/pyvideotrans/
    • 这会删除软件运行时产生的所有临时文件。

最佳实践:如果您需要批量处理多个视频,请务必同时执行第2步(配音并发设为1)和第4步(勾选强制串行),这是解决此问题最有效的方法。

cannot load library '/Volumes/Ventoy/video/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib': dlopen(/Volumes/Ventoy/video/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib, 0x0002): tried: '/Volumes/Ventoy/video/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Volumes/Ventoy/video/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib' (no such file), '/Volumes/Ventoy/video/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib' (no such file). Additionally, ctypes.util.find_library() did not manage to locate a library called '/Volumes/Ventoy/video/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib'

这个错误表明 libsndfile 库在 macOS 上缺失或安装不正确,这是音频处理的关键依赖。请按以下步骤解决:安装 libsndfile 库:打开终端(Terminal)。执行以下命令使用 Homebrew 安装:brew install libsndfile如果尚未安装 Homebrew,请先访问 https://brew.sh 安装。验证安装:安装后,在终端中运行:brew list libsndfile确保能看到类似 /usr/local/lib/libsndfile.dylib 的输出。重建 Python 环境依赖:在您的 pyvideotrans 项目目录下,执行以下命令重新安装 soundfile 包:uv pip uninstall soundfile -yuv pip install soundfile --no-binary :all: # 强制从源码编译,链接到系统库检查环境变量:确保您的终端环境变量 PATH 包含了 Homebrew 的路径。可以执行:echo $PATH通常应包含 /usr/local/bin/opt/homebrew/bin。如果使用预编译包:如果您使用的是官网下载的预编译包(sp.exe),此问题不应出现。如果出现,请尝试:完全删除现有解压目录。重新从官网下载完整包(非升级补丁)。在非系统盘(如 D 盘)新建纯英文目录(如 D:/videotrans)解压。如果问题依旧,请提供您使用的是预编译包还是源码部署,以及完整的错误日志文件(位于 videotrans/logs/ 目录下)。

uv pip install soundfile --no-binary:all
error: unexpected argument '--no-binary:all' found

tip: a similar argument exists: '--no-binary'

Usage: uv pip install --no-binary

For more information, try '--help'.

命令格式错误,--no-binary:all: 之间需要一个空格。正确的命令是:uv pip install soundfile --no-binary :all:。请重新执行:uv pip install soundfile --no-binary :all:如果仍然失败,可以尝试直接使用 pip 安装(确保在您的虚拟环境中):pip uninstall soundfile -ypip install soundfile --no-binary :all:安装完成后,请重启 pyVideoTrans 软件。如果问题依旧,请提供完整的错误日志。

(base) man@9909990 pyvideotrans % uv pip uninstall soundfile -y
error: unexpected argument '-y' found

tip: to pass '-y' as a value, use '-- -y'

Usage: uv pip uninstall [OPTIONS]

For more information, try '--help'.

uv 的 uninstall 命令不支持 -y 参数。请使用以下命令:uv pip uninstall soundfile然后根据提示输入 y 确认卸载。或者,直接使用 pip 命令(确保在您的虚拟环境中):pip uninstall soundfile -y然后重新安装:uv pip install soundfile --no-binary :all:如果安装过程中出现编译错误,可能是因为缺少其他依赖。在 macOS 上,您可能还需要安装 portaudio:brew install portaudio完成所有步骤后,重启 pyVideoTrans 软件。

为什么生成的视频既有原音也有配音两个

这是因为您在配音时没有勾选“去除背景音”或“人声分离”选项,导致软件将新生成的配音直接叠加到了原始视频的音频轨道上。要解决此问题,请按以下步骤操作:在配音前启用人声分离:在主界面第 5 行“同步与字幕显示”区域,勾选“人声分离”。软件会先将原视频的人声和背景音分离,然后只替换人声部分,最后再与背景音合并。这样能保留原始背景音乐/音效,只替换说话声。如果不需要背景音:如果您希望视频只有配音,没有原视频的任何声音,可以在“工具箱”中使用“音视频合并/分离”功能,先提取或分离出视频的无声版本,再进行翻译配音流程。检查输出设置:确保您没有意外地同时保留了原始音轨。在最终合并时,软件默认会使用处理后的音频替换原音频。如果问题依旧,请提供您在处理时主界面的完整配置截图,以便进一步分析。

2025-12-22 19:49:40,643 - WARNING - [LLM re-segments]重新断句失败:response=ChatCompletion(id=None, choices=None, created=None, model=None, object=None, service_tier=None, system_fingerprint=None, usage=None, error={'message': 'Provider returned error', 'code': 524, 'metadata': {'raw': 'error code: 524', 'provider_name': 'Xiaomi'}}, user_id='user_36w6psn77hdVQs7mCPfA1bugsPQ')

这个错误表明您使用的 LLM 大模型重新断句功能失败了,原因是您配置的 AI 渠道(此处显示为“Xiaomi”)返回了错误代码 524。这通常是网络连接超时或服务器端问题。请按以下步骤解决:检查网络连接和代理:确保您的网络稳定,并且如果使用了代理,代理设置正确(主界面第5行“网络代理”)。尝试切换其他 AI 渠道:在“翻译设置”中,暂时切换到其他更稳定的 AI 渠道进行重新断句,例如 DeepSeek、OpenAI 或 Gemini。调整请求参数:进入 菜单 - 工具 - 选项 - 高级选项。在“通用设置”区域,适当减小“LLM重新断句每批字词数”(例如从 1000 改为 500),以降低单次请求的数据量,减少超时风险。暂时禁用 LLM 重新断句:如果问题持续,您可以在语音识别(ASR)后,选择使用“本地算法重断句”或“默认断句”,而不使用“LLM大模型重断句”。检查 API Key 和配置:确认您在“翻译设置”中为“Xiaomi”渠道填写的 API Key 和 Endpoint 是否正确有效。如果以上步骤无法解决,请提供您完整的“翻译设置”截图以及 videotrans/logs/ 目录下的最新日志文件,以便进一步分析。

too short than prompt text Hi everyone , Aaron here for Zollotech , and Apple released macOS twenty six point two Tahoe . macOS Tahoe twenty six point two is available around the world at the same time for everyone on all macOS Tahoe supported devices . Now I ' ve installed this on my M four Max MacBook Pro sixteen - inch , but again it ' s available on all supported devices . And if you are not seeing the update , you can find it by going to your system settings , going to general , and then software update . You may have to try this a few different times . If you are still not seeing it , go back . , this may lead to bad performance
max value is tensor(1.0006)

这个错误提示来自语音克隆或 TTS 模型(很可能是 GPT-SoVITS、F5-TTS 或 CosyVoice),表明您提供的参考音频(reference audio)太短,无法有效提取音色特征。模型提示“too short than prompt text”,意思是参考音频的时长比要合成的文本对应的预期语音时长还要短。要解决此问题,请按以下步骤操作:更换更长的参考音频:如果您在使用“语音克隆”或“多角色配音”功能,请确保提供的参考音频(说话人音频)足够长。建议使用清晰、纯净、包含该说话人多种语调的音频片段,时长最好在 10-30 秒之间。避免使用只有几个词的超短音频。检查并调整 TTS 配置:如果您在“工具箱”中使用“字幕多角色配音”或“批量为字幕配音”,请检查您为角色选择的“参考音频”文件是否符合上述要求。如果是在主流程中使用了“原音色克隆”,请确保原始视频中的人声片段足够长且清晰。尝试其他 TTS 引擎:如果参考音频确实无法延长,可以暂时切换到不需要参考音频的 TTS 引擎,例如:Edge-TTS、VITS-cnen、Azure TTS 或 OpenAI TTS。调整高级参数(高级用户):如果您使用的是 GPT-SoVITS 并自行部署,可以尝试在其 WebUI 中调整“参考音频最小时长”等相关参数。但 pyVideoTrans 软件内部通常已做优化,此错误更可能源于输入的音频本身。请检查您具体是在哪个功能环节遇到此错误,并提供更多上下文(例如,是主界面翻译流程还是工具箱的独立功能),以便获得更精确的指导。

2025-12-22 20:25:10,960 INFO yield speech len 22.4, rtf 2.3633408120700294
100%|█████████████████████████████████████████████| 1/1 [00:53

从日志来看,您的 TTS(语音合成)过程已成功完成。日志显示:“yield speech len 22.4, rtf 2.36” 表示生成了时长 22.4 秒的语音,实时因子(RTF)为 2.36(即生成语音所花费的时间是语音时长的 2.36 倍)。进度条显示 100% 完成,总耗时约 53 秒。这说明配音环节本身是正常的。如果您遇到的问题是最终视频没有声音、声音异常,或者流程卡在后续步骤,请提供更具体的错误描述或后续的日志内容。例如:流程是否卡在“视频合成”阶段?最终输出的视频文件是否包含音频?音频是原声还是配音?如果流程已完成但结果不符合预期,请检查主界面第 5 行的“同步与字幕显示”设置,确保您正确选择了“嵌入硬字幕”或“嵌入软字幕”,并且没有意外勾选“不嵌入字幕”。同时,确认您在第 4 行“配音”设置中正确选择了目标配音角色。如果问题依旧,请提供从当前日志时间点之后出现的完整错误信息或警告。

2025-12-22 20:48:23,664 WARNING synthesis text 这些项目也是新更新的一部分但如果我们创建新提醒的话。 too short than prompt text the items as well so that's part of the new update but also if we create a new reminder so, this may lead to bad performance
2025-12-22 20:48:24,327 INFO synthesis text 这些项目也是新更新的一部分但如果我们创建新提醒的话。

这个警告再次确认了问题:您使用的 TTS 模型(很可能是 GPT-SoVITS 或类似的语音克隆模型)在合成文本“这些项目也是新更新的一部分但如果我们创建新提醒的话。”时,提示参考音频“too short than prompt text”。原因与之前相同:您提供的用于克隆音色的参考音频时长太短,无法覆盖当前要合成的文本长度。这会导致合成语音质量下降(“bad performance”)。解决方案如下:确保参考音频足够长且质量高:如果您在使用“原音色克隆”或“多角色配音”,请提供一段足够长的(建议 15-30 秒)、清晰的、包含自然语调变化的参考音频。避免使用只有几个词的短音频。检查并可能调整文本分段:过长的单句文本也可能引发此问题。您可以尝试在“工具箱”中使用“字幕多角色配音”功能,并确保您的字幕文件(SRT)中的单句字幕不要过长。如果句子很长,可以手动在标点处分割成多条字幕。切换 TTS 引擎:如果无法获得更长的参考音频,最直接的解决方法是更换 TTS 引擎。在主界面第 4 行“配音”设置中,选择不需要参考音频的引擎,例如:Edge-TTS、VITS-cnen、Azure TTS 或 OpenAI TTS。检查高级设置:如果您使用的是自行部署的 GPT-SoVITS 服务,请在其 WebUI 中检查“参考音频最小时长”等参数设置。但在 pyVideoTrans 内部,通常只需确保输入的参考音频符合要求即可。请根据您具体的使用场景(是主流程翻译还是工具箱功能)选择上述解决方案。如果问题持续,请提供您选择的具体 TTS 引擎名称和参考音频的时长信息。

macos 提升RTF

2025-12-22 20:54:03,576 INFO yield speech len 17.6, rtf 2.2324755245989016
100%|█████████████████████████████████████████████| 1/1 [00:39

您希望提升 macOS 上 TTS(语音合成)的 RTF(Real Time Factor,实时因子,即生成语音耗时与语音时长的比值)。当前 RTF 约为 2.23(生成 17.6 秒语音用了约 39 秒),这意味着合成速度慢于实时。要提升速度(降低 RTF),请尝试以下方法:更换更快的 TTS 引擎:这是最有效的方法。本地 TTS 模型(如 CosyVoice、GPT-SoVITS)通常较慢。请切换到速度更快的引擎:Edge-TTS(在线,速度极快,RTF 通常远小于 1)。VITS-cnen(本地内置,速度较快)。piper-tts(本地内置,速度较快)。Azure TTS 或 OpenAI TTS(在线 API,速度也很快)。启用 CUDA 加速(如果使用本地模型且 Mac 有 Apple Silicon GPU):对于 CosyVoice 等支持 GPU 的本地模型,请确保在主界面第 6 行勾选了“CUDA加速”。对于 Apple Silicon Mac,这通常指 MPS(Metal Performance Shaders)加速。调整并发设置(如果批量处理):进入 菜单 - 工具 - 选项 - 高级选项。在“配音调整”区域,可以尝试适当增加“同时配音字幕数”(例如从 1 改为 2 或 3),利用并行处理加速。但注意:过高的并发可能导致内存不足或“Too many open files”错误。确保系统资源充足:关闭其他占用大量 CPU/GPU 的应用程序。检查活动监视器,确保有足够可用内存。如果使用本地大模型进行翻译或重新断句,也会消耗大量资源,可能拖慢整体速度。可以考虑使用在线 API 进行翻译以减轻本地负载。检查模型精度设置:对于某些本地 TTS 模型,可能存在精度设置(如 float16)。在模型的高级配置中,使用较低精度(float16)可以提升速度,但可能略微影响音质。由于您使用的是 macOS,最直接有效的方案是第 1 步:切换到 Edge-TTS 或 VITS-cnen 引擎,速度会有显著提升。

macos 有16g内存“同时配音字幕数”应该可以调整到多少最佳

2025-12-22 21:03:35.001 python3[12216:863511] TSM AdjustCapsLockLEDForKeyTransitionHandling - _ISSetPhysicalKeyboardCapsLockLED Inhibit

在使用cosyvoise克隆原声音的时候,为什么生成的视频既有原音也有配音两个

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