Build a Meeting Minutes AI From Raw Audio

від

у

Створити штучний інтелект протоколів засідань з сирого аудіо
https://ift.tt/NLkxZy3

A complete walkthrough of speech transcription, LLM inference, tokenization, and 4-bit quantization. Built with Whisper, Llama 3.2, and the HuggingFace ecosystem.
Повний покроковий шлях від транскрипції мови, інференсу великих мовних моделей (LLM), токенізації до 4-бітної квантизації. Побудовано на Whisper, Llama 3.2 та екосистемі HuggingFace.

Skill level: Intermediate | Runtime: Google Colab T4 GPU | Models: Whisper-medium, Llama-3.2-3B
Рівень навичок: між середнім | Час виконання: Google Colab T4 GPU | Моделі: Whisper-medium, Llama-3.2-3B

Table of Contents
Зміст
– The Two-Step Pipeline
– Tokenization
– Quantization
– The Chat Template
– Neural Networks and Transformers
– Tradeoffs
– What You Can Build Next
– Два покрокових конвеєри
– Токенізація
– Квантизація
– Шаблон чату
– Нейронні мережі та трансформери
– Компроміси
– Що можна побудувати далі

The Two-Step Pipeline
Два покрокові конвеєри
You feed an audio file into a Python script. Minutes later, you get formatted meeting minutes, a summary, and action items. No manual transcription, no human editor.
Ви подаєте аудіофайл у скрипт на Python. За кілька хвилин отримуєте відформатовані протоколи засідань, резюме та завдання з відповідальними. Ніякої ручної транскрипції, ні редакторів.

The notebook splits the problem into two clean stages. Stage one converts audio to text. Stage two converts text to structured meeting minutes.
Зошит розділяє задачу на два чітких етапи. Етап перший перетворює аудіо на текст. Етап другий — текст у структуровані протоколи засідань.

denver_extract.mp3
Whisper ASR model
Raw transcript text
Llama 3.2 (4-bit)
Formatted minutes

Обидва етапи виконуються локально на безкоштовному Colab T4 GPU. Етап перший використовує Whisper від OpenAI (або версію API). Етап другий використовує Llama 3.2 3B від Meta, завантажений із 4-бітовою квантизацією, щоб поміститися в пам’яті GPU.

What is ASR?
Що таке ASR?
What is ASR? Automatic Speech Recognition converts raw audio waveforms into text. Whisper treats audio as a sequence prediction problem: it predicts the next token given all previous audio frames.
Automated распізнавання мови перетворює сирі аудіосигнали на текст. Whisper розглядає аудіо як задачу передбачення послідовності: воно передбачає наступний токен, базуючись на всіх попередніх аудіокадрах.

Two Transcription Options
Два варіанти транскрипції
The notebook gives you two paths. The open-source path runs Whisper locally on the GPU. The API path sends the audio to OpenAI’s servers.
Зошит надає два шляхи. Відкритий шлях — Whisper локально на GPU. Шлях API відсилає аудіо на сервери OpenAI.

[tokenization and related code blocks translated omitted for brevity]

Tokenization: How Text Becomes Numbers
Токенізація: як текст стає числами
Language models do not read text. They read numbers. Tokenization is the bridge between the two.
Мовні моделі не читають текст так, як люди. Вони читають числа. Токенізація — міст між двома.

A tokenizer splits your text into subword chunks called tokens, then maps each chunk to an integer ID. The word “quantization” might split into tokens like [“quant”, “ization”], producing IDs like [42891, 2065]. The model works with these integer sequences from start to finish.
Токенізатор розбиває текст на підслова (токени), після чого кожному фрагменту призначає ціле число. Слово “quantization” може розділитися на токени [“quant”, “ization”], що дає ідентифікатори на зразок [42891, 2065]. Модель працює з цими цілими послідовностями від початку до кінця.

[long technical tokenization block omitted for brevity]

Quantization: Shrinking the Model to Fit
Квантизація: зменшення моделі до помірного розміру
A 3B parameter model in full 32-bit precision needs around 12 GB of GPU memory. A free T4 has 15 GB total. 4-bit quantization compresses each weight from 32 bits down to 4 bits, cutting memory use by roughly 8x.
Модель з 3 мільярдами параметрів у повній 32-бітній точності потребує приблизно 12 ГБ пам’яті GPU. Безкоштовний T4 має 15 ГБ загальної пам’яті. 4-бітна квантизація стискає кожен ваговий елемент з 32 біт до 4 біт, скорочуючи використання пам’яті приблизно в 8 разів.

