Часовая запись с диктофона, лежавшего в кармане: сплошной шорох ткани и шум, речь на слух не слышна вообще. Заказчик знал, что разговор там есть, и просил вытащить голоса из-под шума. До этого запись гоняли через обычные шумодавы и редакторы, чище она не становилась.
Сначала измерение, а не обработка. Спектрограмма всей записи показала, что энергия шума лежит в тех же полосах, что и речь, а сама речь держится на уровне около минус 51 дБ. Отсюда первая поправка: громкость выравнивается не по пикам, пики здесь удары и шорох, а по уровню голоса, speechnorm плюс loudnorm, это дало плюс 36 дБ именно речи.
Разделение источников вместо шумоподавления. Обычные шумодавы обучены на разговорной громкости и тихую речь принимают за шум: спектральный шумодав ffmpeg и DeepFilterNet выдавали бульканье и съедали голос целиком. Сработало разделение источников Demucs, htdemucs с двумя стемами, прогнанное по всей записи: голосовая дорожка отделяется от шороха, и на ней слышно, что говорят мужчина и женщина.
Вычитание шума по внешнему эталону. Обычный шумодав берёт образец шума из тишины самой записи, а там как раз тихая речь, поэтому её и стирает. Вместо этого взята чистая запись с того же диктофона того же дня, из неё построен портрет шума и вычтен из рабочей дорожки. Жёсткое вычитание оказалось лучше винеровского, а характерный писк лечится сглаживанием маски только по частоте, по времени сглаживать нельзя.
Замедленные петли для прослушивания. Кусок в четыре секунды повторяется десять раз подряд с паузами и темпом 0.7: разборчивость растёт от повторов, ухо достраивает недостающее с каждым разом. Темп 0.5 уже даёт треск. Именно петли дали разобранные слова там, где не помогла ни одна модель.
Отдельно проверена гипотеза автопоиска мест с речью по громкости, ритму и контрасту огибающей. Ни один признак не выделяет тот фрагмент, где слова реально слышны, поэтому автопоиск отброшен, а вместо него собрана голосовая дорожка всей записи на скорости 0.7 и инструмент, делающий петлю на любое отмеченное слушателем время.
Из записи, где на слух был только шум, вытащен разговор мужчины и женщины: голосовая дорожка всей записи, 43 минуты, отдельно от шороха, плюс замедленный вариант для прослушивания и петли на отдельные места.
Заказчику отдана не только дорожка, но и инструмент: скрипты петли и вычитания шума по внешнему эталону с настройками силы и сглаживания, чтобы он сам мог пройти запись дальше и обработать любую следующую.
Попутно собрано 18 сочетаний параметров по методу самого заказчика и сопоставлено с нашей цепочкой, финальную выбирали на слух по одному и тому же фрагменту, а не по красоте спектрограммы.
Метод переносится на похожие задачи целиком: сначала измерение уровня речи, потом разделение источников, потом вычитание по внешнему эталону, шумодавы в конце очереди, а не в начале.