如何从HuggingFace数据集下载单个音频文件?遇报错求助
问题解决思路
1. 修复hf_hub_download的使用错误
你传入hf_hub_download的是本地缓存文件路径,但这个函数的设计目标是从Hugging Face Hub远程拉取文件,参数要求是仓库ID和目标文件名,而非本地路径。
实际上,执行load_dataset('imvladikon/hebrew_speech_kan')后,数据集已经自动下载到本地缓存目录了,你打印的a就是本地音频文件的直接路径,直接用这个路径读取音频即可,无需再调用hf_hub_download。示例代码:
import soundfile as sf audio_data, sample_rate = sf.read(a)
2. 解决仓库链接不可用的问题
imvladikon/hebrew_speech_kan属于数据集类型仓库,这类仓库不会把音频文件直接放在main分支下,而是通过数据集脚本(如dataset.py)托管数据的实际存储地址(比如云存储服务)。因此直接用hf_hub_url拼接文件名找不到文件是正常现象。
正确的操作方式是通过load_dataset返回的数据集对象直接访问音频数据:
ds = load_dataset('imvladikon/hebrew_speech_kan') # 获取第一条训练数据的音频数组和采样率 audio_sample = ds['train'][0]['audio'] audio_array = audio_sample['array'] sample_rate = audio_sample['sampling_rate']
这种方式无需手动处理路径或链接,数据集库会自动完成缓存管理和文件读取。
补充:手动下载单个数据集文件的方法
如果确实需要单独下载某一文件,可以前往该数据集的Hugging Face页面,在「Files and versions」中找到数据集脚本dataset.py,从中获取数据文件的实际存储地址;或使用datasets库的download_and_extract工具函数,但通常直接通过数据集对象访问是最便捷的方案。
内容的提问来源于stack exchange,提问作者Ashok Kumar Jayaraman
相关产品推荐
相关产品推荐

