You need to enable JavaScript to run this app.
AI 数据湖服务

AI 数据湖服务

复制全文
音频理解
音频理解(Kimi-Audio 系列模型)
复制全文
音频理解(Kimi-Audio 系列模型)

算子介绍

描述

Kimi-Audio 多模态音频理解模型 - 音频语义解析与自然语言描述生成

核心功能

  • 多模态音频处理
  • 支持 URL/Base64编码/二进制流 三种音频格式
  • 音频-语言联合建模
  • 实现音频内容到语义空间的精准映射
  • 对话式提示支持
  • 通过 prompt 参数引导生成方向
  • 资源使用
  • 推荐使用48G及以上显存的GPU

场景优化

  • 中英文混合场景优化:特别针对中文语义增强
  • 支持多种音频理解任务:ASR、音频描述、情感识别、内容分析

Daft 调用

算子参数

输入

输入列名

说明

audios

包含音频数据的列,元素类型为字符串或者二进制。

输出

处理后的列,元素为每个音频的理解结果。

参数

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

参数名称

类型

默认值

描述

audio_src_type

str

audio_url

音频数据源类型,支持三种格式 可选值:["audio_url", "audio_base64", "audio_binary"] 默认值:"audio_url"

model_path

str

/opt/las/models

本地模型文件存储的绝对路径,默认为容器内预置路径。当使用自定义模型时需修改此路径 默认值:"/opt/las/models"

model_name

str

moonshotai/Kimi-Audio-7B-Instruct

支持的音频语言模型版本,当前仅支持 Kimi-Audio系列模型 可选值:["moonshotai/Kimi-Audio-7B-Instruct"] 默认值:"moonshotai/Kimi-Audio-7B-Instruct"

prompt

str

请分析这段音频的内容。

用户理解音频内容的提示词,模型会根据提示词来生成音频的分析结果。 默认值:"请分析这段音频的内容。"

batch_size

int

4

分组处理的音频数量。较大值可能增加显存消耗。 默认值:4

text_temperature

float

0.0

文本生成的温度参数,控制生成文本的随机性。0.0表示确定性生成 默认值:0.0

text_top_k

int

5

文本生成时考虑的top-k候选词数量 默认值:5

text_repetition_penalty

float

1.0

文本重复惩罚系数,避免生成重复内容 默认值:1.0

text_repetition_window_size

int

16

文本重复检测的窗口大小 默认值:16

rank

int or None

None

指定使用的GPU设备编号(多卡环境有效)。例如:0表示第一张GPU,1表示第二张GPU 默认值:None

调用示例

下面的代码展示了如何使用 daft 运行算子对音频进行理解和内容分析。

from __future__ import annotations

import os

import daft
from daft import col
from daft.las.functions.multimodal.kimi_audio_understanding import KimiAudioUnderstanding
from daft.las.functions.udf import las_udf

if __name__ == "__main__":
    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.%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)

        ray.init(dashboard_host="0.0.0.0", runtime_env={"worker_process_setup_hook": configure_logging})
        daft.context.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/黑神话悟空对话.mp3"
        ]
    }

    audio_src_type = "audio_url"
    model_path = os.getenv("MODEL_PATH", "/opt/las/models")
    model_name = "moonshotai/Kimi-Audio-7B-Instruct"
    prompt = """
    你是一名专业的音频分析助手。请全面理解输入音频,并按以下维度进行有条理的说明:
    内容概括:简要描述音频的主要内容、主题或事件。
    说话人信息:识别有多少个说话人,并简要描述他们的说话风格、性别或情绪。
    情绪与语气:总结音频中情绪状态及其变化(如平静、激动、紧张、愉快)。
    关键信息提取:提取音频中的核心信息点或指令,按时间顺序简要列出。
    背景环境:分析是否存在背景音乐、噪音或特殊声效,并描述其特征。
    请使用结构化自然语言输出,既简洁又完整,避免遗漏重要信息。
    """
    text_temperature = 0.0
    text_top_k = 5
    text_repetition_penalty = 1.0
    text_repetition_window_size = 16
    batch_size = 1
    rank = None

    df = daft.from_pydict(samples)
    df = df.with_column(
        "audio_analysis",
        las_udf(
            KimiAudioUnderstanding,
            construct_args={
                "audio_src_type": audio_src_type,
                "model_path": model_path,
                "model_name": model_name,
                "prompt": prompt,
                "text_temperature": text_temperature,
                "text_top_k": text_top_k,
                "text_repetition_penalty": text_repetition_penalty,
                "text_repetition_window_size": text_repetition_window_size,
                "batch_size": batch_size,
                "rank": rank,
            },
            num_gpus=1,
            batch_size=1,
            concurrency=1,
        )(col("audio_path")),
    )
    df.show()

    # ╭────────────────────────────────┬─────────────────────────────────────────────────────────────╮
    # │ audio_path                     ┆ audio_analysis                                              │
    # │ ---                            ┆ ---                                                         │
    # │ Utf8                           ┆ Utf8                                                        │
    # ╞════════════════════════════════╪═════════════════════════════════════════════════════════════╡
    # │ tos://las-cn-beijing-public-o… ┆ 内容概括:这段音频是一位老人在讲述自己的经历和感受,内容涉及…         │
    # ╰────────────────────────────────┴─────────────────────────────────────────────────────────────╯
最近更新时间:2026.01.08 19:15:09
这个页面对您有帮助吗?
有用
有用
无用
无用