Один дзвінок, чотири розпізнавачі: чому ми лишились на Azure
Розпізнавання мовлення — це собівартість Sayply: ми продаємо хвилини, і кожну хвилину нам продає провайдер STT. Тож питання «а чи не переїхати на дешевшого» виникає регулярно. Замість відчуттів ми його виміряли.
Як міряли
Записали реальний дзвінок 5 хв 23 с — два канали (мікрофон і системний звук), 16 кГц моно, рівно той формат, у якому аудіо йде в розпізнавання у продакшні. Прогнали обидва канали через чотирьох провайдерів і порахували WER — відсоток слів, розпізнаних з помилкою, проти еталонного тексту.
Числа
| Провайдер | Ваш канал (WER) | Канал співрозмовника (WER) |
|---|---|---|
| Azure (наш прод) | 15,5% | 24,2% |
| AssemblyAI | 15,5% | 27,8% |
| Deepgram | 20,7% | 35,9% |
| Speechmatics | 29,2% | 31,8% |
Абсолютні числа завищені в усіх однаково — у записі є відхилення від сценарію, і вони зараховані як помилки. Для порівняння провайдерів це не заважає: аудіо в усіх те саме.
Що вирішило питання
AssemblyAI зрівнявся з Azure за якістю і коштує на 70% менше — але не підтримує українську в стрімінгу. Realtime-режим покриває 18 мов, української серед них немає. А обхід «стрімити одним, потім переслухати запис дешевшим» для нас неможливий у принципі: для цього треба зберігати аудіо, чого наша політика конфіденційності прямо обіцяє не робити.
Speechmatics плутає числа. Самовиправлення «на п'ятнадцять… ні, на вісімнадцять» перетворилось на «на 20 місць». Для продукту, який робить із розмови задачі, неправильне число в задачі — найгірший клас помилки з можливих.
Deepgram — єдина реальна альтернатива. Українську в стрімі тримає, перші результати за 1,6 с, коштує помітно менше. Але WER гірший на третину, а якість розпізнавання — це і є наш продукт.
Рішення
Лишаємось на Azure. Заміна провайдера — важіль масштабу, а не якості: на поточних обсягах економія неістотна, а розпізнавання гіршає вимірювано. Обв'язка заміру відтворювана, тож коли обсяги виростуть — перерахуємо, а не пригадуватимемо.
Чесна знахідка
Побічно замір показав обмеження, спільне для всіх чотирьох провайдерів: коли канал закріплений за однією мовою, чужомовну репліку вони не записують дослівно, а перекладають. Англійське «Sounds good, let's say we have five managers…» стає українським «Звучить добре, скажімо, у нас п'ять менеджерів…».
Для двомовної розмови це означає: транскрипт чужомовних реплік — переказ, а не стенограма. Багатьом користувачам переказ рідною мовою навіть зручніший, але називати його дослівним ми не будемо. Якщо вам критична дослівність обома мовами — виберіть мову для кожного каналу окремо: так це працює.