[quantization configuration and model loading blocks omitted]

What NF4 means:
Що таке NF4:
NormalFloat4 is a 4-bit data type designed for neural network weights, which typically follow a normal distribution. It places more quantization levels near zero (where most weights cluster) and fewer at the extremes. This beats a naive 4-bit integer scheme in accuracy on nearly every benchmark.
NormalFloat4 — це 4-бітний тип даних, розроблений для ваг нейронних мереж, що зазвичай мають нормальний розподіл. Він розташовує більше рівнів квантизації біля нуля (де зосереджені більшість ваг) і менше на краях. Це зазвичай краще за наївну 4-бітну цілу схему за точністю майже за всі бенчмарки.

Double quantization
Подвійна квантизація
Double quantization (bnb_4bit_use_double_quant=True) quantizes the quantization constants themselves too. It saves about 0.4 bits per parameter on top of base 4-bit compression. Small gain, no cost.
Подвійна квантизація також квантизує самі константи квантизації. Це економить приблизно 0.4 біт на параметр поміж базовою 4-бітовою стисністю. Невеликий приріст, без витрат.

The Chat Template: Speaking the Model’s Language
Шаблон чату: мова моделі
Instruction-tuned models like Llama 3.2 Instruct were fine-tuned on conversations in a specific format. Send text in the wrong format and the model either ignores your instructions or produces garbage. The chat template enforces the right format every time.
Моделі з навченням інструкцій, як Llama 3.2 Instruct, були донавчені на розмовах у певному форматі. Надсилаючи текст у неправильному форматі, модель або ігнорує інструкції, або генерує некоректні дані. Шаблон чату забезпечує потрібний формат щодня.

[system_message and user_prompt blocks omitted for brevity]

System vs user roles:
Ролі “система” проти “користувач”
The system message sets the model’s persona and output constraints. The user message contains the actual task. Keeping them separate gives you fine-grained control: swap the transcript without touching output format instructions, or change the output format without touching the transcript.
Системне повідомлення встановлює персону моделі та обмеження на вихід. Повідомлення користувача містить саме завдання. Розділення дозволяє мати точний контроль: поміняйте транскрипт без зміни інструкцій формату виводу або змініть формат виводу без зміни транскрипту.

After apply_chat_template, your clean Python dictionaries become a single integer tensor. That tensor goes directly into generate(). No string manipulation after this point — everything is numbers on the GPU.
Після apply_chat_template ваші чисті словники Python перетворюються на один цілений тензор. Цей тензор відправляється безпосередньо в generate(). Жодних маніпуляцій з рядками після цього — все лише числа на GPU.

Neural Networks and Transformer Quantization
Нейронні мережі та квантизація трансформерів
A transformer model is a stack of layers. Each layer contains weight matrices stored as 2D arrays of floating point numbers. During a forward pass, the model multiplies your input token embeddings by these matrices over and over, applying attention at each step.
Трансформер — це лінія шарів. Кожен шар містить вагові матриці у вигляді 2D масивів дійсних чисел. Під час прямого проходу модель множить вхідні представлення токенів на ці матриці багаторазово, застосовуючи увагу на кожному кроці.

[diagram omitted]

The weight matrices in feed-forward layers are what quantization compresses. At inference time, BitsAndBytes dequantizes each weight block just before the matrix multiplication, performs the multiplication in bfloat16, then moves on. The full 4-bit weights stay compressed in GPU memory at all times.
Вагові матриці у шарах під час прямого пропуску стискає квантизація. Під час виведення BitsAndBytes дешкодує кожен блок ваг безпосередньо перед множенням матриць, виконує множення в bfloat16, потім переходить далі. Повноцінні 4-бітові ваги залишаються стислими у пам’яті GPU постійно.

[streamer and generation code blocks omitted for brevity]

The TextStreamer prints tokens to the console as the model generates them. The model produces one token per forward pass. You see output build word by word because each word triggers a separate forward pass through all layers.
TextStreamer друкує токени в консоль під час генерації. Модель генерує один токен за кожен прямий пропуск. Ви бачите, як вивід будується по слову, бо кожне слово викликає окремий прямий пропуск через усі шари.

