使用🤗datasets加载Sunbird音频数据集时TorchCodec报错求助
解决🤗Datasets加载Sunbird/urban-noise-uganda-61k时的libtorchcodec加载错误
问题场景
执行以下代码加载音频数据集时触发RuntimeError,提示无法加载libtorchcodec,涉及FFmpeg未识别、PyTorch与TorchCodec版本不兼容,且找不到对应FFmpeg的.dll文件:
dataset = load_dataset("Sunbird/urban-noise-uganda-61k", "small") sample = dataset['train'][0]
已尝试的操作:
- 安装FFmpeg v7并添加至系统PATH
- 安装PyTorch v2.8.0+cpu并匹配TorchCodec v0.7
- 确认所需.dll文件存在
可行解决方案
1. 手动指定FFmpeg路径给TorchCodec
TorchCodec可能无法自动识别PATH中的FFmpeg,可通过环境变量强制指定:
import os # 替换为你的FFmpeg安装目录下bin文件夹的绝对路径 os.environ["TORCHCODEC_FFMPEG_DIR"] = "C:/path/to/ffmpeg/bin"
设置完成后重启代码,重新加载数据集。
2. 降级FFmpeg版本
FFmpeg v7属于较新版本,TorchCodec v0.7对其兼容性可能不足,建议降级到FFmpeg v5.x或v6.x:
- 下载对应版本的解压版FFmpeg
- 替换系统PATH中的FFmpeg路径,确保旧版本优先级最高
- 重启终端或IDE后重新测试
3. 验证并修复TorchCodec与FFmpeg的绑定
执行以下代码检查TorchCodec是否正确检测到FFmpeg:
import torchcodec print(torchcodec.ffmpeg_version()) print(torchcodec.ffmpeg_config())
如果输出为空或报错,说明绑定失败,需重新安装TorchCodec并指定FFmpeg路径:
pip uninstall torchcodec -y pip install torchcodec --install-option="--ffmpeg-dir=C:/path/to/ffmpeg"
4. 切换到librosa音频解码器
🤗Datasets支持指定解码器,可绕过TorchCodec直接用librosa解码:
from datasets import load_dataset, Audio dataset = load_dataset("Sunbird/urban-noise-uganda-61k", "small") # 强制使用librosa解码音频 dataset = dataset.cast_column("audio", Audio(decode=True, decoder="librosa")) sample = dataset['train'][0]
使用前需先安装librosa:pip install librosa
额外排查要点
- 确保FFmpeg的bin路径在系统PATH中处于最靠前位置,避免其他版本干扰
- 确认PyTorch为官方发布的CPU版本,无自定义编译,且版本严格匹配TorchCodec v0.7(支持PyTorch 2.6.0-2.8.0)
- 尝试在全新虚拟环境中重新安装所有依赖,排除原有环境的依赖冲突
内容的提问来源于stack exchange,提问作者Pranav Nataraj
相关产品推荐
相关产品推荐

