You need to enable JavaScript to run this app.
Lake AI Service

Lake AI Service

Copy page
Download PDF
Audio processing
Audio metadata extraction
Copy page
Download PDF
Audio metadata extraction

Operator introduction

Description

Audio metadata extraction operator

Function

  1. Supported audio file formats
  2. Extract complete audio metadata information, including:
  • Basic information: duration, format, bit rate
  • Audio information: sample rate, number of channels, encoder
  1. Use the ffprobe tool to extract metadata
  2. Supports local files, remote files (TOS/S3), HTTP/HTTPS links

Return

Structured array containing the following fields:

  • duration (float): audio duration (seconds)
  • format_name (string): format name
  • bit_rate (int64): bit rate
  • audio_codec (string): audio encoder name
  • audio_sample_rate (int32): audio sample rate
  • audio_channels (int32): number of audio channels

Daft invocation

Operator parameters

Input

Input column name

Note

input_col

Array of input file paths

Output

Structured array containing metadata

Parameters

If a parameter does not have a default value, it is required

Parameter name

Type

Default value

Description

timeout

int or None

None

ffprobe command execution timeout (seconds). Default value: None (no timeout)

Examples

The following code demonstrates how to use Daft (for distributed environments) to run the operator and extract metadata information from audio files.

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…                                                                    │
    # ╰────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────╯
Last updated: 2026.05.12 19:06:34