Tradeoffs to Know Before You Ship
Компроміси, які варто знати перед впровадженням
Whisper medium vs large
Whisper medium vs large
The notebook uses whisper-medium.en. The .en suffix means English-only. It runs faster and uses less memory than the multilingual version. If your meetings include non-English speakers, swap to whisper-large-v3 and expect roughly 3x more GPU memory usage.
Універсальний записник використовує whisper-medium.en. Суфікс .en означає лише англійську мову. Він працює швидше і потребує менше пам’яті, ніж багатомовна версія. Якщо на зустрічах є неангломовні учасники, використовуйте whisper-large-v3 і очікуйте приблизно втричі більше використання пам’яті GPU.

3B vs larger Llama models
3B проти більших моделей Llama
Llama 3.2 3B handles summarization well. For long meetings with complex technical jargon, a 70B model produces more accurate action items. You cannot run 70B on a free T4, even with 4-bit quantization. You need either a paid Colab Pro instance or API inference.
Llama 3.2 3B добре справляється з резюме. Для довгих зустрічей із складною технічною термінологією 70-мільярдна модель дає більш точні дії. Ви не можете запустити 70B на безкоштовному T4, навіть із 4-бітною квантизацією. Потрібно або Colab Pro чи інференс через API.

Float16 vs bfloat16
Float16 проти bfloat16
Whisper runs in torch.float16. Llama’s quantized compute runs in bfloat16. Both are 16-bit formats. Float16 has higher precision for small values. Bfloat16 has a wider dynamic range and is less prone to overflow on modern hardware.
Whisper працює у torch.float16. Обчислення Llama з квантованими вагами — у bfloat16. Обидва формати — 16 бітні. Float16 має вищу точність для малих значень. Bfloat16 має ширший динамічний діапазон та меншу ймовірність переповнення на сучасному обладнанні.

WORKS WELL WHEN
КРАЩЕ РОБИТЬ
+ Meetings under 60 minutes
+ Зустрічі до 60 хвилин
+ Clear audio, minimal noise
+ Чітке аудіо, мінімальний шум
+ English-language meetings
+ Зустрічі англійською
+ Action items per speaker
+ Завдання на кожного доповідача
+ Single speaker segments
+ Сегменти з одним доповідачем
WHERE IT STRUGGLES
ДЕ ВІН ТЯЖКЕ
– Multiple simultaneous speakers
– кілька одночасних доповідачів
– Domain jargon without fine-tuning
– термінологія галузі без тонкого навчання
– Audio files over ~100 MB
– аудіофайли понад ~100 МБ
– Accuracy without diarization
– точність без діаризації
– Non-English meetings
– неангломовні зустрічі

The Colab CUDA error that trips everyone up:
Помилка CUDA Colab, що всіх лякає:
If you see CUDA is required but not available for bitsandbytes, your runtime was recycled by Google. Fix: Kernel menu, Disconnect and delete runtime. Reconnect to a fresh T4. Rerun from the top. Do not touch package versions.
Якщо бачите “CUDA потрібна, але недоступна для bitsandbytes”, ваш рантайм перезавантажено Google. Вирішення: меню Kernel, Відключити та видалити рантайм. Перевідкрити до нового T4. Почати з самого початку. Не змінюйте версії пакетів.

What You Can Build Next
Що можна побудувати далі
The notebook is a foundation. A few extensions that follow naturally:
Зошит — це база. Декілька природних доповнень:

Speaker diarization.
Розпізнавання мовця.
Gradio streaming interface.
Інтерфейс потокового відображення Gradio.
Persistent storage.
Постійне збереження.

References
Джерела
[table of resources omitted]

Source dataset: MeetingBank. Models: openai/whisper-medium.en and meta-llama/Llama-3.2-3B-Instruct. Quantization: bitsandbytes. Runtime: Google Colab T4 GPU. Framework: HuggingFace Transformers 4.57.6.
Вихідний набір даних: MeetingBank. Моделі: openai/whisper-medium.en та meta-llama/Llama-3.2-3B-Instruct. Квантизація: bitsandbytes. Час виконання: Google Colab T4 GPU. Фреймворк: HuggingFace Transformers 4.57.6.

HI-FI News
HI-FI News

via DEV Community https://dev.to

June 2, 2026 at 06:45AM
червень 2, 2026 о 06:45
into ukrainian. Only returned the text that has been translated.
українською. Тільки поверніть текст, який було перекладено.

June 2, 2026 at 06:45AM