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

AI 数据湖服务

复制全文
音频处理
音频质量评分(DNSMOS)
复制全文
音频质量评分(DNSMOS)

算子介绍

描述

音频质量评分模块 - 使用 DNSMOS 模型评估音频质量

核心功能

  • 使用 DNSMOS (Deep Noise Suppression Mean Opinion Score) 模型进行音频质量评估
  • 提供整体质量 (OVRL)、信号质量 (SIG)、背景噪声 (BAK) 三个维度的评分
  • 评分范围在 1 到 5 之间,分数越高表示音频质量越好
  • 支持自动采样率转换和音频预处理
  • 适用于语音质量评估、音频筛选、质量控制等场景

评分维度说明

  • OVRL (Overall): 音频整体质量评分,综合评估音频的可听性
  • SIG (Signal): 信号质量评分,评估语音信号的清晰度和自然度
  • BAK (Background): 背景噪声评分,评估背景噪声的干扰程度

Daft 调用

算子参数

输入

输入列名

说明

audio_col

包含音频二进制数据的数组,每个元素应为一段完整的音频内容

输出

结构化结果数组,其中每个元素包含以下字段:

  • ovrl (float): 音频整体质量评分,综合评估音频的可听性,范围在 1.0 到 5.0 之间
  • sig (float): 信号质量评分,评估语音信号的清晰度和自然度,范围在 1.0 到 5.0 之间
  • bak (float): 背景噪声评分,评估背景噪声的干扰程度,范围在 1.0 到 5.0 之间

处理失败的音频返回包含 null 值的结构

参数

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

参数名称

类型

默认值

描述

model_path

str

/opt/las/models

本地 DNSMOS 模型文件所在目录 默认值:"/opt/las/models"

device

str

cpu

运行模型的设备('cuda' 或 'cpu') 默认值:"cpu"

is_personalized_mos

bool

False

是否使用个性化 MOS 评分 默认值:False

调用示例

下面的代码展示了如何使用 daft 运行算子对音频进行质量评分。

from __future__ import annotations

import os

import daft
from daft import col
from daft.las.functions.audio import AudioQualityScore
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")
    model_path = os.getenv("MODEL_PATH", "/opt/las/models")

    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.context.set_runner_ray()

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

    samples = {"audio_path": [f"https://{TOS_TEST_DIR_URL}/public/archive/audio_quality_score/test_audio.wav"]}
    df = daft.from_pydict(samples)
    df = df.with_column(
        "audio_quality_score",
        las_udf(
            AudioQualityScore,
            construct_args={"model_path": model_path, "device": "cuda"},
            num_gpus=1,
            batch_size=8,
            concurrency=1,
        )(col("audio_path")),
    )

    df.show()
    # ╭────────────────────────────────┬───────────────────────────────────────────────────╮
    # │ audio_path                     ┆ audio_quality_score                               │
    # │ ---                            ┆ ---                                               │
    # │ String                         ┆ Struct[ovrl: Float64, sig: Float64, bak: Float64] │
    # ╞════════════════════════════════╪═══════════════════════════════════════════════════╡
    # │ https://las-public-data-qa.to… ┆ {ovrl: 1.7469981067293439,                        │
    # │                                ┆ si…                                               │
    # ╰────────────────────────────────┴───────────────────────────────────────────────────╯
最近更新时间:2026.01.08 19:15:09
这个页面对您有帮助吗?
有用
有用
无用
无用