На связи снова Калмыкова Надежда, и, как и обещала в первой статье про задачу голосовой инвентаризации, возвращаюсь с рассказом о том, какие подходы к ее решению оказались самыми удачными, и поделюсь впечатлениями о нашем первом хакатоне HackWagon22, который прошел 16-18 декабря 2022.
Для начала, напомню формулировку задачи.
У нас есть аудиозапись, сделанная сотрудником в процессе инвентаризации на обычный смартфон, которая содержит информацию о каждой пронумерованной детали на складе. Из этого аудиофайла необходимо извлечь характеристики деталей и внести их в отчет с минимальными потерями информации. В результате получаем таблицу, где для каждой детали указан номер, завод-изготовитель, год изготовления и комментарий. Правильной считаем только ту строку отчета, где корректны все эти поля. Более подробная постановка задачи, предпосылки и подводные камни описаны здесь.
Перед тем, как использовать эту задачу для нашего хакатона, как подошла к ее решению я?
Поскольку задача состояла именно в проверке жизнеспособности идеи голосовой инвентаризации, и архитектура продукта для инвентаризации на тот момент была на начальных этапах проработки, не было необходимости «подружить» решение с чем бы то ни было, и в процессе разработки была полнейшая свобода.
Нам нужно было предусмотреть подавление шумов – ведь все склады очень разные, на некоторых может быть очень много посторонних звуков, и с этой задачей для наших аудио отлично показала себя библиотека NoiseReduce. Ее использование позволило уменьшить зашумленность исходного материала, не потеряв при этом нужную информацию, для инвентаризации это критично. Для получения текста из аудиозаписи я воспользовалась SpeechKit-ом. Он позволяет получить идеальное распознавание чисел при достаточно хорошей скорости работы и удобстве использования. А для того, чтобы собрать из текста необходимый отчет, я использовала расстояние Левенштейна в сочетании с регулярками – аккуратная работа с ними позволила добиться отличного значения метрики. Так мы пришли к выводу, что у голосовой инвентаризации есть будущее и такой функционал действительно поможет сократить ресурсы компании на проведение этого процесса, не потеряв в качестве результата.
Расскажу, что же происходило на нашем хаке.