You need to enable JavaScript to run this app.
文档中心
AI 数据湖服务

AI 数据湖服务

复制全文
下载 pdf
音频处理
音频元数据提取
复制全文
下载 pdf
音频元数据提取

算子介绍

描述

音频元数据提取算子

功能

  1. 支持音频文件格式
  2. 提取完整的音频元数据信息,包括:
  • 基础信息: 时长、格式、比特率
  • 音频信息: 采样率、声道数、编码器
  1. 使用 ffprobe 工具进行元数据提取
  2. 支持本地文件、远程文件(TOS/S3)、HTTP/HTTPS链接

返回

包含以下字段的结构化数组:

  • duration (float): 音频时长(秒)
  • format_name (string): 格式名称
  • bit_rate (int64): 比特率
  • audio_codec (string): 音频编码器名称
  • audio_sample_rate (int32): 音频采样率
  • audio_channels (int32): 音频声道数

Daft 调用

算子参数

输入

输入列名

说明

input_col

输入文件路径的数组

输出

包含元数据的结构化数组

参数

如参数没有默认值,则为必填参数

参数名称

类型

默认值

描述

timeout

int or None

None

ffprobe 命令执行超时时间(秒) 默认值:None (无超时)

调用示例

下面的代码展示了如何使用 Daft(适用于分布式)运行算子提取音频文件的元数据信息。

from __future__ import annotations

import os

import daft
from daft import col
from daft.las.functions.audio import AudioMetadataExtract
from daft.las.functions.udf import las_udf

if __name__ == "__main__":
    TOS_TEST_DIR_URL = os.getenv("TOS_TEST_DIR_URL", "las-cn-beijing-public-online.tos-cn-beijing.volces.com")

    if os.getenv("DAFT_RUNNER", "native") == "ray":
        import logging

        import ray

        def configure_logging():
            logging.basicConfig(
                level=logging.INFO,
                format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
                datefmt="%Y-%m-%d %H:%M:%S",
            )
            logging.getLogger("tracing.span").setLevel(logging.WARNING)
            logging.getLogger("daft_io.stats").setLevel(logging.WARNING)
            logging.getLogger("DaftStatisticsManager").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaScheduler").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaDispatcher").setLevel(logging.WARNING)

        ray.init(dashboard_host="0.0.0.0", runtime_env={"worker_process_setup_hook": configure_logging})
        daft.set_runner_ray()

    daft.set_execution_config(actor_udf_ready_timeout=600)
    daft.set_execution_config(min_cpu_per_task=0)

    samples = {
        "input_path": [
            f"https://{TOS_TEST_DIR_URL}/public/archive/audio_metadata_extract/sample.wav",
        ],
    }
    ds = daft.from_pydict(samples)

    # Using Daft to extract audio metadata
    constructor_kwargs = {
        "timeout": 600,
    }

    ds = ds.with_column(
        "metadata",
        las_udf(
            AudioMetadataExtract,
            construct_args=constructor_kwargs,
            num_cpus=1,
            concurrency=1,
            batch_size=1,
        )(col("input_path")),
    )

    ds.show()
    # ╭────────────────────────────────┬──────────────────────────────────────────────────────────────────────────────╮
    # │ input_path                     ┆ metadata                                                                     │
    # │ ---                            ┆ ---                                                                          │
    # │ String                         ┆ Struct[duration: Float64, format_name: String, bit_rate: Int64, audio_codec: │
    # │                                ┆ String, audio_sample_rate: Int32, audio_channels: Int32]                     │
    # ╞════════════════════════════════╪══════════════════════════════════════════════════════════════════════════════╡
    # │ https://las-public-data-qa.to… ┆ {duration: 49.71102,                                                         │
    # │                                ┆ format_n…                                                                    │
    # ╰────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────╯
最近更新时间:2026.03.30 14:23:36
这个页面对您有帮助吗?
有用
有用
无用
无用