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

Lake AI Service

Copy page
Download PDF
Audio processing
Audio to MP3
Copy page
Download PDF
Audio to MP3

Operator introduction

Description

Audio format conversion processor that converts various audio formats to MP3

Key features

  • Supports converting multiple audio formats to MP3
  • Customizable audio quality and encoding parameters
  • Supports fine control of audio sample rate and bitrate
  • Automatically selects the first audio track
  • Supports local files, HTTP/HTTPS URLs, and TOS/S3 storage

Format support

  • Input: WAV, FLAC, AAC, M4A, OGG, WMA, APE, and other mainstream audio formats
  • Output: MP3 (.mp3)
  • Audio codec: LAME MP3 encoder
  • Sample rate: 8kHz–96kHz
  • Bitrate: 32kbps–320kbps

Daft invocation

Operator parameters

Input

Input column name

Description

input_col

An array containing input audio paths (supports local paths, HTTP/HTTPS URLs, TOS/S3 URLs)

output_col

An array containing output MP3 file paths

Output

An array containing the conversion result paths. Returns the output path on success, returns None on failure.

Parameters

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

Parameter name

Type

Default value

Description

bitrate

str

192k

Audio bitrate, such as "128k", "192k", "256k", "320k". Default value: "192k"

sample_rate

int or None

None

Audio sample rate, such as 22050, 44100, 48000. If None, the original sample rate is retained. Default value: None

quality

int

2

MP3 encoding quality, range 0–9, 0 is the highest quality and slowest, 9 is the lowest quality and fastest. Default value: 2

extra_params

list or None

None

Additional ffmpeg parameter list, such as ["-ac", "1"]. Default value: None

timeout

int or None

None

Timeout for processing a single audio file (seconds). If None, there is no limit. Default value: None

Examples

The following code demonstrates how to use Daft (for distributed scenarios) to run the operator for converting audio to MP3 format.

from __future__ import annotations

import os

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

if __name__ == "__main__":
    # The converted audio will be saved to the specified TOS path. Therefore, you need to set environment variables to ensure write permissions to TOS, including: ACCESS_KEY, SECRET_KEY, TOS_ENDPOINT, TOS_REGION, TOS_TEST_DIR
    TOS_TEST_DIR_URL = os.getenv("TOS_TEST_DIR_URL", "las-cn-beijing-public-online.tos-cn-beijing.volces.com")
    TOS_TEST_DIR = os.getenv("TOS_TEST_DIR", "tos_bucket")

    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_convert_to_mp3/sample.wav"],
        "output_path": [f"tos://{TOS_TEST_DIR}/audio_convert_to_mp3/sample_converted.mp3"],
    }
    ds = daft.from_pydict(samples)

    # Using Daft to convert audio to MP3 format
    constructor_kwargs = {
        "bitrate": "192k",
        "sample_rate": 44100,
        "audio_map": "auto",
        "quality": 2,
        "extra_params": [],
    }

    ds = ds.with_column(
        "convert_result",
        las_udf(
            AudioConvertToMp3,
            construct_args=constructor_kwargs,
            num_cpus=1,
            concurrency=1,
            batch_size=1,
        )(col("input_path"), col("output_path")),
    )

    ds.show()
    # ╭────────────────────────────────┬────────────────────────────────┬────────────────────────────────╮
    # │ input_path                     ┆ output_path                    ┆ convert_result                 │
    # │ ---                            ┆ ---                            ┆ ---                            │
    # │ String                         ┆ String                         ┆ String                         │
    # ╞════════════════════════════════╪════════════════════════════════╪════════════════════════════════╡
    # │ https://las-public-data-qa.to… ┆ tos://tos_bucket/audio_conver… ┆ tos://tos_bucket/audio_conver… │
    # ╰────────────────────────────────┴────────────────────────────────┴────────────────────────────────╯
Last updated: 2026.05.12 19:06:33