#3560 OSError: cannot load library '/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsnd

60.248* Posted at: 2 hours ago 👁26

Traceback (most recent call last):
File "/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/soundfile.py", line 267, in

_snd = _ffi.dlopen('sndfile')

File "/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/cffi/api.py", line 150, in dlopen

lib, function_cache = _make_ffi_library(self, name, flags)

File "/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/cffi/api.py", line 834, in _make_ffi_library

backendlib = _load_backend_lib(backend, libname, flags)

File "/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/cffi/api.py", line 829, in _load_backend_lib

raise OSError(msg)

OSError: ctypes.util.find_library() did not manage to locate a library called 'sndfile'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/ysihaiditing/pyvideotrans/videotrans/mainwin/_main_win.py", line 468, in _set_default

self._bind_signal()

File "/Users/ysihaiditing/pyvideotrans/videotrans/mainwin/_main_win.py", line 649, in _bind_signal

self._open_winform('fn_peiyin')

File "/Users/ysihaiditing/pyvideotrans/videotrans/mainwin/_main_win.py", line 723, in _open_winform

return winform.get_win(name).openwin()

File "/Users/ysihaiditing/pyvideotrans/videotrans/winform/fn_peiyin.py", line 187, in openwin

from videotrans.task._dubbing import DubbingSrt

File "/Users/ysihaiditing/pyvideotrans/videotrans/task/_dubbing.py", line 13, in

from videotrans.task._rate import TtsSpeedRate

File "/Users/ysihaiditing/pyvideotrans/videotrans/task/_rate.py", line 75, in

import soundfile as sf

File "/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/soundfile.py", line 276, in

