Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Работа со звуком > основной тон


Автор: Robomozg 15.4.2009, 09:56
Необходимо разработать программу выделения основного тона фильтровым и автокорреляционным методами. Подскажите как выделять основной тон этими методами. Или источники на какие-нибудь материалы. В нете что то ничего найти не могу.  smile 

Автор: bilbobagginz 15.4.2009, 10:26
Цитата(Robomozg @  15.4.2009,  09:56 Найти цитируемый пост)
Необходимо разработать программу выделения основного тона фильтровым и автокорреляционным методами. Подскажите как выделять основной тон этими методами. Или источники на какие-нибудь материалы. В нете что то ничего найти не могу.

в принципе эта задача - смешение DSP (т.е. цифровой обработки сигнала) с нотной грамотностью. 

тон - это частота. частоты можно отделять BPF ( band-pass filter )

в куске звука в каждый момент существуют несколько частот. обычно в "гармоничной" т.е. традиционной музыке все эти частоты составляют группу ступеней "аккордов". аккордов - конечное количество, и в каждом известна доминантная частота (нота).
создавай б.д. аккордов.
определяй на каком аккорде находишься в каждый промежуток времени. 
расщепление на частоты будет сделано фильтром. определение корреляции с коллекцией аккордов - "автокорреляция".

в общем тему надо в DSP раздел, если такоковой имеется...


лучше всего - отталкиваться от http://en.wikipedia.org/wiki/Chord_(music) статьи о аккордах по-английски,  погулять по ссылкам с неё выходящим, и посмотреть их переводы.
Можно посоветоваться с музыкантами (но с настоящими, которые знают нотную грамоту и теорию)
вот некоторые ссылки, найденные из основной статьи мной:
  • http://ru.wikipedia.org/wiki/%D0%93%D0%B0%D1%80%D0%BC%D0%BE%D0%BD%D0%B8%D1%8F
  • http://ru.wikipedia.org/wiki/%D0%90%D0%BA%D0%BA%D0%BE%D1%80%D0%B4
  • http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B5%D0%B7%D0%B2%D1%83%D1%87%D0%B8%D0%B5

насчёт фильтровки - посмотри в статьях о DSP.


Автор: Robomozg 15.4.2009, 13:15
Забыл упомянуть, что мне нужно выделить основной тон речевого сигнала.  smile 

Автор: maxim1000 15.4.2009, 14:06
помню, когда с этим сталкивался, искался авторегрессионный фильтр, наиболее хорошо приближающий сигнал - || x[n] - a1*x[n-1] - a2*x[n-2] - ... - aM*x[n-M] ||^2 -> min, остаток был очень похож на последовательность всплесков, период которых уже можно было искать чем-то простым

а можно сразу смотреть на автокорреляционную функцию исходного сигнала и искать там пики

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)