Почему стоит запускать ASR‑модель прямо в ноутбуке?
Если вы уже успели запутаться в десятках библиотек для обработки аудио, то эта статья поможет вам быстро собрать рабочий конвейер распознавания речи без лишних «инсталляционных» приключений. Мы будем использовать PyTorch, NumPy и готовую модель из NVIDIA NeMo. Всё, что понадобится – буквально несколько строк кода и, желательно, видеокарта. Если её нет – будет медленно, но всё равно получится.
Подготовка окружения
- Python 3.8+ (рекомендовано 3.10).
- Установите необходимые пакеты одной командой:
pip install torch numpy soundfile librosa "nemo_toolkit[asr]"
Не забудьте проверить, что torch.cuda.is_available() возвращает True. Если нет – откройте настройки среды (Google Colab: Runtime → Change runtime type → GPU) или подготовьте локальную CUDA‑сборку.
Импортируем нужные модули
Сразу бросаем в код «полезные» импорты, чтобы не искать их потом.
import time, json, gc, math, urllib.request
import torch, numpy as np, soundfile as sf, librosa
Эти библиотеки покрывают всё: от загрузки аудио до работы с тензорами.
Проверяем оборудование
print(">>> PHASE 2: running tutorial\n")
print("NumPy:", np.__version__, "| PyTorch:", torch.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0),
f"| VRAM: {torch.cuda.get_device_properties(0).total_memory/1e9:.1f} GB")
else:
print("⚠️ No GPU — will run on CPU (very slow). "
"Set Runtime > Change runtime type > GPU.")
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
Если в консоли появился список поддерживаемых языков, значит всё в порядке.
Выбираем язык и проверяем список
LANGS = {
"bg":"Bulgarian","hr":"Croatian","cs":"Czech","da":"Danish","nl":"Dutch",
"en":"English","et":"Estonian","fi":"Finnish","fr":"French","de":"German",
"el":"Greek","hu":"Hungarian","it":"Italian","lv":"Latvian","lt":"Lithuanian",
"mt":"Maltese","pl":"Polish","pt":"Portuguese","ro":"Romanian","sk":"Slovak",
"sl":"Slovenian","es":"Spanish","sv":"Swedish","ru":"Russian","uk":"Ukrainian",
}
print(f"\nSupported languages ({len(LANGS)}):", ", ".join(LANGS.keys()))
Если нужен русский, просто убедитесь, что ключ "ru" присутствует – он есть.
Загружаем готовую модель
Самый простой способ – взять предобученную модель nvidia/canary-1b-v2 из Hugging Face через NeMo.
from nemo.collections.asr.models import ASRModel
print("\nLoading nvidia/canary-1b-v2 ...")
t0 = time.time()
asr_model = ASRModel.from_pretrained(model_name="nvidia/canary-1b-v2").to(DEVICE).eval()
print(f"Model loaded in {time.time()-t0:.1f}s")
Модель загрузится за секунды, если у вас хорошие интернет‑соединения и подходящая графика.
Пример транскрипции
- Скачайте любой wav‑файл (например, пример из репозитория).
- Загрузите его через
soundfileилиlibrosa.
audio_path = "sample.wav"
signal, sr = sf.read(audio_path)
if sr != 16000:
signal = librosa.resample(signal, orig_sr=sr, target_sr=16000)
sr = 16000
# Приводим к тензору и отправляем на устройство
signal = torch.tensor(signal).float().unsqueeze(0).to(DEVICE)
with torch.no_grad():
transcription = asr_model.transcribe([signal])
print("🗣️ Распознанный текст:", transcription[0])
Готово! Вы получили текстовую транскрипцию без лишних хлопот.
Полезные лайфхаки
- Память GPU: если получаете OOM, уменьшите batch‑size (в данном случае – один файл) или переключитесь в
torch.float16:
asr_model = asr_model.half()
signal = signal.half()
- Пакетная обработка: собирайте список аудио‑тензоров и передавайте их массивом – ускорит инференс.
- Кеширование: после первой загрузки модели сохраняйте её локально (
asr_model.save_pretrained("./my_asr")), чтобы не ждать скачивания каждый раз.
Где искать ответы?
Если что‑то пошло не так, обратитесь к официальной документации:
- NeMo ASR вводный гайд
- Hugging Face model hub страница модели
- GitHub‑репозиторий NVIDIA/NeMo
Заключение
Запуск готовой ASR‑модели в несколько строк кода – реальность даже для тех, кто только «переходит» от исследований к прототипам. Главное – иметь доступ к GPU, следовать простым рекомендациям по подготовке аудио и пользоваться официальными ресурсами. Теперь вы можете сконцентрироваться на бизнес‑логике, а не на «как‑то‑нужно‑собрать‑numpy‑и‑torch‑в‑один‑пакет».





