_snd = _ffi.dlopen(_os.path.join(

File "/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/cffi/api.py", line 150, in dlopen

lib, function_cache = _make_ffi_library(self, name, flags)

File "/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/cffi/api.py", line 834, in _make_ffi_library

backendlib = _load_backend_lib(backend, libname, flags)

File "/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/cffi/api.py", line 829, in _load_backend_lib

raise OSError(msg)

OSError: cannot load library '/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib': dlopen(/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib, 0x0002): tried: '/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib' (no such file), '/Users/ysihaiditing/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 '/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/_soundfile_data/libsndfile.dylib'


=
system:macOS-26.1-arm64-arm-64bit
version:v3.97
frozen:False
language:zh
root_dir:/Users/ysihaiditing/pyvideotrans
Python: 3.10.19 (main, Feb 12 2026, 00:36:33) [Clang 21.1.4 ]

23 Replies

这是由于 macOS 系统缺少 libsndfile 音频库依赖导致的。pyVideoTrans 的某些功能(如音频处理)需要该库。

解决方案

  1. 使用 Homebrew 包管理器安装 libsndfile
    在终端中执行以下命令:

    brew install libsndfile
  2. 安装完成后,重启 pyVideoTrans 软件。

如果问题依旧,请确保 Homebrew 已正确安装并更新到最新版本。你也可以尝试重新安装 soundfile 的 Python 包:

pip uninstall soundfile -y
pip install soundfile

请查阅相关文档:

我这个报错之前有相似的吗?

是的,这个报错是 macOS 系统上部署 pyVideoTrans 时的一个常见问题,核心原因是缺少 libsndfile 系统库。

根据知识库,在 2.2 macOS / Linux 用户(源码部署) 部分,明确指出了前置依赖包括 FFmpeg,但未详细列出所有系统级音频库依赖。libsndfilesoundfile Python 包的后端依赖,用于读写音频文件,在 macOS 上通常需要单独安装。

解决方案已在上一回复中提供,即通过 Homebrew 安装:

  1. 打开终端。
  2. 执行命令:brew install libsndfile
  3. 安装完成后,重启 pyVideoTrans 软件。

如果问题依旧,可以尝试在虚拟环境中重新安装 soundfile 包,以确保它正确链接到新安装的系统库。

请查阅相关文档:

hai y![image](/uploads/1773165244_69b05abca92a5.png这个页面中心始终有遮挡物怎么办,如何解决?

这是由于软件界面显示异常,可能是界面缩放或渲染问题导致的。根据知识库中“高级选项”的说明,可以尝试调整界面显示设置来解决。解决方案:打开软件顶部菜单栏的“工具/选项”。选择“高级选项”。在“通用设置”区域,找到并勾选“主界面显示所有参数?”选项。关闭并重启 pyVideoTrans 软件,查看遮挡物是否消失。如果问题依旧,可以尝试调整操作系统的显示缩放设置(例如,在 macOS 的“系统设置”->“显示器”中,将分辨率或缩放调整为默认值),然后重启软件。请查阅相关文档:高级设置各个选项说明

主界面显示所有参数没找到啊,会不会是代码配置的我有问题?如何检查

根据知识库第10节“菜单-工具-高级选项,各个选项说明”中的“通用设置”部分,确实存在“主界面显示所有参数?”这一选项。如果您的界面中找不到此选项,可能是由于软件版本或界面语言导致的显示差异。请按以下步骤检查和解决:1. 确认版本:检查您使用的 pyVideoTrans 版本是否为 v3.97。您可以在软件启动时的窗口标题或关于页面查看版本号。如果版本低于 v3.97,请升级到最新版。2. 检查高级选项路径:确保您打开的路径是:顶部菜单栏 -> 工具/选项 -> 高级选项。在弹出的“高级选项”窗口中,第一个标签页就是“通用设置”。3. 界面语言:在“通用设置”区域,检查“软件界面语言”是否设置为中文。如果不是,请将其设置为中文并重启软件,然后再查找该选项。4. 如果仍找不到:可能是界面布局文件损坏或自定义配置问题。您可以尝试重置软件配置:关闭 pyVideoTrans。导航到软件根目录,查找并删除(或重命名)可能存在的配置文件,例如 config.inisettings.json(具体文件名请根据您的版本在 videotrans/configure/ 目录下查找)。重新启动软件,它会生成默认配置。5. 终极检查:如果以上方法均无效,请提供软件根目录下 logs/ 文件夹中最新日志文件(复制底部约30行),以便进一步分析界面加载时是否有错误。请查阅相关文档:高级设置各个选项说明

主界面显示所有参数在哪里啊?在哪个更细分类的下面?

根据知识库第10节“菜单-工具-高级选项,各个选项说明”中的“通用设置”部分,该选项的完整描述为:“主界面显示所有参数?:为避免过多参数造成困扰,主界面默认隐藏大部分参数,如果选中这里将切换为默认显示所有参数”。它位于“高级选项”窗口的第一个标签页“通用设置”区域。具体路径和位置如下:打开软件顶部菜单栏的“工具/选项”。选择“高级选项”。在弹出的“高级选项”窗口中,默认显示的第一个标签页就是“通用设置”。在该标签页内,从上往下查找,您会看到一系列选项,例如:“软件界面语言”、“单视频翻译暂停倒计时”、“设置输出目录”、“LLM重新断句每批字幕行数”等。“主界面显示所有参数?”选项就在这个列表中。如果您的“通用设置”标签页内确实没有这个选项,最可能的原因是软件版本低于 v3.97。请检查您的软件版本并升级到最新版 v3.97。如果已是最新版但仍找不到,请提供软件根目录下 logs/ 文件夹中最新日志文件(复制底部约30行),以便进一步分析。请查阅相关文档:高级设置各个选项说明

按照你的方法,屏幕遮挡还是没消失,而且在关闭app后遮挡物依然存在

根据您的描述,问题已超出软件界面范围,属于操作系统级别的窗口渲染或显示异常。关闭软件后遮挡物依然存在,表明该遮挡物并非来自 pyVideoTrans 应用窗口,而是系统桌面或其它应用的残留窗口/图形层。解决方案:1. 强制重启窗口管理器

*   尝试注销当前 macOS 用户账户并重新登录。
*   如果问题依旧,重启计算机。2.  **检查并关闭可能冲突的软件**:
*   检查是否有屏幕录制、截图、翻译悬浮窗、桌面美化、显卡驱动控制面板等软件在后台运行。暂时退出这些软件,看遮挡物是否消失。3.  **重置 pyVideoTrans 界面配置**:
*   在尝试上述系统级操作后,如果仅在打开 pyVideoTrans 时出现遮挡,请按以下步骤重置软件界面配置:
    *   关闭 pyVideoTrans。
    *   在终端中执行以下命令,删除 pyVideoTrans 的配置目录(请根据您的安装路径调整):
        `rm -rf ~/Library/Application\ Support/pyVideoTrans`
    *   重新启动 pyVideoTrans。4.  **检查 macOS 辅助功能**:
*   前往“系统设置” > “辅助功能” > “显示”,检查是否启用了“鼠标指针”放大、颜色反转等可能产生视觉残留的功能,暂时关闭它们。如果以上步骤均无法解决问题,请提供更详细的信息:遮挡物的具体外观(颜色、形状、是否可点击)、截图(包含整个屏幕和Dock栏),以及 pyVideoTrans 日志文件(`logs/` 目录下最新文件底部30行),以便进一步判断。

我描述错了,关闭软件后这个遮挡消失了,这个遮挡是软件开机动画的残留,或许你有好办法避免?我试了cd /Users/ysihaiditing/pyvideotrans && uv run python sp.py --no-splash来打开,没什么用,勾选“主界面显示所有参数?”选项。关闭并重启 pyVideoTrans 软件的方法也没啥用。

这是由于软件启动时的启动画面(Splash Screen)在关闭后未能正确从屏幕上移除,属于界面渲染残留问题。根据知识库,没有直接提供禁用启动画面的参数。您尝试的 --no-splash 参数并非软件支持的命令行选项。解决方案:1. 修改源码以禁用启动画面

*   定位到软件源码目录(`/Users/ysihaiditing/pyvideotrans`)。
*   找到主入口文件 `sp.py`。
*   在文件中搜索 `SplashScreen`、`splash` 或 `show_splash` 等关键词。
*   通常相关代码会在创建主窗口前。找到后,将其注释掉或修改为不显示。例如,如果找到类似 `splash = SplashScreen(...); splash.show()` 的代码,在其前面添加 `#` 注释掉这两行。
*   保存文件,然后使用 `uv run python sp.py` 重新启动。2.  **使用预打包版(如果存在 macOS 版)**:
*   知识库指出预打包版主要针对 Windows。如果官方提供了 macOS 的预编译版本,使用它可能避免此问题。请检查官方发布页面。3.  **环境变量尝试**:
*   在启动前设置环境变量,尝试影响 Qt/PySide6 的渲染行为。在终端中执行:
    `QT_QUICK_BACKEND=software cd /Users/ysihaiditing/pyvideotrans && uv run python sp.py`
*   或尝试:
    `QT_SCALE_FACTOR=1 cd /Users/ysihaiditing/pyvideotrans && uv run python sp.py`4.  **报告问题**:
*   如果以上方法无效,这是一个潜在的软件 Bug。请按照知识库 6.1 节的方法反馈:点击软件内报错弹窗的“报告错误”,或复制 `logs/` 目录下最新日志文件(底部30行)提交给开发者。由于知识库未明确提供禁用启动画面的方法,修改源码是直接手段。如果找不到相关代码,请提供 `sp.py` 文件开头部分(约前100行)的内容,以便进一步定位。

或许是bind signal相关的问题?因为倒计时一直不发生变化

是的,您分析得很对。启动画面残留且倒计时不变化,这很可能与界面信号绑定(_bind_signal)或初始化流程卡住有关。根据您最初提供的错误日志,问题根源在于导入 soundfile 库时因缺少 libsndfile 系统库而失败,这发生在 _bind_signal 方法内部(具体在 _open_winform('fn_peiyin') 时)。这个导入失败可能导致界面初始化不完整,从而卡住启动画面和倒计时。核心解决方案仍然是修复 libsndfile 依赖。请确保您已正确执行以下步骤:1. 安装 libsndfile:在终端中执行 brew install libsndfile。安装完成后,务必关闭所有终端窗口并重新打开一个新的终端,以确保环境变量生效。2. 验证安装:在新终端中执行 brew list libsndfile,确认库已安装。3. 重新安装 soundfile Python 包:在 pyVideoTrans 项目目录下,执行:

`uv pip uninstall soundfile -y`
`uv pip install soundfile`4.  **重启软件**:执行 `uv run python sp.py` 重新启动。如果问题依旧,请提供执行以上步骤后,软件启动时在终端中输出的完整错误信息(如果有),以及 `logs/` 目录下最新日志文件的底部内容。这将帮助确认 `libsndfile` 是否已正确链接。

这个和我们的问题有关系吗?

有直接关系。您最初提供的错误日志明确显示,软件在启动过程中,于 _bind_signal() 函数内部尝试加载“配音”功能窗口时,因导入 soundfile 库失败而崩溃。这个崩溃发生在界面完全初始化之前,导致启动画面进程异常中断,从而可能造成画面残留和倒计时卡死。因此,解决 libsndfile 缺失问题是消除启动画面残留和倒计时异常的根本方法。请按照上一回复的步骤,确保 libsndfile 已通过 Homebrew 成功安装,并且 soundfile Python 包在您的虚拟环境中正确重新安装。完成后,再次启动软件观察问题是否解决。如果问题依旧,请提供新的终端启动输出和日志文件底部内容。

Traceback (most recent call last):
File "/Users/ysihaiditing/pyvideotrans/videotrans/process/stt_fun.py", line 346, in faster_whisper

model = WhisperModel(

File "/Users/ysihaiditing/pyvideotrans/.venv/lib/python3.10/site-packages/faster_whisper/transcribe.py", line 689, in init

self.model = ctranslate2.models.Whisper(

RuntimeError: File model.bin is incomplete: failed to read a buffer of size 9830400 at position 380907959

这是由于 faster-whisper 语音识别模型文件下载不完整或损坏导致的。软件尝试加载模型时,读取文件失败。根据知识库第11节“手动下载适用于 faster-whisper(本地) 语音识别渠道的模型”的说明,需要重新下载或替换模型文件。解决方案:1. 删除损坏的模型文件

*   导航到您的模型目录。根据您的安装路径,通常位于 `/Users/ysihaiditing/pyvideotrans/models/`。
*   找到与您选择的模型对应的文件夹(例如,如果您使用 `large-v3` 模型,文件夹名应为 `models--Systran--faster-whisper-large-v3`)。
*   删除该文件夹内的所有 `.bin` 和 `.json` 等文件,或者直接删除整个文件夹。2.  **手动下载模型**(推荐):
*   根据知识库第11节的指引,访问 HuggingFace 模型页面手动下载。
*   例如,对于 `large-v3` 模型:
    *   创建文件夹:`/Users/ysihaiditing/pyvideotrans/models/models--Systran--faster-whisper-large-v3`
    *   打开下载页面:`https://huggingface.co/Systran/faster-whisper-large-v3/tree/main`
    *   将该页面中的所有文件(如 `model.bin`, `config.json`, `tokenizer.json`, `vocabulary.txt` 等)下载到刚创建的文件夹内。3.  **重新启动软件**:
*   完成文件替换后,重新启动 pyVideoTrans (`uv run python sp.py`)。
*   软件将加载您手动放置的完整模型文件。4.  **(可选)使用国内镜像**:
*   如果从 HuggingFace 下载缓慢,可以尝试使用国内镜像站 `hf-mirror.com`,将上述 URL 中的 `huggingface.co` 替换为 `hf-mirror.com` 进行下载。请查阅相关文档:<a  target="_blank"  href="https://pyvideotrans.com/819">在线下载AI模型失败的解决办法</a>

关于 Cannot find an appropriate cached snapshot folder for the specified revision... 错误的说明与解决方案

我的模型没有选择en,发音语言和目标语言都选了阿拉伯语,为何最后转录结果还是英语

这是由于语音识别模型选择不当导致的。您可能选择了仅支持英语的模型(如以 .en 结尾或 distil- 开头的模型),或者未正确指定发音语言。根据知识库第9节“faster-whisper(本地)语音识别渠道”的说明,某些模型仅限英语使用。解决方案:1. 检查并更换模型

*   在软件主界面的“语音识别”行,确认您选择的模型。
*   **确保不要选择**任何以 `.en` 结尾(如 `tiny.en`, `base.en`, `small.en`, `medium.en`)或以 `distil-` 开头的模型(如 `distil-large-v3`)。这些模型**仅支持英语**。
*   对于阿拉伯语,应选择通用的多语言模型,如 `large-v3`(推荐)、`large-v2` 或 `large-v3-turbo`。2.  **明确指定发音语言**:
*   在“发音语言”下拉菜单中,必须明确选择“阿拉伯语”或“ar”,**不要选择“auto”**。3.  **验证模型文件**:
*   如果您手动下载过模型,请确保下载的是通用多语言模型(如 `Systran/faster-whisper-large-v3`),而不是英语专用模型。4.  **最佳实践**:
*   对于阿拉伯语等小语种,知识库第8节“最佳实践建议”指出,使用本地模型(如 `large-v3`)或收费的在线API(如Gemini、OpenAI语音识别API)效果更佳。
*   如果识别效果仍不理想,可以尝试在“高级选项”中调整“语音阈值”、“最长语音持续秒数”等参数。请查阅相关文档:<a  target="_blank"  href="https://pyvideotrans.com/faster">faster和openai识别模式</a><a  target="_blank"  href="https://pyvideotrans.com/note">语音识别模型分类与说明</a>

可是理论上我选择medium模型也可以吧

理论上,选择 medium 模型(非 .en 版本)是可以识别阿拉伯语的,因为它是多语言模型。但是,如果识别结果仍然是英语,主要原因可能有两个:1. 发音语言设置错误:这是最常见的原因。您必须在“发音语言”下拉菜单中明确选择“阿拉伯语”或“ar”。如果选择了“auto”(自动检测),模型可能错误地将阿拉伯语语音判断为英语。根据知识库第6.9节说明,在“翻译视频或音频”功能中,“自动检测”选项已被移除,您必须明确指定。请再次确认您选择的是“阿拉伯语”。2. 模型文件混淆:您可能错误地下载或加载了 medium.en(英语专用)模型文件,而不是 medium(多语言)模型文件。请检查您的 models/ 目录,确认文件夹名是否为 models--Systran--faster-whisper-medium(多语言),而不是 models--Systran--faster-whisper-medium.en(英语)。解决方案:1. 强制指定语言:在“发音语言”中,从下拉列表里找到并明确选择“阿拉伯语”(或代码“ar”)。2. 验证并更换模型

*   在软件界面的“语音识别”行,将模型从 `medium` 切换为 `large-v3`(效果最佳),然后重新运行识别。
*   如果问题依旧,请按照知识库第11节的方法,手动下载 `large-v3` 模型文件,确保下载的是多语言版本。3.  **检查高级设置**:在“菜单-工具-高级选项-语音识别参数”中,确认“faster/whisper模型”列表里包含的是正确的模型名(如 `large-v3,large-v2,medium`)。如果识别效果仍不理想,对于阿拉伯语,考虑使用知识库推荐的“小语种最佳配置”:**收费渠道**,如 `Gemini大模型识别` 或 `OpenAI语音识别API`。请查阅相关文档:<a  target="_blank"  href="https://pyvideotrans.com/note">语音识别模型分类与说明</a>
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.

Related resource