Skip to content

Latest commit

 

History

History
80 lines (60 loc) · 4.67 KB

File metadata and controls

80 lines (60 loc) · 4.67 KB

Фаза 2: Feature Extractor (Аудио Процессинг)

Критически важная фаза. Если входные данные не будут совпадать с обученными, модель не заработает.

Задачи

2.1. Аудио I/O

  • Реализовать чтение WAV файлов (используя hound или symphonia).
  • Ресемплинг до 16kHz (требуемая частота Qwen3-ASR).
  • Поддержка различных форматов входных данных (mono/stereo, разные sample rates).

2.2. Mel Spectrogram

  • Реализовать STFT (Short-Time Fourier Transform).
  • Реализовать Mel-фильтры (128 mel bins).
  • Параметры (из спецификации Qwen3-ASR):
    • sample_rate: 16,000 Hz
    • n_fft: 400 (или 512 для оптимизации FFT)
    • hop_length: 160 samples (10 ms)
    • win_length: 400 samples (25 ms)
    • n_mels: 128
    • window: Hann window
  • Логарифмирование спектрограммы (log mel spectrogram).
  • Нормализация (mean/std или min-max, уточнить из конфига модели).

2.3. Верификация

  • Создать Python-скрипт, сохраняющий спектрограмму для тестового аудио в .npy формате.
  • Написать Rust-тест, сравнивающий тензоры (допуск 1e-5).
  • Протестировать на нескольких аудио-файлах разной длительности.

✅ Критерии Завершения (Definition of Done)

  • Rust-код производит идентичные спектрограммы с точностью до 1e-5 по сравнению с Python-реализацией
  • Код обрабатывает аудио файлы длительностью от 1 до 30 секунд без ошибок
  • Написаны unit-тесты для каждого компонента (resampling, STFT, mel filters)
  • Документация содержит примеры использования API

📊 Метрики Успеха

  • Скорость обработки: < 0.1 RTF (Real-Time Factor) для аудио длительностью 10 секунд
  • Точность совпадения с Python: MSE < 1e-10
  • Покрытие тестами: > 90%

⚠️ Риски и Митигация

Риск Вероятность Влияние Митигация
Несовпадение параметров с оригиналом Средняя Критическое Верификация через сравнение с Python на каждом этапе
Проблемы с ресемплингом (артефакты) Низкая Высокое Использовать проверенные библиотеки (rubato, samplerate)
Проблемы с производительностью FFT Средняя Среднее Использовать rustfft с оптимизациями, профилирование
Различия в реализации mel filters Средняя Критическое Точное копирование формул из librosa/torchaudio

🔗 Зависимости

Зависит от:

  • Фаза 1: Настроенное окружение, базовые утилиты

Блокирует:

  • Фаза 3: AuT Encoder не сможет работать без корректных входных данных

🧪 План Тестирования

  1. Unit-тесты:

    • Тест ресемплинга с известными синусоидами
    • Тест STFT с простыми сигналами
    • Тест mel filters с проверкой формы выхода
  2. Integration-тесты:

    • End-to-end: WAV → Mel Spectrogram
    • Сравнение с эталонными данными из Python
  3. Benchmark-тесты:

    • Измерение скорости на файлах 1s, 5s, 10s, 30s
    • Профилирование узких мест (FFT, mel filters)

📚 Референсы