Ми пробували чистити звук перед розпізнаванням. Не допомогло
Здається очевидним: прибрати шум, вирівняти гучність — і розпізнавач чутиме краще. Ми перевірили це на власних записах. Вийшло навпаки.
Що ми пробували
Взяли записи чотирьох голосів, 1434 фрази, і пропустили кожну фразу крізь тринадцять варіантів обробки перед розпізнаванням. Потім порівняли кількість помилок із необробленим записом.
- Вирівнювання гучності: усі записи приводяться до одного рівня. Стало гірше, приблизно на два пункти більше помилок на сто слів. Англійські фрази одна за одною записувалися кирилицею.
- Шумозаглушення RNNoise. На голосі, який і так був чистим, стало гірше.
- Шумозаглушення GTCRN. Воно лише перемішало помилки: одні зникли, інші з’явилися, а російською стало трохи гірше.
- Фільтр високих частот на 90 Гц, який зрізає низьке гудіння. Жодної різниці.
Чому так
Очищення звуку не дає розпізнавачу просто кращий запис. Воно змінює звук, а розпізнавач реагує на цю зміну так, як ми не очікували.
Найбільше здивувала гучність. Розпізнавач сам вирішує, якою мовою звучить мовлення, і гучність зсуває це рішення. Чим голосніший звук, тим сильніше модель тягне до російської, і англійська фраза з’являється кирилицею. Тихіший звук — модель відпускає, і вона повертається до мови фрази. Невеликий зсув на вході змінював абетку приблизно в 150 фразах із 1434.
Ми шукали й один ідеальний рівень гучності, але не знайшли. Підсилення звуку шкодило, а найкращий рівень у кожного голосу свій, і вони розходилися більш ніж на 15 дБ.
Що допомогло трохи
Стабільний виграш дало лише одне: зробити звук тихішим на три децибели. Це прибрало приблизно півпункта помилок на сто слів, і жоден голос не став гіршим. Якщо зробити звук набагато тихішим (на 6 дБ і більше), з’являється нова біда: російська починає зсуватися в українське написання.
Виграш невеликий, тож ми додали його лише як експеримент. У налаштуваннях диктування є перемикач «Покращити розпізнавання (експеримент)», типово він вимкнений. На живі субтитри він не впливає.
Тому шумозаглушення перед розпізнавачем ми не ставимо. Якщо захочемо покращити результат для російської та української, дивитимемося, як модель обирає мову, а не на звук.