> ## Documentation Index
> Fetch the complete documentation index at: https://docs.miscord.ru/llms.txt
> Use this file to discover all available pages before exploring further.

# DEEPFILTERNET GUIDE RU

# Руководство по интеграции DeepFilterNet в Miscord

## 🎯 Обзор

DeepFilterNet успешно интегрирован в ваше Electron приложение Miscord как продвинутый движок шумоподавления. Теперь у вас есть **три варианта** шумоподавления на выбор:

1. **Браузерные фильтры** - базовое качество, минимальная нагрузка
2. **RNNoise** - хорошее качество, средняя нагрузка
3. **DeepFilterNet** - отличное качество, высокая нагрузка (НОВОЕ!)

## 📦 Что было сделано

### 1. Установлены зависимости

```bash theme={"dark"}
npm install onnxruntime-web
```

### 2. Созданы файлы

#### Сервисы:

* `frontend/src/services/deepFilterNetProcessor.ts` - основной процессор DeepFilterNet
* Обновлен `frontend/src/services/audioProcessingService.ts` - интеграция с существующей системой

#### UI компоненты:

* `frontend/src/components/NoiseSuppressionSettings.tsx` - настройки выбора движка
* `frontend/src/components/ui/card.tsx` - UI компонент карточки
* `frontend/src/components/ui/alert.tsx` - UI компонент уведомлений

#### Документация:

* `frontend/DEEPFILTERNET_INTEGRATION.md` - техническая документация
* `DEEPFILTERNET_GUIDE_RU.md` - это руководство

## ⚠️ ВАЖНО: Требуется модель ONNX

**DeepFilterNet требует модель в формате ONNX для работы!**

### Вариант 1: Использовать готовую модель (Рекомендуется)

