Изключително бърза и точна транскрипция с 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 — WER от 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. Новите модели се отказват от някои възможности на моделите, оборудвани с LM, като превод на реч и отклоняване към ключови думи, но са идеални за задачи за преобразуване на реч в текст на периферни устройства.
Моделите 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 токена в секунда, разчитаме на три етапа на субсемплиране 2x, както е показано по-долу. Първият етап, който се използва и в енкодерите на предишните модели Granite Speech, подрежда последователни вектори на логаритмични мелови характеристики чрез проста операция reshape(). Вторият и третият етап са вградени в първите два блока Conformer в стека, които използват свертки със стъпка за извършване на времево субсемплиране.
Фигура 3: Разположение на операциите за субсемплиране в стека от 16 блока Conformer, изграждащи енкодера. Имайте предвид, че самообуславянето е пропуснато на тази фигура за по-голяма яснота.
Фигурата по-долу илюстрира реализацията на блока Conformer, който извършва времево субсемплиране, в сравнение със стандартен блок Conformer. Двете промени са, че (1) свертъчният блок извършва времеви свертки с stride= 2 и (2) остатъчната връзка за свертъчния блок се субсемплира времево чрез изчисляване на средната стойност на последователни двойки позиции. Стандартният блок Conformer следва реализацията на Phil Wang (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
Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.