Критически важная фаза. Если входные данные не будут совпадать с обученными, модель не заработает.
- Реализовать чтение WAV файлов (используя
houndилиsymphonia). - Ресемплинг до 16kHz (требуемая частота Qwen3-ASR).
- Поддержка различных форматов входных данных (mono/stereo, разные sample rates).
- Реализовать 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, уточнить из конфига модели).
- Создать Python-скрипт, сохраняющий спектрограмму для тестового аудио в
.npyформате. - Написать Rust-тест, сравнивающий тензоры (допуск 1e-5).
- Протестировать на нескольких аудио-файлах разной длительности.
- 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 не сможет работать без корректных входных данных
-
Unit-тесты:
- Тест ресемплинга с известными синусоидами
- Тест STFT с простыми сигналами
- Тест mel filters с проверкой формы выхода
-
Integration-тесты:
- End-to-end: WAV → Mel Spectrogram
- Сравнение с эталонными данными из Python
-
Benchmark-тесты:
- Измерение скорости на файлах 1s, 5s, 10s, 30s
- Профилирование узких мест (FFT, mel filters)