Требуется, например, звук глотания отличить от кашля.
Думаю, что можно создать "идеальные" аудиофайлы, но как сравнить их с вновь записанными? Все что вижу в инете связано с распознаванием речи и уже под это заточено.
Есть ли что-то для сравнения двух аудиофайлов и определения их похожести?
Ответы
Ответ 1
Хотя данный вопрос подразумевает ответ, который невозможно дать однозначно, но можн
наметить примерный путь поисков. По крайней мере вы будете знать с чего начать и куда стоит двигаться для достижения цели.
Для самого начала стоит обратится к изучению аналогово-цифрового преобразования звук
и узнать, как вообще звук представляется в дискретном состоянии и какие параметры
него входят. Так же можно изучить аналоговые и дискретные звуковые преобразования. Так вы сможете ознакомится с довольно интересной природой звука и что он из себя представляет.
После этого, вы должны составить для себя список, какие факторы можно использоват
для определения различий между требуемым списком звуковых сигналов. Это может быть
простом случае один фактор, в сложных целая сеть различных характеристик сигнала и всевозможных алгоритмов обработки. Кстати много много названий характеристик в вики, можно их посмотреть и изучить спектральный анализ звука. В любом случае Вам понадобится собрать базу данных из таких слепков и сравнивать ее между собой для анализа и проектирования программы.
Далее вы пишите программу, которая сможет анализировать входящие сигналы и путе
сравнения выдавать оценочный результат. Вам не нужно создавать идеальные файлы и сравнивать
Вам нужно создать допустимые плавающие границы для входных сигналов. Примерно так и работают искусственные сети, обучаясь на формировании оценочных признаков и их диапазонов в базе данных.
Примерно так Вы сможете создать очень примитивную, но зато свою, систему распознавания.
Ответ 2
Очевидно, если вы нашли примеры распознавания речи, то пример распознавания нейросетью изображения вам найти не составит труда.
Есть немножко туповатый, но вполне работающий способ распознавания звуков по их графическом
"изображению" при котором требуется лишь базовое знание нейросетей на уровне 2-3 курса ВУЗа. Для этого нужно:
Подготовка:
1) Записать сэмплы эталонных команд, которые вы собираетесь распознавать.
(Количество распознаваемых команд зависит от каскадности используемой нейросети и способа её обучения)
2) Сформировать для каждого сэмпла графики зависимости амплитуды(громкости) от времени и сохранить их в виде Bitmap.
3) Нормализовать полученные изображение по размеру (все изображения должны быть одинаковы по размеру)
4) Обучить нейросеть на полученные эталонные изображения.
Работа:
1) Получить потоковый звук с микрофона
2) Определить границы распознаваемого фрагмента по околонулевым значениям амплитуды (тишина)
3) Сформировать для записанного сэмпла график зависимости амплитуды(громкости)
получить Bitmap
4) Масштабировать Bitmap до тех же размеров, что и эталонные
5) Распознать полученное изображение, подав на вход нейросети.
В данном случае распознавание звука сводится к классическому распознаванию изображений
примеров которого в интернете достаточно много. В качестве источника для изображения может использоваться не только амплитуда, но и любая другая зависимость, делающая фрагмент гарантированно уникальным.
Данный метод - это редкостный изврат, но он работает (проверял еще в 2003 году)
требует от программиста лишь базовых навыков по созданию нейросетей (а с появлением Vuforia и OpenCV и их не нужно) и околонулевых знаний в МатАне.
В чем то вам может помочь вот эта статья на Habrahabr
P.S. Если же все же решитесь делать "по-человечески" - вот статья, с которой стоит начать: Простыми словами о преобразовании Фурье
Ответ 3
Как сравнить два аудиофайла?
Ответить самому себе на вопрос: какие конкретно алгоритмические различия должны быть выделены;
Потратить годы на изучение технологий распознавания и анализа речи/звуков;
Накопить целевую экспертизу;
Вовлечь в проект специалистов по теме;
Реализовать проект и получить PROFIT;
Стать с новой технологией вторым Марком Цукербергом.
Как-то так.
Я совсем не понимаю тех, кто проголосовал за поднятие этого вопроса. Наверное, эт
просто было бы круто, вот так вот взять и привести здесь код, который "различал" бы два аудио-файла по неизвестно каким требованиям и параметрам.
Наверняка именно это и побудило апвотеров так проголосовать. Но вопрос, на мой взгляд
глубоко теоретический, затрагивающий весьма специфические технологии, которые до сих пор "сидят" в инкубаторах крупных технологических компаний, и в которые [технологии] инвестируются миллионы долларов.
Короче говоря, этот вопрос не имеет однозначного ответа, потому что он, во-первых
задан без необходимых условий и дополнений; а во-вторых, задан без предварительного самостоятельного поиска решений.
Если уж очень хочется ответ на именно такой вопрос – используйте для сравнения HEX-редактор ;)
Ответ 4
Спектральный анализ Вам в помощь. Предполагаю, что первым этапом будет собрать набо
сэмплов, получить их спектры. Построить обобщенную модель "идеального" кашля. Дальше проводить корреляционный анализ используя те же сэмплы. Корректировать форму спектра/функцию его описывающую и по новой.
Ответ 5
Предлагаю обратить внимание на некоторые особенности в файле. Например, динамик
увеличения и уменьшения громкости относительно среднего уровня, разброс и динамика часто
и т. д. Скорее всего, при отсутствии необходимости распознавать речь, чего-то простого будет достаточно для решения поставленной задачи (по крайней мере, при небольшом числе образцов).
Ответ 6
В интернете есть попытки реализовать библиотеки выполняющие схожие функции.
Если я вас правильно понял, то вот библиотека для Java:
musicg.
В общем попробуйте использовать поиск Google. Если у вас есть небольшие проблем
с английским - к сожалению вам придется его подтянуть, чтобы иметь возможность искать и находить проекты не переведенные на русский язык и не озвученные русскоязычным сообществом. Вот вам ссылка на ответ в англоязычной версии Stackoverflow.
Комментариев нет:
Отправить комментарий