Надзвичайно швидка й точна транскрипція з Granite Speech 5.0 Turbo CTC
Коротко
Сьогодні ми раді оголосити про випуск двох нових моделей у сімействі Granite Speech: компактних моделей розпізнавання англійського мовлення зі 470 млн параметрів, які поєднують високу точність із безпрецедентною швидкістю — понад 12 600 RTFx на графічному процесорі NVIDIA H200, тобто під час пакетного виведення вони можуть транскрибувати понад 3,5 години мовлення за одну секунду.
Щоб оцінити швидкість реакції моделей, перегляньте нашу демоверсію WebGPU потокового розпізнавання мовлення. Зверніть увагу, що демоверсія працює лише у браузерах Chrome або Edge.
Дві моделі відрізняються переважно навчальними даними та ліцензуванням: granite-speech-5.0-470m-turboctc-nc навчалася на додаткових даних і поширюється за ліцензією CC-BY-NC-SA-4.0, тоді як granite-speech-5.0-470m-turboctc навчалася на меншому наборі даних і поширюється за ліцензією Apache 2.0.
Продуктивність
Нижче ми наводимо неофіційні результати на загальнодоступних англомовних тестових наборах коротких висловлювань із рейтингу OpenASR. Офіційні результати, що включають приватні набори даних, дивіться в рейтингу.
Ми наводимо стовпчикові діаграми продуктивності ibm-granite/granite-speech-5.0-470m-turboctc-nc і ibm-granite/granite-speech-5.0-470m-turboctc, а також графіки Парето для компромісу між швидкістю й точністю та між розміром моделі й точністю. Обидві моделі демонструють високу точність: некомерційна модель отримала сукупний WER 4,85%, а модель Apache 2.0 — 5,00%, забезпечуючи безпрецедентну сукупну пропускну здатність понад 12 600 RTFx. Некомерційна модель дещо точніша за модель Apache 2.0 на більшості тестових наборів, маючи помітну перевагу на SPGI Speech і помітний недолік на новому фрагментованому тесті Earnings22.
Рисунок 1: Неофіційні результати для загальнодоступних тестових наборів, використаних у рейтингу OpenASR станом на 21 серпня 2026 року. Виведення виконувалося за допомогою HF Jobs, а оцінювання — за допомогою інструментів рейтингу OpenASR, тому очікується, що результати WER і показники RTFx збігатимуться з офіційними.
Рисунок 2: Неофіційні графіки Парето (швидкість і точність та розмір моделі й точність), створені на основі результатів для загальнодоступних тестових наборів рейтингу OpenASR станом на 21 серпня 2026 року.
Обидві моделі також добре працюють із розпізнаванням мовлення в дальньому полі, що вимірюється рейтингом FFASR. Станом на 25 серпня 2026 року ibm-granite/granite-speech-5.0-470m-turboctc посіла дев’яте місце за точністю, а ibm-granite/granite-speech-5.0-470m-turboctc-nc — п’яте; водночас це були дві найшвидші моделі. Зверніть увагу, що це офіційні результати.
Архітектура моделі
Ці нові моделі є моделями лише з енкодером, на відміну від попередніх моделей Granite Speech, які складаються з акустичного енкодера, проєктора та Granite LM з адаптерами LoRA. Архітектура лише з енкодером забезпечує високу якість транскрипції, невеликий обсяг пам’яті — лише 470 млн параметрів — і більш ніж у 20 разів вищу пропускну здатність порівняно з попередніми моделями Granite Speech. Нові моделі втрачають деякі можливості моделей із мовною моделлю, як-от переклад мовлення та зміщення ваги ключових слів, але ідеально підходять для завдань перетворення мовлення на текст на периферійних пристроях.
Моделі Granite 5.0 Speech мають багато спільного з енкодерами, що використовувалися в попередніх моделях Granite Speech. Усі вони
- складаються зі стека з 16 блоків Conformer,
- використовують самокондиціювання на виході 8-го блоку,
- застосовують фрагментовану увагу, щоб уникнути квадратичного масштабування зі збільшенням довжини послідовності, властивого стандартній увазі на основі скалярного добутку, і
- під час навчання оптимізують функцію втрат конекціоністської часової класифікації (CTC).
Новизна моделей Granite 5.0 Speech полягає в тому, що вони працюють зі значно нижчою швидкістю токенів, ніж наші попередні енкодери, і використовують іншу токенізацію вихідних даних. Якщо попередні енкодери генерували 50 символів на секунду, то моделі Granite 5.0 генерують 12,5 токена на секунду: ibm-granite/granite-speech-5.0-470m-turboctc-nc використовує токенізацію SentencePiece, а ibm-granite/granite-speech-5.0-470m-turboctc — токенізацію BPE. В обох випадках токенізатори навчені на транскрипціях мовлення.
Щоб перейти від частоти 100 кадрів на секунду на вході передньої частини з логарифмічною мел-спектрограмою до частоти 12,5 токена на секунду, ми використовуємо три етапи проріджування вдвічі, як показано нижче. На першому етапі, який також використовується в енкодерах попередніх моделей Granite Speech, послідовні вектори ознак логарифмічної мел-спектрограми об’єднуються за допомогою простої операції reshape(). Другий і третій етапи вбудовані в перші два блоки Conformer у стеку, які використовують згортки з кроком для часового зменшення роздільності.
Рисунок 3: Розташування операцій проріджування у стеку з 16 блоків Conformer, з яких складається енкодер. Зверніть увагу, що для ясності на цьому рисунку самокондиціювання не показано.
На рисунку нижче показано реалізацію блоку Conformer, який виконує часове проріджування, у порівнянні зі стандартним блоком Conformer. Дві зміни полягають у тому, що (1) згортковий блок виконує часові згортки з stride= 2, а (2) залишкове з’єднання для згорткового блоку проріджується в часі шляхом обчислення середнього для послідовних пар позицій. Стандартний блок Conformer відповідає реалізації Філа Ванга (lucidrains), за винятком того, що ми використовуємо фрагментовану увагу й покладаємося на scaled_dot_product_attention() у PyTorch замість оригінальної реалізації einsum().
Рисунок 4: Порівняння стандартного та проріджувального блоків Conformer.
Навчальні дані
Моделі Granite Speech 5.0 навчаються на поєднанні природних і синтетичних даних. У таблиці нижче перелічено природні набори даних, використані під час навчання, і зазначено, чи використовувався набір для навчання обох моделей, чи лише некомерційної моделі.
| Назва | # годин | Модель | Джерело |
|---|---|---|---|
| MLS | 44600 | Обидві | https://huggingface.co/datasets/facebook/multilingual_librispeech |
| YODAS | 8900 | Обидві | https://huggingface.co/datasets/espnet/yodas |
| CommonVoice-17 | 2500 | Обидві | https://huggingface.co/datasets/mozilla-foundation/common_voice_17_0 |
| Librispeech | 960 | Обидві | https://huggingface.co/datasets/openslr/librispeech_asr |
| VoxPopuli | 500 | Обидві | https://huggingface.co/datasets/facebook/voxpopuli |
| AMI | 150 | Обидві | https://huggingface.co/datasets/edinburghcstr/ami |
| Earnings-22 | 100 | Обидві | https://huggingface.co/datasets/esb/datasets |
| GigaSpeech | 10000 | NC | https://huggingface.co/datasets/speechcolab/gigaspeech |
| SPGI Speech | 4900 | NC | https://huggingface.co/datasets/kensho/spgispeech |
Обидві моделі також навчаються на трьох синтетичних наборах даних:
- 2000 годин багатодикторських даних, згенерованих шляхом об’єднання сегментів одного диктора з MLS, YODAS, CommonVoice-17, VoxPopuli та AMI;
- 500 годин багатодикторських даних, згенерованих шляхом об’єднання сегментів одного диктора з Earnings-22; і
- 240 годин висловлювань, що містять числа, валюти, назви вебсайтів, номери телефонів, адреси та елементи з десятковими крапками або крапками, згенерованих за допомогою
gpt-oss-120bабоgpt-oss-20bі синтезованих за допомогоюStyleTTS2.
Використання
Granite Speech 5.0 TurboCTC має вбудовану підтримку в transformers. До наступного випуску Transformers встановіть пакет із вихідного коду:
pip install git+https://github.com/huggingface/transformers.git datasets
from datasets import Audio, load_dataset
from transformers import AutoModelForCTC, AutoProcessor
model_id = "ibm-granite/granite-speech-5.0-470m-turboctc"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForCTC.from_pretrained(model_id, device_map="auto")
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
speech_samples = [el["array"] for el in ds["audio"][:5]]
# `device` computes the log-mel front-end on the model's accelerator, saving a host-to-device copy
inputs = processor(
speech_samples, sampling_rate=processor.feature_extractor.sampling_rate, device=model.device
)
inputs.to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs)
print(processor.batch_decode(outputs, skip_special_tokens=True))
Моделі, згадані в цій статті 2
Простори, згадані в цій статті 2
Статті, згадані в цій статті 1
Колекції, згадані в цій статті 1
Спільнота
· Зареєструйтеся або увійдіть, щоб залишити коментар
Моделі, згадані в цій статті 2
Простори, згадані в цій статті 2
Статті, згадані в цій статті 1
Колекції, згадані в цій статті 1
Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.