Whisper + Ollama: полная офлайн транскрибация и обработка аудио | AiManual
AiManual Logo Ai / Manual.
01 Янв 2026 Инструмент

Транскрибация аудио локально: Whisper + Ollama для полного офлайн-контроля

Настройте локальную систему транскрибации Whisper с суммированием через Ollama. Без интернета, с полной приватностью данных.

Почему локальная транскрибация — это будущее приватности

В эпоху облачных сервисов мы привыкли отправлять свои голосовые сообщения, интервью и записи встреч на серверы крупных компаний. Но что, если эти записи содержат конфиденциальную информацию? Или вы работаете в условиях ограниченного интернета? Решение — локальная транскрибация. Сочетание Whisper от OpenAI для распознавания речи и Ollama для запуска локальных языковых моделей создает мощный стек для полной автономной обработки аудио.

Комбинация Whisper + Ollama позволяет не только транскрибировать аудио, но и сразу же суммировать, анализировать или переводить текст — всё на вашем компьютере, без отправки данных в интернет.

Архитектура решения: от аудио к анализу

Наш стек состоит из двух основных компонентов:

  • Whisper — модель распознавания речи, которая работает локально в нескольких размерах (от tiny до large)
  • Ollama — платформа для запуска локальных LLM (Llama, Mistral, Gemma и другие)
  • GUI или CLI интерфейс — на выбор в зависимости от ваших предпочтений
КомпонентРольТребования
WhisperТранскрибация аудио в текстPython, ~2-10 ГБ VRAM
OllamaОбработка и анализ текста4-16 ГБ RAM
ИнтерфейсУправление процессомЗависит от выбора

Установка и настройка

1Установка Whisper

Начнем с установки Whisper. Для работы потребуется Python 3.8+ и видеокарта с поддержкой CUDA (рекомендуется) или процессор.

# Установка Whisper через pip
pip install openai-whisper

# Альтернатива: установка из репозитория
# git clone https://github.com/openai/whisper.git
# cd whisper
# pip install -e .

# Дополнительные зависимости для CUDA
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
💡
Если у вас нет мощной видеокарты, используйте модели Whisper tiny или base — они работают на CPU с приемлемой скоростью.

2Установка Ollama

Ollama устанавливается очень просто. Перейдите на официальный сайт или используйте командную строку:

# Linux/macOS
curl -fsSL https://ollama.ai/install.sh | sh

# Windows
# Скачайте установщик с сайта ollama.ai

# Проверка установки
ollama --version

# Загрузка модели (например, Mistral 7B)
ollama pull mistral

3Интеграция компонентов

Создадим простой Python скрипт, который объединяет Whisper и Ollama:

import whisper
import subprocess
import json
import tempfile
import os

class LocalTranscriber:
    def __init__(self, model_size="base", ollama_model="mistral"):
        """Инициализация локального транскрибатора"""
        print(f"Загрузка модели Whisper {model_size}...")
        self.whisper_model = whisper.load_model(model_size)
        self.ollama_model = ollama_model
        
    def transcribe(self, audio_path):
        """Транскрибация аудио файла"""
        print(f"Транскрибация {audio_path}...")
        result = self.whisper_model.transcribe(audio_path)
        return result["text"]
    
    def summarize_with_ollama(self, text):
        """Суммирование текста через Ollama"""
        prompt = f"Суммаризируй следующий текст:\n\n{text}"
        
        # Создаем временный файл для промпта
        with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=False) as f:
            f.write(prompt)
            temp_path = f.name
        
        try:
            # Вызов Ollama через CLI
            cmd = ["ollama", "run", self.ollama_model, f"< {temp_path}"]
            result = subprocess.run(
                cmd,
                shell=True if os.name == 'nt' else False,
                capture_output=True,
                text=True,
                encoding='utf-8'
            )
            return result.stdout
        finally:
            os.unlink(temp_path)
    
    def process_audio(self, audio_path):
        """Полный процесс: транскрибация + суммаризация"""
        transcription = self.transcribe(audio_path)
        print(f"Транскрипция:\n{transcription[:500]}...")
        
        summary = self.summarize_with_ollama(transcription)
        return {
            "transcription": transcription,
            "summary": summary
        }

# Использование
if __name__ == "__main__":
    transcriber = LocalTranscriber(model_size="base")
    result = transcriber.process_audio("meeting_recording.mp3")
    print(f"Резюме:\n{result['summary']}")

GUI интерфейсы для удобства работы

Если командная строка — не ваш выбор, есть несколько графических интерфейсов:

  • Whisper WebUI — веб-интерфейс для Whisper с возможностью выбора модели и настроек
  • Buzz — кроссплатформенное приложение с поддержкой Whisper
  • Самописный Streamlit интерфейс — быстро развертываемый веб-интерфейс

Вот пример простого интерфейса на Streamlit:

import streamlit as st
import whisper
import tempfile
from local_transcriber import LocalTranscriber

st.title("Локальная транскрибация с Ollama")

# Загрузка файла
audio_file = st.file_uploader("Загрузите аудио файл", type=['mp3', 'wav', 'm4a'])

