Автоматическое выделение звука
#1
Отправлено 06 Февраль 2019 - 15:47
Моя цель написать программу которая во входном аудиофайле надет все звуки,если такие есть и определит их источник, если он относится к музыкальным инструментам
Прочитав ряд статей по физической природе звука я понял следующее:
Каждый звук, издаваемый реальным объектом(не синтезированный), имеет так называемые "обертона", т.е. более тихие сопутствующие звуки, частота которых кратна частоте основного
Также я понял что тембр звука зависит от отношения громкости обертонов к громкости самого звука
Соответственно способ решения моей задачи должен быть не таким уж сложным, а именно:
1) я считываю файл и провожу БПФ, получая спектрограмму
2) для каждого момента времени на графике частота/громкость я ищу вершины, выделяющиеся из общей массы
вот так выглядит график частота/громкость для одной ноты на гитаре:
А вот так он выглядит с отмеченными на нем пиками:
3)Теперь мне надо найти среди них самый громкий, причем такой, чтобы он был выше определенного порога громкости(дабы не находить звуки в фоновом шуме)
Вот я его нашел:
(красным показан звук, черным показан пгрог громкости)
4)Теперь осталось выбрать те пики, чьи частоты кратны частоте основного звука и сравнить их отношения к содержимому базы данных и понять, что издает этот звук
И пока я работал с гитарой все работало идиально
Но впереди меня ждал ряд проблем
Проблема №1:
В большинстве случаев, обертона распологаются не четко на кратных позициях, а в определенном радиусе от них, причем у высоких звуков он порой составляет до 150Гц
Таким образом, четко определить обертона звука невозможно, что сильно ухудшает качество распознавания
Проблема №2:
Когда я тестировал алгоритм на записи звучания трубы я обнаружил такую картину:
Как можно видеть, пиком которому кратны другие является пик номер 1
В то время, как самым громким является пик номер 6
Возникает вполне очевидный вопрос: "Считать звуком самый левый в данной последовательности, или самый громкий?".
А если считать самый громкий, то являются ли его обертонами только номера кратные ему самому или также номера кратные пику номер 1?
P.S
Если я задал вопрос не в подходящем месте, то прошу сообщить об этом и указать подходящее
P.P.S
Если вам знаком способ выделения отдельных звуков из аудиозаписи, прошу сообщить, дабы я не мучался, изобретая велосипед
#2
Отправлено 06 Февраль 2019 - 17:51
Есть огромное количество музыкальных инструментов, издающих звуки, не вписывающихся в вашу "картину мира".
Простейший случай - ударные. Для простоты назовем их "барабанами".
Удар по мембране - это то, что первое всплыло в Вашем сознании, да... Но кто сказал, что не бывает удара по другим частям корпуса?
В современной "живой" музыке для "классических" инструментов встречаются и такие интересности, как "удар закрывающейся крышки рояля", и использование струнных, как идиофона (и смычком по корпусу - это еще наипростейший случай, ведь можно и шпилем виолончельки в пол постучать).
Композиторы любят повеселиться.
Так что не всё так просто, как завещал тот самый Жан-Батист ЖозЕф. :-). Хотя, формально, и "считабельно".
Вот Вам на посмотреть. Было придумано 69 лет тому назад. Всего.
Сообщение отредактировал Леонид Шихов: 06 Февраль 2019 - 17:52
#4
Отправлено 07 Февраль 2019 - 09:46
Удачи на дипломе!!
#5
Отправлено 07 Февраль 2019 - 10:50
Звук 0 - https://yadi.sk/d/tVsSTwUKrQl0sw
Звук 1(исходник) https://yadi.sk/d/T669wbXSA0kMRg
А всего то убрали атаку.
#6
Отправлено 07 Февраль 2019 - 11:11
Карабанов Александр (07 Февраль 2019 - 10:50) писал:
Сань, не всё.
В студенческие времена мы периодически развлекались "уклавесиниванием" фно и кабинетных роялей - это когда в каждый молоточек вставляется канцелярская кнопка и нечто занудное (как нам казалось) из ХТК Иоганна нашего Себастьяныча играет новыми красками, что, впрочем, так и было во всех смыслах (до концертного августа фёрстера дело не дошло - нас бы повесили прямо у входа, чтоб другим неповадно было).
Это я к тому, что иногда сложно даже представить, какие звуки может издавать тот или иной инструмент. Твик с кнопками стар до безобразия. А есть еще и приколюха с листами бумаги под демпферы. А скотч на струны? А на молотки? А часть вирбелей ослабить чуток, чтобы а-ля ковбойский кабак?
Какая, в пень, нейросеть это разбирать будет? и как?
ЗЫ: вот сейчас пишу и думаю... и это ф-нное отделение.... не эстрадники... не духовики... не баянисты-народники... оспадибоже... ф-но! ВРЕДИТЕЛИ!!!!!
Сообщение отредактировал Леонид Шихов: 07 Февраль 2019 - 11:12
#7
Отправлено 07 Февраль 2019 - 11:22
#8
Отправлено 07 Февраль 2019 - 12:04
Ну.... хрен его знает. Посмотрим :-)
#9
Отправлено 07 Февраль 2019 - 16:24
Всё закончилось на этом объявлении:
"Разыскивается математик. Профессиональные знания и навыки для первоначальной задачи:
- частотный (спектральный) анализ /ряды Фурье, теорема Найквиста-Шеннона и т.п./;
- кластерный анализ, построение матрицы сходства;
На втором этапе авантюры может быть востребовано:
- способность вспомнить, что такое сети Маркова;
- отсутствие фобии к формальным грамматикам распознающего типа;"
Математика не нашли и забили на проект))
Может, это как-то поможет вам?
Сообщение отредактировал Павел Константиновский: 07 Февраль 2019 - 16:24
#10
Отправлено 16 Февраль 2019 - 19:08
Побеседуете с пользой, надеюсь.
Сообщение отредактировал Михаил С.: 16 Февраль 2019 - 19:09
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных