five

KaniTTS-research-team/emolia_select

收藏
Hugging Face2026-03-28 更新2026-03-29 收录
下载链接:
https://hf-mirror.com/datasets/KaniTTS-research-team/emolia_select
下载链接
链接失效反馈
官方服务:
资源简介:
--- dataset_info: features: - name: dev_id dtype: string - name: verdict dtype: string - name: ch1_prob dtype: float64 - name: ch2_comb dtype: float64 - name: ch3_transient dtype: float64 - name: audio dtype: audio splits: - name: train num_examples: 1000 license: mit language: - en tags: - audio - tts - quality-filter - speech size_categories: - 1K<n<10K --- # emolia_select — Фильтр качества аудио для TTS ## Обзор 1000 аудиозаписей из датасета `emolia_selected_dev`, прогнанных через 3-канальный фильтр качества. Каждый сэмпл ресемплирован в **24 кГц** и оценён тремя независимыми каналами, детектирующими разные типы дефектов. **Отсортировано от худшего к лучшему** (по ch1_prob убыванию). | Verdict | Кол-во | % | Описание | |---|---|---|---| | bad | 617 | 61.7% | Плохое качество — отбраковка | | borderline | 204 | 20.4% | Сомнительное — требует ручной проверки | | good | 179 | 17.9% | Хорошее качество — можно использовать для TTS | --- ## Колонки | Колонка | Тип | Описание | |---|---|---| | `dev_id` | string | Уникальный ID записи (UUID) | | `verdict` | string | Итоговый вердикт: `good`, `borderline` или `bad` | | `ch1_prob` | float | Скор канала 1 — вероятность "плохого" от LogReg (0.0–1.0) | | `ch2_comb` | float | Скор канала 2 — spectral_autocorr_peak (детекция comb filter) | | `ch3_transient` | float | Скор канала 3 — crest_factor_std (целостность транзиентов) | | `audio` | Audio | Аудиофайл, ресемплированный в 24 кГц | --- ## Как работает 3-канальный фильтр ### Пайплайн ``` Аудио (любой SR) → Ресемплинг в 24 кГц → Извлечение 12 метрик → 3 канала → Вердикт ``` ### Шаг 1: Ресемплинг Все аудио приводятся к **24 кГц** через `librosa.resample()`. Это убирает конфаунд по sample rate — без этого шага модель учит SR вместо качества (в датасете записи с разными SR: 24 и 32 кГц). ### Шаг 2: Извлечение 12 метрик Из каждого аудио вычисляются 12 акустических признаков: | # | Метрика | Что измеряет | |---|---|---| | 1 | `spectral_bandwidth_mean` | Ширина спектра вокруг центроида (Гц). Главный индикатор | | 2 | `band_8k_plus_ratio` | Доля энергии выше 8 кГц. У плохих записей = 0 | | 3 | `mfcc_5_mean` | 5-й кепстральный коэффициент. Спектральная структура 1.5–4 кГц | | 4 | `mfcc_7_mean` | 7-й кепстральный коэффициент. Детализация средних частот | | 5 | `spec_contrast_b6_mean` | Спектральный контраст в верхней полосе (>6.4 кГц) | | 6 | `band_300_3400_ratio` | Доля энергии в телефонной полосе 300–3400 Гц | | 7 | `spectral_rolloff_mean` | Частота, ниже которой 85% энергии | | 8 | `hf_temporal_std` | Временная нестабильность ВЧ-энергии (4–8 кГц) | | 9 | `hf_temporal_mean` | Средняя доля ВЧ-энергии по фреймам | | 10 | `spectral_autocorr_peak` | Автокорреляция спектра — детекция comb filter | | 11 | `crest_factor_std` | Разброс пиковости по фреймам — целостность транзиентов | | 12 | `crest_factor_p95` | 95-й перцентиль пиковости по фреймам | ### Шаг 3: Три независимых канала Каждый канал ловит свой тип дефекта: #### Канал 1 — LogReg модель (`ch1_prob`) - **Вход:** 12 метрик → StandardScaler → LogisticRegression - **Выход:** `ch1_prob` — вероятность "плохого" (0.0–1.0) - **Порог bad:** `ch1_prob > 0.45` - **Порог borderline:** `ch1_prob > 0.20` - **Что ловит:** Обрезку полосы частот (телефония, VoIP, кодеки G.711/AMR/speex), общие спектральные дефекты - **Обучен на:** 108 вручную размеченных сэмплов (50 good + 58 bad) - **Это главный канал** — ловит ~70% дефектов #### Канал 2 — Comb filter (`ch2_comb`) - **Вход:** одна метрика `spectral_autocorr_peak` - **Порог:** `> 0.987` → bad - **Что ловит:** Металлический резонанс / comb filter. Звучит как "из бочки" или "робот" - **Зачем отдельно:** У таких записей bandwidth нормальный, поэтому канал 1 даёт им низкий bad_prob (0.06–0.49). Только автокорреляция ловит периодические пики в спектре - **Редкий дефект** — срабатывает на ~1% сэмплов #### Канал 3 — Целостность транзиентов (`ch3_transient`) - **Вход:** одна метрика `crest_factor_std` - **Порог:** `< 1.20` → bad - **Что ловит:** Артефакты взрывных согласных /p/ /b/ /t/. Когда кодек "съедает" резкие звуки. У хороших записей разброс пиковости большой (есть острые и тихие моменты), у плохих — всё сглажено - **Срабатывает на:** ~21% сэмплов ### Шаг 4: Итоговый вердикт ``` if ch1_prob > 0.45 OR ch2_comb > 0.987 OR ch3_transient < 1.20: verdict = "bad" elif ch1_prob > 0.20: verdict = "borderline" else: verdict = "good" ``` **Логика OR** для bad — достаточно одного сработавшего канала. Для TTS ошибка "пропустить плохое" дороже чем "выбросить хорошее". **Borderline** — зона неопределённости канала 1: модель не уверена (0.20–0.45). Рекомендуется ручная проверка. --- ## Таблица порогов | Канал | Метрика | Порог bad | Порог borderline | Направление | Срабатываний | |---|---|---|---|---|---| | Ch1 | `ch1_prob` | **> 0.45** | **> 0.20** | чем выше — тем хуже | 617 / 1000 | | Ch2 | `spectral_autocorr_peak` | **> 0.987** | — | чем выше — тем хуже | 11 / 1000 | | Ch3 | `crest_factor_std` | **< 1.20** | — | чем ниже — тем хуже | 210 / 1000 | --- ## Порядок сортировки Датасет отсортирован по `ch1_prob` **по убыванию** (сначала худшие): - **Строка 0:** худший сэмпл (ch1_prob = 0.976) - **Строка 500:** середина - **Строка 999:** лучший сэмпл (ch1_prob = 0.008) --- ## Как использовать ```python from datasets import load_dataset ds = load_dataset("KaniTTS-research-team/emolia_select", split="train") # Только хорошие good = ds.filter(lambda x: x["verdict"] == "good") print(f"Good: {len(good)}") # Хорошие + сомнительные not_bad = ds.filter(lambda x: x["verdict"] != "bad") print(f"Not bad: {len(not_bad)}") # Свой порог (менее агрессивный) custom = ds.filter(lambda x: x["ch1_prob"] < 0.5 and x["ch2_comb"] < 0.99 and x["ch3_transient"] > 1.0) print(f"Custom: {len(custom)}") # Послушать худший сэмпл print(ds[0]["verdict"], ds[0]["ch1_prob"]) # ds[0]["audio"] — массив 24 кГц ``` --- ## Главный вывод Основная проблема качества в этом датасете — **bandwidth truncation** (обрезка полосы частот), а не шум или клиппинг. Плохие записи имеют резкий срез на 3–5 кГц (типичные телефонные/VoIP кодеки), хорошие — плавное затухание до 10–12 кГц. Метрики которые **НЕ работают** для этого датасета: SNR, HNR, voiced_ratio, clip_ratio. --- ## Три типа дефектов | Тип | Кол-во | Как звучит | Что ловит | |---|---|---|---| | **Bandwidth truncation** | ~70% bad | Глухо, как по телефону | Канал 1 (bandwidth, rolloff, flatness) | | **Comb filter** | ~2% bad | Металлический звон, "из бочки" | Канал 2 (autocorr peak) | | **Transient artifacts** | ~20% bad | Смазанные согласные, "каша" | Канал 3 (crest factor) | --- ## Источник - **Исходный датасет:** `KaniTTS-research-team/emolia_selected_dev` (1000 сэмплов) - **Модель фильтра:** Обучена на 108 вручную размеченных крайних случаях (50 good + 58 bad) - **Анализ:** `KaniTTS-research-team/emolia_dermo_recognition` - **Аудио:** Ресемплировано в 24 кГц --- *Создано 2026-03-28 · 3-канальный фильтр · 12 метрик · 24 кГц*
提供机构:
KaniTTS-research-team
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作