if audio_file is not None:
    # Сохраняем временный файл
    with tempfile.NamedTemporaryFile(delete=False, suffix='.mp3') as tmp_file:
        tmp_file.write(audio_file.read())
        audio_path = tmp_file.name
    
    # Выбор модели Whisper
    model_size = st.selectbox(
        "Выберите модель Whisper",
        ["tiny", "base", "small", "medium", "large"],
        index=1
    )
    
    if st.button("Начать транскрибацию"):
        with st.spinner("Транскрибируем..."):
            transcriber = LocalTranscriber(model_size=model_size)
            result = transcriber.process_audio(audio_path)
            
            st.subheader("Транскрипция")
            st.text_area("Текст", result["transcription"], height=300)
            
            st.subheader("Резюме (через Ollama)")
            st.write(result["summary"])

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

РешениеПриватностьТребованияТочностьСтоимость
Whisper + Ollama (локальное)ПолнаяВидеокарта, RAMВысокаяБесплатно
Google Speech-to-TextНизкаяИнтернетОчень высокая$0.006-$0.024/мин
Azure SpeechСредняяИнтернетВысокая$0.01/мин
Другие локальные ASRПолнаяЗависит от моделиСредняя-высокаяБесплатно

Как видно из сравнения, наше решение выигрывает в приватности и стоимости, но требует локальных ресурсов. Для сравнения других моделей ASR, посмотрите нашу статью Whisper vs Wav2Vec2.

Практические кейсы использования

1. Расшифровка конфиденциальных встреч

Юристы, врачи, психологи — все, кто работает с конфиденциальной информацией, могут безопасно расшифровывать записи сессий. Данные никогда не покидают ваш компьютер.

2. Обработка интервью для журналистов

Журналисты в полевых условиях, без стабильного интернета, могут транскрибировать интервью и сразу получать ключевые тезисы через Ollama.

3. Создание субтитров для видео

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

4. Анализ лекций и образовательных материалов

Студенты могут транскрибировать лекции и автоматически создавать конспекты с помощью локальной LLM через Ollama. Подробнее о работе с документами оффлайн читайте в статье Obsidian + локальная LLM.

Важно: Для работы с большими объемами аудио (более 30 минут) рекомендуется использовать модель Whisper medium или large и убедиться в достаточном объеме оперативной памяти (16+ ГБ).

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

Если вы столкнулись с проблемами производительности:

  1. Используйте quantization — 8-битная или 4-битная квантизация моделей для Ollama
  2. Выбирайте правильный размер модели Whisper — для большинства задач достаточно base или small
  3. Используйте CUDA — если есть NVIDIA видеокарта, убедитесь, что PyTorch использует CUDA
  4. Разделяйте длинные записи — обрабатывайте длинные аудио по частям
# Пример использования CUDA с Whisper
import torch
import whisper

# Проверка доступности CUDA
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Используемое устройство: {device}")

# Загрузка модели на GPU
model = whisper.load_model("base", device=device)

# Принудительное использование FP16 для экономии памяти
model = model.half() if device == "cuda" else model

Расширенные возможности

Диаризация (разделение по спикерам)

Хотя Whisper не поддерживает диаризацию из коробки, ее можно добавить с помощью дополнительных библиотек:

# Пример с использованием pyannote.audio
from pyannote.audio import Pipeline

# Диаризация (требуется токен HuggingFace)
pipeline = Pipeline.from_pretrained(
    "pyannote/speaker-diarization",
    use_auth_token="YOUR_HF_TOKEN"
)

# Применение к аудио
diarization = pipeline("audio.wav")

# Объединение с транскрипцией Whisper
for turn, _, speaker in diarization.itertracks(yield_label=True):
    print(f"{speaker}: с {turn.start:.1f}с по {turn.end:.1f}с")

Интеграция с другими инструментами

Ваш локальный транскрибатор можно интегрировать с:

  • n8n — для создания автоматизированных workflow, как в статье о локальном голосовом ассистенте
  • Telegram боты — для обработки голосовых сообщений
  • Автоматическое создание заметок — интеграция с Obsidian или Logseq

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

АудиторияРекомендацииМинимальные требования
НачинающиеWhisper tiny/base + Mistral 7B через Ollama8 ГБ RAM, любая видеокарта
ПрофессионалыWhisper medium/large + Llama 2 13B16+ ГБ RAM, GPU с 8+ ГБ VRAM
ОрганизацииКластерная установка + API слойСервер с несколькими GPU
ИсследователиFine-tuning Whisper + специализированные LLMМощная GPU станция

Будущее локальной транскрибации

Тренд на локальный ИИ только набирает обороты. С появлением более эффективных моделей, таких как те, что обсуждаются в статье о гигантской MOE-модели, и специализированного железа, как Orange Pi AI Station, локальная обработка аудио станет еще доступнее.

Whisper + Ollama — это не просто инструмент, а целая экосистема для приватной обработки аудио. Начав с простой транскрибации, вы можете расширить систему до полноценного голосового ассистента, как в нашем гайде по сборке голосового ассистента, или создать специализированные workflow под свои нужды.

💡
Совет: Начните с малого — установите Whisper base и Ollama с моделью Mistral. Обработайте короткую аудиозапись (1-2 минуты), чтобы оценить производительность вашей системы, и только затем переходите к более тяжелым моделям и длинным записям.