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

Lake AI Service

Copy page
Download PDF
Audio recognition
Audio multilingual recognition (whisper)
Copy page
Download PDF
Audio multilingual recognition (whisper)

Operator introduction

Description

AudioLidWhisper audio language recognition processor

Key features

  • Audio decoding: supports multiple audio formats → 16kHz waveform data
  • Language detection: recognizes dozens of language codes based on the Whisper-large model
  • Full name mapping: automatically converts language codes to full language names

Technical features

  • Loads models based on the ModelScope framework
  • 16kHz sample rate audio preprocessing pipeline

Typical application scenarios

  • ✅ Speech content analysis – multilingual audio classification
  • ✅ Streaming media processing – real-time language recognition
  • ✅ Speech datasets – automated language annotation

Recommendation

  • To improve accuracy, first standardize upstream audio to wav format before performing language recognition.

Daft invocation

Operator parameters

Input

Input column name

Note

audios

Array containing audio data. Supported formats: - raw audio byte data - audio file paths, such as: TOS url, http url, local file path

Output

Structured array, each element contains:

  • language_code: language code
  • language_code_full_name: full English language name

Parameters

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

Parameter name

Type

Default value

Description

model_path

str

/opt/las/models

Model storage root path Default value: "/opt/las/models"

model_name

str

iic/speech_whisper-large_lid_multilingual_pytorch

Pre-trained model name Default value: "iic/speech_whisper-large_lid_multilingual_pytorch"

model_version

str

v2.0.4

Model version identifier Default value: "v2.0.4"

rank

int

0

GPU device identifier Default value: 0

Examples

The following code demonstrates how to use daft to run the operator for audio language recognition.

from __future__ import annotations

import logging
import os

import ray

import daft
from daft import col
from daft.las.functions.audio.audio_lid_whisper import AudioLidWhisper
from daft.las.functions.udf import las_udf

if __name__ == "__main__":
    if os.getenv("DAFT_RUNNER", "ray") == "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.%s".format(),
            )
            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)

        import ray

        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)

    tos_dir_url = os.getenv("TOS_DIR_URL", "las-cn-beijing-public-online.tos-cn-beijing.volces.com")
    samples = {
        "audio_path": [
            f"https://{tos_dir_url}/public/shared_audio_dataset/.wav"
        ]
    }

    model_path = os.getenv("MODEL_PATH", "/opt/las/models")
    model_name = "iic/speech_whisper-large_lid_multilingual_pytorch"
    model_version = "v2.0.4"
    num_gpus = 1
    rank = 0

    df = daft.from_pydict(samples)
    df = df.with_column(
        "lid_result",
        las_udf(
            AudioLidWhisper,
            construct_args={
                "model_path": model_path,
                "model_name": model_name,
                "model_version": model_version,
                "rank": rank,
            },
            num_gpus=1,
            batch_size=1,
            concurrency=1,
        )(col("audio_path")),
    )
    df.show()

    # ╭────────────────────────────────┬────────────────────────────────────────────────────────────╮
    # │ audio_path                     ┆ lid_result                                                 │
    # │ ---                            ┆ ---                                                        │
    # │ Utf8                           ┆ Struct[language_code: Utf8, language_code_full_name: Utf8] │
    # ╞════════════════════════════════╪════════════════════════════════════════════════════════════╡
    # │ tos://las-cn-beijing-public-o… ┆ {language_code: zh,                                        │
    # │                                ┆ language_…                                                 │
    # ╰────────────────────────────────┴────────────────────────────────────────────────────────────╯
Last updated: 2026.05.12 19:06:34