Skip to content

Latest commit

 

History

History
159 lines (130 loc) · 10.9 KB

File metadata and controls

159 lines (130 loc) · 10.9 KB

Product Requirements Document (PRD): RustASR

1. Введение

RustASR — это высокопроизводительная библиотека и CLI-утилита для автоматического распознавания речи (ASR), написанная на языке Rust. Проект использует современные архитектурные подходы (Candle, Qwen3-ASR) для обеспечения локальной работы нейросетей на CPU и GPU (Apple Silicon) без внешних зависимостей (Python, Torch).

2. Цели Продукта

  • Локальность: Полная работа на устройстве пользователя, отсутствие передачи аудио в облако.
  • Производительность: Использование аппаратного ускорения (Metal/Accelerate) через фреймворк candle.
  • Совместимость: Поддержка моделей формата Qwen3-ASR (AuT Encoder).
  • Простота интеграции: Предоставление как CLI-инструмента, так и библиотеки (crate) для встраивания в другие Rust-приложения.

3. Пользовательские Истории (User Stories)

  • Как разработчик, я хочу использовать крейт rust-asr в своем приложении, чтобы добавить функцию голосового ввода без запуска Python-серверов.
  • Как исследователь, я хочу запускать инференс модели Qwen3-ASR через консоль для экспериментов с различными аудиофайлами.
  • Как пользователь, я хочу, чтобы распознавание работало быстро (Real-time factor < 1.0) на моем MacBook.

4. Функциональные Требования

4.1. Библиотека (Core)

  • Загрузка предобученных моделей Qwen3-ASR (формат .safetensors).
  • Поддержка токенизации (текстовой и специальной для аудио).
  • Обработка аудио: прием RAW PCM (float32) и конвертация в Mel-спектрограммы (128 bins).
  • Инференс энкодера AuT (Attention-based Audio Transformer).
  • Инференс декодера Qwen3 (LLM) с поддержкой стриминга текста.

4.2. CLI Утилита

  • Команда infer: Принимает путь к WAV файлу и модели, выводит распознанный текст.
  • Поддержка флагов конфигурации: выбор устройства (cpu/metal), путь к конфигу.

5. Нефункциональные Требования

5.1. Технические Требования

  • Язык: Rust (Edition 2024+).
  • Зависимости: Основной ML-бэкенд — candle. Минимум внешних системных библиотек.
  • Платформы:
    • Приоритет 1: macOS (Apple Silicon M1/M2/M3) с Metal acceleration
    • Приоритет 2: Linux (x86_64) с CPU/CUDA
    • Будущее: Windows (CUDA/Vulkan)

5.2. Метрики Качества

Точность Распознавания

Язык Dataset Целевой WER Приоритет
Английский LibriSpeech test-clean < 5% Высокий
Английский LibriSpeech test-other < 10% Средний
Русский Common Voice < 12% Высокий
Многоязычный Multilingual test set < 15% Средний

Метрики:

  • WER (Word Error Rate): Основная метрика точности
  • CER (Character Error Rate): Дополнительная метрика для иероглифических языков
  • Deviation from Python: Допустимое отклонение от оригинальной реализации < 1% WER

Производительность

Метрика Целевое Значение Платформа Модель
Real-Time Factor (RTF) < 0.3 M1 Mac (Metal) 0.6B
Real-Time Factor (RTF) < 0.5 M1 Mac (Metal) 1.7B
RTF < 1.0 CPU (8 cores) 0.6B
Cold Start Time < 5 секунд Любая Любая
Throughput > 60 минут аудио/час M1 Mac (Metal) 1.7B

Определение RTF: RTF = время_обработки / длительность_аудио

  • RTF < 1.0 означает работу быстрее реального времени

Потребление Ресурсов

Метрика Модель 0.6B Модель 1.7B Ограничение
Peak Memory (RAM) < 2GB < 3GB < 4GB
GPU Memory (VRAM) < 1.5GB < 2.5GB < 4GB
Размер модели на диске ~700MB ~2GB -
CPU утилизация (idle) < 5% < 5% < 10%

5.3. Надежность и Стабильность

  • Uptime: Не применимо (offline приложение)
  • Error Rate: < 1 ошибка на 1000 файлов (исключая ошибки данных)
  • Memory Leaks: Отсутствие утечек памяти при обработке > 1000 файлов подряд
  • Crash Rate: 0 крашей на корректных входных данных

5.4. Совместимость

  • Audio Formats: WAV (16-bit PCM), поддержка других форматов через конвертацию
  • Sample Rates: Автоматический resample до 16kHz из любого источника (8-48kHz)
  • Model Versions: Совместимость с официальными весами Qwen3-ASR-0.6B и 1.7B
  • Minimum OS:
    • macOS 13.0+ (для Metal)
    • Linux kernel 5.0+
    • Rust 1.80+

6. Ограничения и Компромиссы

6.1. Технические Ограничения

  • Максимальная длина аудио: 5 минут за один inference (ограничение памяти)
  • Batch Size: Максимум 4 аудио одновременно на 16GB RAM
  • Latency: Не подходит для real-time streaming (latency > 500ms для начала распознавания)
  • Языки: Поддержка только языков, на которых обучена модель Qwen3-ASR

6.2. Архитектурные Компромиссы

Аспект Выбор Альтернатива Обоснование
ML Framework Candle PyTorch (via bindings) Нативная Rust производительность, меньший размер
Precision FP32 (default) FP16/INT8 Точность > скорость на первом этапе
Attention Standard Flash Attention Упрощение реализации, Flash можно добавить позже
CLI vs Library Оба Только library Покрытие разных use cases

6.3. Не-Цели (Out of Scope)

  • ❌ Real-time streaming распознавание (может быть добавлено в v2.0)
  • ❌ Fine-tuning или дообучение моделей
  • ❌ Распознавание с микрофона (только файлы)
  • ❌ Speaker diarization (кто говорит)
  • ❌ Punctuation restoration (постобработка может быть добавлена)
  • ❌ GUI приложение

7. Метрики Успеха Продукта

7.1. Технические KPI

  • ✅ WER на LibriSpeech test-clean < 5%
  • ✅ RTF < 0.5 на M1 Mac
  • ✅ Точность совпадения с Python в пределах 1%
  • ✅ 0 критических багов в production use

7.2. Качественные Критерии

  • Код проходит cargo clippy без warnings
  • Покрытие тестами > 80%
  • Документация полная и актуальная
  • README содержит quick start guide

7.3. Критерии Релиза v1.0

  • Все 4 фазы завершены
  • CLI работает стабильно
  • Библиотека опубликована на crates.io
  • Написаны примеры использования
  • Performance соответствует целевым метрикам
  • Пройдены acceptance тесты

8. Архитектура и План Реализации

Техническая реализация разбита на 4 фазы. Подробные планы лежат в папке docs/:

9. Риски Проекта

Риск Вероятность Влияние Митигация
Несовпадение точности с Python Средняя Критическое Пошаговая верификация на каждой фазе
Проблемы производительности Средняя Высокое Профилирование, оптимизации, использование Metal
Изменения в Qwen3-ASR модели Низкая Среднее Версионирование моделей, тесты совместимости
Нехватка ресурсов для оптимизации Средняя Среднее Фокус на core функциональность сначала

10. Референсы