Локальный голосовой ассистент на Ollama и n8n с автообнаружением инструментов | AiManual
AiManual Logo Ai / Manual.
29 Дек 2025 Инструмент

Как построить локальный голосовой ассистент с бесконечными инструментами на n8n

Пошаговое руководство по созданию расширяемого локального голосового ассистента с бесконечными инструментами на базе Ollama, n8n и LiveKit.

Зачем строить локального ассистента, если есть ChatGPT?

Облачные AI-ассистенты вроде ChatGPT и Claude — это удобно, но они имеют ограниченный набор инструментов и требуют отправки данных на сторонние серверы. Локальный ассистент на базе Ollama и n8n предлагает принципиально другой подход: полный контроль над данными, возможность интеграции с любыми внутренними системами и самое главное — бесконечную расширяемость через автоматическое обнаружение workflow в n8n.

💡
Ключевая особенность этой архитектуры — система автоматического обнаружения инструментов. Каждый новый workflow в n8n автоматически становится доступным ассистенту как инструмент, без необходимости переписывания кода.

Архитектура решения

Система состоит из трех основных компонентов:

  • Ollama — локальная LLM для обработки естественного языка
  • n8n — платформа автоматизации, предоставляющая инструменты через workflow
  • LiveKit — обработка голосового ввода и вывода в реальном времени
Компонент Роль Альтернативы
Ollama Локальная LLM (Llama, Mistral, Phi) llama.cpp, text-generation-webui
n8n Оркестрация инструментов и workflow Node-RED, Zapier (облачный)
LiveKit Голосовая связь в реальном времени Deepgram, AssemblyAI (API)

Пошаговая установка и настройка

1 Установка Ollama и выбор модели

Начнем с установки Ollama — платформы для запуска локальных языковых моделей. Для голосового ассистента лучше подходят небольшие, но эффективные модели:

# Установка Ollama
curl -fsSL https://ollama.ai/install.sh | sh

# Загрузка модели (например, Llama 3.2 3B)
ollama pull llama3.2:3b

# Альтернативные модели для разных задач:
ollama pull mistral:7b  # Хороший баланс скорости и качества
ollama pull phi:2.7b    # Очень быстрая, но менее способная

Если у вас слабое железо, рассмотрите использование llama.cpp RPC-server для распределения нагрузки на несколько компьютеров.

2 Настройка n8n с автоматическим обнаружением инструментов

n8n будет сердцем нашей системы, предоставляя инструменты через workflow. Установим его через Docker:

# Запуск n8n в Docker
docker run -d \
  --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

Создадим специальный workflow в n8n, который будет автоматически обнаруживать все доступные инструменты:

// Код для автоматического обнаружения workflow в n8n
// Этот код запускается как webhook и возвращает список доступных инструментов

const availableWorkflows = await getAllWorkflows();
const tools = [];

for (const workflow of availableWorkflows) {
  if (workflow.active && workflow.tags.includes('assistant-tool')) {
    tools.push({
      name: workflow.name,
      description: workflow.description || `Выполняет: ${workflow.name}`,
      parameters: extractParametersFromWorkflow(workflow),
      webhookUrl: `${process.env.N8N_URL}/webhook/${workflow.id}`
    });
  }
}

return { tools };

3 Интеграция LiveKit для голосового взаимодействия

LiveKit обеспечит преобразование речи в текст и обратно. Настроим его с помощью их Python SDK:

from livekit import api
import asyncio

# Инициализация LiveKit
livekit = api.LiveKit(
    url="ws://localhost:7880",
    api_key="your_api_key",
    api_secret="your_api_secret"
)

async def handle_voice_input(audio_stream):
    """Обработка голосового ввода"""
    # Конвертация аудио в текст
    transcript = await livekit.speech_to_text(audio_stream)
    
    # Отправка текста в Ollama через n8n
    response = await process_with_assistant(transcript)
    
    # Конвертация ответа в речь
    audio_output = await livekit.text_to_speech(response)
    return audio_output

Примеры использования и workflow

Сила этой системы — в простоте добавления новых инструментов. Вот несколько примеров workflow в n8n:

Пример 1: Умный домашний ассистент

// n8n workflow для управления умным домом
// Триггер: Webhook от ассистента
// Действие: Включение/выключение устройств через MQTT

const device = items[0].json.device;
const action = items[0].json.action;

// Отправка команды через MQTT
await mqttClient.publish(`home/${device}/control`, action);

return [{ json: { success: true, message: `${device} ${action}ed` } }];

Пример 2: Бизнес-аналитика

// Workflow для генерации отчетов из базы данных
const { startDate, endDate, metric } = items[0].json;

// Запрос к базе данных
const data = await db.query(`
  SELECT * FROM sales 
  WHERE date BETWEEN ? AND ?
`, [startDate, endDate]);

// Анализ данных и формирование отчета
const report = analyzeData(data, metric);

return [{ json: { report, summary: generateSummary(report) } }];

Сравнение с альтернативными решениями

Решение Расширяемость Локальность Сложность
Наш ассистент (Ollama + n8n) Бесконечная (через workflow) Полностью локальный Средняя
ChatGPT + плагины Ограниченная Облачный Низкая
LangChain + локальные модели Высокая (кодирование) Локальный Высокая
Mycroft AI Средняя (скрипты) Локальный Высокая

Оптимизация производительности

Для улучшения работы ассистента можно использовать несколько техник:

  • Кэширование ответов — для частых запросов
  • Оптимизация моделей — использование квантованных версий
  • Асинхронная обработка — для длительных workflow
  • Приоритизация инструментов — на основе истории использования
🚀
Для мультиязычных задач рассмотрите PLaMo 3 (31B) в llama.cpp — японско-английскую модель со Sliding Window Attention, которая эффективно работает с длинными контекстами.

Кому подойдет это решение?

Локальный голосовой ассистент на n8n идеально подходит для:

  1. Разработчиков и инженеров, которым нужна кастомизация под специфичные задачи
  2. Компаний с требованиями к безопасности данных, которые не могут использовать облачные решения
  3. Энтузиастов умного дома, желающих глубокую интеграцию с существующей инфраструктурой
  4. Исследователей и ученых, работающих с чувствительными данными
  5. Предпринимателей, создающих специализированные AI-продукты

Если вам нужно тонко настраивать креативность ответов, изучите статью про «регулятор креатива» в LLaMA 3.2 — одну строку кода, которая меняет тон ответов от сухого до разговорного.

Заключение и дальнейшее развитие

Построение локального голосового ассистента на базе Ollama и n8n открывает уникальные возможности для создания полностью кастомизируемых AI-решений. Ключевое преимущество — система автоматического обнаружения инструментов, которая позволяет расширять функционал ассистента без переписывания его ядра.

Дальнейшее развитие системы может включать:

  • Добавление мультимодальности (обработка изображений и видео)
  • Интеграцию с более широким спектром протоколов (OPC-UA, Modbus для промышленности)
  • Создание распределенной архитектуры для масштабирования
  • Развитие системы обучения на основе обратной связи

Этот подход демонстрирует, что современные локальные AI-решения могут быть не только приватными, но и более гибкими, чем их облачные аналоги, предоставляя настоящую бесконечную расширяемость через визуальное программирование в n8n.