Транскрипция и диаризация
На выходных баловался переводом аудио с совещаний в текст. Обнаружил много всего нового. Если с транскрипцией все более или менее понятно, берешь аудио, загоняешь в нейронку, получаешь текст (для этих целей я решил попробовать русскую модельку от Сбера – GigaAM-RNNT-v2, как вариант можно было бы использовать стандартный и бесплатный(!) Whiper – но там сразу предупрежу, надо брать самую тяжелую модель, качество у моделей поменьше совсем так себе), то дальше началось интересное.
Решил, что надо бы определять, кто и что говорит – так проще составлять последующие протоколы. И для этой штуки нашелся даже отдельный термин «диаризация». Естественно, есть и специальные продукты, из которых лучший – pyannote.audio. Скачивается с huggingface, там же для него нужно получить специальный токен. Моделька от Сбера, кстати, на ollame также отсутствует, поэтому для установки что транскрипции, что диаризации придется писать отдельные скрипты.
Из любопытного – при диаризации файлы разрезаются на маленькие реплики, относящиеся к одному человеку, и модели-транскриптору передаются именно они, а не весь файл целиком. Если говорят одновременно несколько человек, универсальное решение – нарезка происходит с перекрытием. Для меня, это, честно говоря, было неожиданным подходом, но логика в этом есть – говорят, что короткие аудио распознаются лучше, это как маленький контекст для модели.
Для голоса можно делать и свой RAG – с записанными голосами и их распознаванием (для этого требуется 1-2 минуты голоса), но до этого я еще не дошел.
Здесь, как всегда, вроде возьмешь несложную задачку, а нюансов выясняется…
Post #140
60