You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel/CSV插入wav/ogg/mp3音频以便用panda加载制作ML数据集

音频文件插入Excel/CSV用于ML数据集的正确实现方案

现有操作失效的核心原因

  • CSV是纯文本分隔格式,本身不支持存储任何二进制嵌入式对象,你通过「插入对象」功能添加的音频仅为本地文件的临时引用,不会真的写入CSV文件,换环境、转移文件就会丢失。
  • Excel的「插入对象」是OLE格式的嵌入式二进制内容,pandas读取Excel的默认逻辑仅解析单元格的文本、数值、公式计算结果,不会识别读取OLE对象,因此返回空值nan。

方案1(ML数据集首选):存储音频相对路径

这是工业界音频数据集的通用规范,读写效率高,不会导致表格体积异常膨胀。
操作流程:

  • 统一整理所有音频文件到数据集根目录下的固定子目录,例如./audio,所有wav/ogg/mp3文件都存入该目录。
  • 在CSV/Excel中新增audio_path列,填入对应音频的相对路径,例如./audio/sample_003.mp3。
  • 后续用pandas加载后直接按路径读取音频即可,Colab环境下只要保持目录结构不变、路径映射正确即可正常读取。
    示例代码:
import pandas as pd
import librosa # 也可替换为soundfile等其他音频处理库

# 读取表格
df = pd.read_csv("dataset.csv")
# 遍历加载音频
for _, row in df.iterrows():
    # sr=None表示保留音频原始采样率
    audio_arr, sample_rate = librosa.load(row["audio_path"], sr=None)
    # 后续ML预处理逻辑

方案2(单文件存储需求场景):存储音频Base64编码

如果你需要把音频内容和表格整合为单个文件、不需要附带额外音频目录,可以使用该方案,缺点是Base64编码会让音频体积增大33%左右,仅适合小体量数据集。

写入表格的编码代码

import base64
import pandas as pd
from pathlib import Path

def audio2base64(file_path):
    with open(file_path, "rb") as f:
        return base64.b64encode(f.read()).decode("utf-8")

# 批量生成数据集
audio_files = list(Path("./audio").glob("*.wav"))
df = pd.DataFrame({
    "sample_id": [f.stem for f in audio_files],
    "audio_b64": [audio2base64(f) for f in audio_files]
})
# 支持保存为CSV或Excel格式
df.to_csv("dataset_single_file.csv", index=False, encoding="utf-8")

读取表格的解码代码

import io
import base64
import pandas as pd
import librosa

df = pd.read_csv("dataset_single_file.csv")
for _, row in df.iterrows():
    # 解码base64为二进制流
    audio_byte = base64.b64decode(row["audio_b64"])
    # 直接从内存读取,无需写入临时文件
    audio_arr, sample_rate = librosa.load(io.BytesIO(audio_byte), sr=None)
    # 后续ML预处理逻辑

内容的提问来源于stack exchange,提问作者leopold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:57:03