1. Скачайте предобученную модель DeepFilterNet3 в формате ONNX:
   * Официальный репозиторий: [https://github.com/Rikorose/DeepFilterNet/releases](https://github.com/Rikorose/DeepFilterNet/releases)
   * Или конвертируйте из PyTorch (см. ниже)

2. Создайте директорию для моделей:
   ```bash theme={"dark"}
   mkdir -p frontend/public/models
   ```

3. Поместите файл модели:
   ```bash theme={"dark"}
   # Скопируйте модель в:
   frontend/public/models/deepfilternet3.onnx
   ```

### Вариант 2: Конвертировать модель из PyTorch

Если у вас есть Python окружение:

```bash theme={"dark"}
# Установите DeepFilterNet
pip install deepfilternet

# Установите зависимости для конвертации
pip install torch onnx

# Скачайте и конвертируйте модель
python -c "
from df import init_df
from df.enhance import enhance, init_df, load_audio, save_audio
import torch

# Загрузка модели
model, df_state, _ = init_df()

# Экспорт в ONNX (упрощенная версия, требует доработки)
dummy_input = torch.randn(1, 1, 480)  # batch, channels, samples
torch.onnx.export(
    model,
    dummy_input,
    'deepfilternet3.onnx',
    input_names=['input'],
    output_names=['output'],
    dynamic_axes={'input': {2: 'samples'}, 'output': {2: 'samples'}}
)
"

# Переместите модель
mv deepfilternet3.onnx frontend/public/models/
```

**Примечание**: Конвертация DeepFilterNet в ONNX может потребовать дополнительной настройки из-за сложной архитектуры модели с рекуррентными состояниями.

### Вариант 3: Упрощенная модель (для тестирования)

Для быстрого тестирования можно использовать упрощенную модель или заглушку, но качество будет ниже.

## 🚀 Использование

### В коде приложения

```typescript theme={"dark"}
import { audioProcessingService } from './services/audioProcessingService';
import { NoiseSuppressionSettings } from './components/NoiseSuppressionSettings';

// В компоненте настроек голоса
function VoiceSettings() {
  const handleEngineChange = (engine: NoiseSuppressionEngine) => {
    audioProcessingService.updateConfig({
      noiseSuppressionEngine: engine
    });
    
    // Уведомить пользователя о необходимости переподключения
    alert('Переподключитесь к голосовому каналу для применения изменений');
  };

  return (
    <div>
      <NoiseSuppressionSettings 
        currentEngine="browser"
        onEngineChange={handleEngineChange}
      />
    </div>
  );
}
```

### Проверка поддержки

```typescript theme={"dark"}
// Проверить поддерживается ли DeepFilterNet на устройстве
const engines = audioProcessingService.getSupportedEngines();
const deepFilterNet = engines.find(e => e.engine === 'deepfilternet');

if (deepFilterNet?.supported) {
  console.log('✅ DeepFilterNet поддерживается');
} else {
  console.log('❌ DeepFilterNet не поддерживается на этом устройстве');
}
```

## 📊 Сравнение движков

| Характеристика    | Браузерные | RNNoise   | DeepFilterNet |
| ----------------- | ---------- | --------- | ------------- |
| **Качество**      | Базовое    | Хорошее   | Отличное      |
| **CPU нагрузка**  | \~1-2%     | \~5-7%    | \~10-15%      |
| **Задержка**      | \~5ms      | \~10-15ms | \~20-30ms     |
| **RAM**           | \~5MB      | \~20MB    | \~50MB        |
| **Размер модели** | -          | -         | \~10MB        |
| **Полоса частот** | До 16kHz   | До 24kHz  | До 48kHz      |
| **WebAssembly**   | Нет        | Да        | Да (SIMD)     |

## 🔧 Настройка производительности

### Оптимизация для слабых устройств

```typescript theme={"dark"}
// В deepFilterNetProcessor.ts можно настроить:
ort.env.wasm.numThreads = 2; // Уменьшить количество потоков
ort.env.wasm.simd = false;   // Отключить SIMD если не поддерживается
```

### Оптимизация для мощных устройств

```typescript theme={"dark"}
ort.env.wasm.numThreads = 8; // Увеличить количество потоков
ort.env.wasm.simd = true;    // Включить SIMD
```

## 🐛 Решение проблем

### Модель не загружается

**Ошибка**: `Failed to load model`

**Решение**:

1. Проверьте, что файл модели существует: `frontend/public/models/deepfilternet3.onnx`
2. Проверьте путь в `deepFilterNetProcessor.ts` (по умолчанию `/models/deepfilternet3.onnx`)
3. Убедитесь, что файл доступен через HTTP (проверьте в DevTools → Network)

### WebAssembly SIMD не поддерживается

**Предупреждение**: `WebAssembly SIMD не поддерживается`

**Решение**:

* Используйте современный браузер (Chrome 91+, Edge 91+, Firefox 89+)
* Или отключите SIMD: `ort.env.wasm.simd = false`

### Высокая нагрузка на CPU

**Проблема**: Приложение тормозит при использовании DeepFilterNet

**Решение**:

1. Уменьшите количество потоков: `ort.env.wasm.numThreads = 2`
2. Переключитесь на RNNoise или браузерные фильтры
3. Закройте другие приложения

### Большая задержка звука

**Проблема**: Заметная задержка при разговоре

**Решение**:

* DeepFilterNet имеет алгоритмическую задержку \~20-30ms
* Для минимальной задержки используйте браузерные фильтры
* Проверьте общую задержку сети (ping)

## 📝 Дальнейшие шаги

### 1. Получение модели

**Срочно**: Для работы DeepFilterNet нужна модель ONNX!

Варианты:

* [ ] Скачать готовую модель с GitHub releases
* [ ] Конвертировать из PyTorch
* [ ] Использовать упрощенную модель для тестирования

### 2. Интеграция в UI

Добавьте компонент `NoiseSuppressionSettings` в настройки голоса:

```typescript theme={"dark"}
// В AudioSettingsModal.tsx или VoiceSettingsModal.tsx
import { NoiseSuppressionSettings } from './NoiseSuppressionSettings';

<NoiseSuppressionSettings 
  currentEngine={currentEngine}
  onEngineChange={handleEngineChange}
/>
```

### 3. Сохранение настроек

Сохраняйте выбранный движок в localStorage или в профиле пользователя:

```typescript theme={"dark"}
// Сохранение
localStorage.setItem('noiseSuppressionEngine', engine);

// Загрузка при старте
const savedEngine = localStorage.getItem('noiseSuppressionEngine') as NoiseSuppressionEngine;
if (savedEngine) {
  audioProcessingService.updateConfig({
    noiseSuppressionEngine: savedEngine
  });
}
```

### 4. Тестирование

* [ ] Протестировать на разных устройствах
* [ ] Измерить нагрузку на CPU
* [ ] Проверить качество шумоподавления
* [ ] Протестировать переключение между движками

## 🎓 Дополнительные ресурсы

* [DeepFilterNet GitHub](https://github.com/Rikorose/DeepFilterNet)
* [DeepFilterNet Paper](https://arxiv.org/abs/2110.05588)
* [ONNX Runtime Web](https://onnxruntime.ai/docs/tutorials/web/)
* [WebAssembly SIMD](https://v8.dev/features/simd)

## 💡 Советы

1. **Начните с браузерных фильтров** - они работают везде и сразу
2. **Переходите на RNNoise** - если нужно лучшее качество
3. **Используйте DeepFilterNet** - только если критически важно максимальное качество
4. **Предупреждайте пользователей** - о необходимости переподключения при смене движка
5. **Мониторьте производительность** - добавьте индикатор нагрузки CPU

## ✅ Checklist готовности к продакшену

* [ ] Модель ONNX размещена в `public/models/`
* [ ] Компонент настроек добавлен в UI
* [ ] Сохранение выбора пользователя реализовано
* [ ] Обработка ошибок добавлена
* [ ] Уведомления о переподключении работают
* [ ] Fallback на браузерные фильтры настроен
* [ ] Документация для пользователей создана
* [ ] Тестирование на разных устройствах проведено

***

**Статус**: ✅ Интеграция кода завершена | ⚠️ Требуется модель ONNX

**Следующий шаг**: Получить и разместить модель DeepFilterNet3 в формате ONNX
