ENIGMA AI
ENIGMA AI

Какой формат входных данных необходимо подать в модель Whisper?

встречается 1× Whisper middle backend

Как ответить

Whisper принимает на вход аудиоданные в формате одноканального (моно) PCM с частотой дискретизации 16000 Гц и разрядностью 16 бит со знаком. На практике модель ожидает массив float32 в диапазоне [-1, 1] — это может быть numpy ndarray или torch тензор. Если вы передаёте путь к файлу, встроенная функция whisper.load_audio() сама приведёт сигнал к нужному формату.

Проще всего использовать model.transcribe(), которая внутри вызывает load_audio и разбивает длинные записи на блоки до 30 секунд. Если вы работаете с готовым массивом, убедитесь, что частота дискретизации именно 16 кГц, иначе модель выдаст некорректные результаты.

import whisper
import librosa

# Вариант 1: встроенная загрузка
aud = whisper.load_audio('speech.wav')  # -> numpy array, 16kHz, моно
result = whisper.transcribe(model, aud)

# Вариант 2: через librosa (ресемпл обязателен)
aud, sr = librosa.load('speech.mp3', sr=16000, mono=True)
aud = aud.astype('float32')  # librosa уже возвращает float32
result = whisper.transcribe(model, aud)

Эти методы автоматически нормализуют значения в диапазон [-1, 1]. Если вы подаёте аудио вручную, например, из записи микрофона, обязательно проверьте частоту — 16 кГц, моно, float32.

Для длинных файлов (более 30 секунд) transcribe применяет окно длиной 30 секунд с перекрытием. Вы также можете подать список отрезков в виде списка массивов, но это редко нужно — встроенный механизм справляется сам.

Ключевые тезисы

  • Whisper ожидает моно-аудио с частотой 16000 Гц, 16 бит PCM, нормализованный float32 [-1, 1].
  • Можно подать путь к файлу (тогда библиотека сама приведёт к нужному формату) или уже загруженный массив numpy / torch.
  • Обязателен ресемплинг до 16000 Гц — любая другая частота снижает качество распознавания.
  • Для файлов длиннее 30 секунд встроенная сегментация в model.transcribe() обрабатывает аудио блоками.
  • При загрузке сторонними библиотеками (librosa, soundfile) нужно явно указывать sr=16000 и mono=True.

Что спросят дальше

  • — Как быть, если исходное аудио длится больше часа? Какой максимальный размер сегмента?
  • — Что произойдёт, если подать стерео-сигнал без усреднения каналов?
  • — Можно ли передать в модель уже готовую лог-мел-спектрограмму, минуя этап извлечения признаков?

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение