🎙️ Розпізнавач Мовлення — Декодування Вітербі HMM Наживо
Спостерігайте, як прихована марковська модель декодує синтетичну послідовність акустичних ознак у найімовірніший шлях фонем за допомогою справжнього алгоритму Вітербі, з живою візуалізацією ґратки.
Про Розпізнавач Мовлення
До того як наскрізні нейронні мережі захопили галузь, практично кожен виробничий розпізнавач мовлення будувався на тому самому математичному кістяку, показаному тут: прихована марковська модель, чиї стани — фонеми (або субфонемні одиниці), з матрицею переходів, що кодує, як фонеми йдуть одна за одною, та акустичною моделлю, що оцінює, наскільки добре кожен кадр аудіо відповідає кожній фонемі. Маючи послідовність акустичних спостережень, алгоритм Вітербі знаходить єдиний найімовірніший шлях фонем за час, пропорційний довжині послідовності, помноженій на кількість станів — замість експоненційно великої кількості шляхів, які довелося б перевіряти наївному пошуку — заповнюючи ґратку поточних балів найкращого шляху стовпець за стовпцем і фіксуючи в кожній клітинці, який попередній стан дав цей найкращий бал.
Ця симуляція реалізує саме цей алгоритм, без скорочень: справжня 5-станова зліва-направо фонемна HMM (SIL → K → AE → T → S, форма слова "cats") зі справжньою матрицею переходів і розподілами емісії для кожного стану над 8-символьним дискретизованим акустичним алфавітом, синтетичний вислів, вибраний реальним проходженням марковського ланцюга та витяганням зашумлених спостережень із нього, і написана з нуля динамічна програма Вітербі в логарифмічній області зі справжніми зворотними вказівниками. Натисніть відтворення, щоб побачити, як ґратка заповнюється зліва направо, поки прямий прохід обчислює поточну максимальну лог-імовірність кожного стовпця, а потім спостерігайте, як переможний шлях простежується назад через зворотні вказівники — і порівняйте його, кадр за кадром, із білим контуром, що позначає справжню послідовність фонем, яка насправді згенерувала дані.
Часті питання
Що таке прихована марковська модель і що в ній тут "приховане"?
Прихована марковська модель (HMM) припускає, що система рухається послідовністю неспостережуваних (прихованих) станів за марковським ланцюгом — наступний стан залежить лише від поточного, через фіксовану матрицю ймовірностей переходів — тоді як на кожному часовому кроці вона видає спостережуваний символ, вибраний із розподілу емісії, специфічного для стану. У цій симуляції приховані стани — це фонеми (SIL, K, AE, T, S), якими справді проходить мовець, а спостереження — це дискретизовані символи акустичних ознак, що заміщують квантовані спектральні кластери, витягнуті з аудіосигналу. Ви ніколи не бачите послідовність фонем напряму — лише зашумлені акустичні символи, які вона згенерувала — що є точно тією задачею оцінювання, яку вирішують справжні системи автоматичного розпізнавання мовлення (ASR).
Що саме обчислює алгоритм Вітербі і як ґратка з ним пов'язана?
Алгоритм Вітербі знаходить єдину найімовірнішу послідовність прихованих станів, маючи послідовність спостережень і фіксовану HMM, використовуючи динамічне програмування замість перевірки кожного можливого шляху (що було б експоненційним за довжиною послідовності). Ґратка — це і є сама таблиця ДП: один рядок на прихований стан, один стовпець на часовий крок. Кожна клітинка delta[t][s] зберігає лог-імовірність найкращого шляху, що закінчується в стані s у момент t, обчислену як максимум за попереднім станом від (бал попередньої клітинки + лог-імовірність переходу) плюс лог-імовірність емісії поточного спостереження за станом s. Зворотний вказівник фіксує, який попередній стан дав цей максимум. Заповнивши кожен стовпець, зворотний прохід через зворотні вказівники від клітинки з найвищим балом в останньому стовпці відновлює єдиний найкращий шлях за один лінійний прохід.
Навіщо працювати в лог-імовірностях замість сирих імовірностей?
Перемноження багатьох імовірностей (по одній на часовий крок, для довгого вислову) стискає добуток до нуля настільки швидко, що звичайні числа з рухомою комою переповнюються знизу точно до 0.0 вже після кількох десятків кадрів, знищуючи всю інформацію про те, який шлях був кращим. Взяття логарифмів перетворює кожне множення на додавання, що є числово стабільним для послідовностей будь-якої довжини і, оскільки логарифм монотонний, точно зберігає ідентичність шляху з максимальною ймовірністю. Саме тому кожна практична реалізація Вітербі, включно з цією, працює повністю в логарифмічному просторі й лише в кінці підноситься назад до ймовірності, якщо потрібне число, зрозуміле людині.
Що насправді змінює повзунок шуму і як він впливає на точність декодування?
Повзунок шуму задає ймовірність того, що на даному часовому кадрі спостереження замінюється рівномірно випадковим акустичним символом замість чесно вибраного з розподілу емісії справжньої прихованої фонеми — моделюючи акустичну невідповідність, таку як фоновий шум, спотворення мікрофона чи ефекти каналу. При шумі 0 декодер Вітербі, що використовує точно ту саму модель переходів і емісії, яка згенерувала дані, повинен майже ідеально відновити справжній шлях фонем. У міру зростання шуму дедалі більша частка кадрів несе акустичний доказ, що вказує на неправильний стан, і декодеру доводиться сильніше покладатися на структуру ймовірностей переходів (той факт, що деякі послідовності фонем просто ймовірніші за інші), щоб залишитися на правильному шляху — тож точність декодування деградує поступово, а не катастрофічно, що є точно тим плавним погіршенням, яке демонструють справжні ASR-системи з зашумленим каналом.
Чому матриця переходів зліва-направо (Бакіса), а не дозволяє будь-якому стану йти за будь-яким?
Класичні розпізнавачі мовлення на основі HMM моделюють кожне слово чи фон як ланцюг зліва-направо (топологія Бакіса): стан може зациклюватися сам на собі (дозволяючи фонемі тривати змінну кількість кадрів, оскільки люди говорять з різною швидкістю), переходити до наступної фонеми, або іноді пропускати одну вперед (моделюючи фонему, яка проковтується чи зникає через коартикуляцію) — але час ніколи не йде назад у межах вислову. 5-станова послідовність SIL-K-AE-T-S у цій симуляції використовує точно цю топологію, з переходами нульової ймовірності (збереженими як лог-імовірність мінус нескінченність) для будь-якої пари станів, яку реальне мовлення фізично ніколи не створює, що одночасно відповідає справжній практиці ASR і зберігає ґратку візуально інтерпретованою як прямий прохід.
Як це пов'язано з тим, як реальні голосові асистенти розпізнають мовлення?
Виробничі ASR-системи історично використовували точно цей каркас HMM + Вітербі — акустичні моделі на суміші гаусіан або глибоких нейронних мережах, що виробляють правдоподібності станів для кожного кадру, фонемні й вимовні HMM, з'єднані в графи слів і речень, і Вітербі (або його наближення променевим пошуком, що використовується, бо реальні словники роблять повну ґратку занадто великою), що декодує найімовірнішу послідовність слів — і гібридні системи HMM/DNN залишаються у виробничому використанні й сьогодні поряд із новішими наскрізними нейронними підходами. Ця симуляція зводить акустичну модель до малого вручну побудованого дискретного розподілу, а словник — до п'яти фонем, тож всю динамічну програму, ґратку зворотних вказівників і рішення декодування можна спостерігати клітинка за клітинкою, але алгоритмічне ядро — динамічне програмування в логарифмічній області над імовірнісним автоматом станів — ідентичне тому, що постачалося в реальних розпізнавачах десятиліттями.
У чому різниця між лог-правдоподібністю декодованого шляху та точністю декодування на панелі статистики?
Лог-правдоподібність декодованого шляху — це власний внутрішній бал алгоритму Вітербі: сума кожної лог-імовірності переходу й лог-імовірності емісії вздовж єдиного найімовірнішого знайденого шляху, що є властивістю лише моделі й спостережень і може бути обчислена навіть без знання справжнього генеруючого шляху. Точність декодування, навпаки, порівнює декодований шлях кадр за кадром зі справжнім прихованим шляхом, який справді використовувався для генерації синтетичного вислову — інформація, до якої реальний розпізнавач ніколи не має доступу, але яку ця симуляція може показати, бо вона також відіграє роль "генератора істини". Висока лог-правдоподібність не гарантує високу точність (модель може впевнено помилятися за сильного шуму), що є точно тим, чому обидва числа показані поряд.
Справжня 5-станова зліва-направо фонемна HMM (матриця переходів + розподіли емісії для кожного стану над 8-символьним акустичним алфавітом) генерує синтетичний вислів, вибираючи справжній прихований шлях і зашумлені спостереження з нього, а написана з нуля динамічна програма Вітербі в логарифмічній області — зі справжніми зворотними вказівниками в кожній клітинці ґратки — декодує найімовірніший шлях фонем, відстежуваний наживо разом із точністю декодування та лог-правдоподібністю шляху.
3D · рушій Three.js / WebGL · ціль 60 кадрів/с · працює повністю на клієнті, без встановлення