TI TI Acquainter TI Acqforum TI FTP Service  
 
 
Список форумов TenderIrbis
Home - FAQ - Поиск - Пользователи - Группы - Регистрация - Профиль - Войти и проверить личные сообщения - Вход
 
Программа убирающая вокал из композиции!

 
Список форумов TenderIrbis -> Свободная тема(talk.free)
Начать новую тему   Ответить на тему Предыдущая тема :: Следующая тема
Автор Сообщение
*BCETPAX*
Душа форума


Зарегистрирован: 04.02.2005
Сообщения: 5031
Откуда: НЛО

СообщениеДобавлено: Ср, 12.10.2005 20:49:32    Заголовок сообщения: Re: Программа уберающая вакал из композиции! Ответить с цитатой

Джордж Буш! [AMERIKA] писал(а):
Подскажите! Surprised

такой нет. надо самому убирать с помощью SOUNDFORGE 8-9
тему на REAPER я создавал щас ссылку напишу

http://192.168.55.40/forum/viewtopic.php?t=16789252&highlight=
_________________
Дальше всех зайдет тот, кто не знает, куда идти. Embarassed Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение

Автор Сообщение
*BCETPAX*
Душа форума


Зарегистрирован: 04.02.2005
Сообщения: 5031
Откуда: НЛО

СообщениеДобавлено: Ср, 12.10.2005 21:34:20    Заголовок сообщения: Ответить с цитатой

Джордж Буш! [AMERIKA] писал(а):
*Кидатель тёлоК* писал(а):
http://192.168.55.40/forum/viewtopic.php?t=16789252&highlight=

Я там забанен и уже давно Sad


кто-то спрашивал ВОТ ПОЛУЧАЙТЕ

http://inprise.xportal.ru/forum/viewtopic.php?t=4031

Проблема такова: Есть Wav с песней. Хочу голос исполнителя вырезать.
План таков:
1) Закачка WAV в буфер памяти
2) Вычитание каналов со здвигом по фазе (сдвиг подбираем вручную или оставляем =0)
3) Поиск голоса исполнителя в более-менее чистом виде и получение его спектра (среднестатистического), обратное преобразование Фурье в функцию ~ голоса исполнителя
4) Вычитание функции из WAV

А теперь вопросы:
1) БПФ я встречал много где. Работает все по-разному. Часто после вырезания части спектра частот обратное преобразование дает сигнал с потерей мощноти (амплитуды). Почему? Почему эта потеря, как правило=1:2 ? Кто-то сказал, что зеркальные частоты виноваты...
Может быть, а как их убрать?
2) Как сделать полосовой фильтр без использования FFT (БП Фурье)
3) Что лучше : вычесть спектр голоса из спектра звука WAV или
получить функцию голоса и вычесть ее из WAV.
4)Есть ли какие нибудь еще соображения, как вырезать голос исполнителя из трека.
5) При преобразовании Фурье исходный сигнал - дискретный, реальный, комплексная часть =0. Делаем прямое и обратное преобразование. Получаем и реальные компоненты и комплексные, причем реальные в точности повторяют исходный сигнал. Вопрос: а чего это вдруг комплексные появились и каков их смысл, нужны ли они вообще или их просто надо игнорировать?

Мне кажется, что нужно составить суперпозицию методов и будет такой результат, который не дает ни один DeVocalizer. Вопрос только в том, какие методы взять, чтобы не перемудрить и при этом добиться хорошего результата.

Спасибо за внимание. Заранее благодарен и за ответы.
____________________________________________________________
ОТВЕТЫ: 1

Посмотрите обсуждение на тему преобразований Фурье http://borland.xportal.ru/forum/viewtopic.php?t=2364&highlight=%EA%EE%FD%F4%F4%E8%F6%E8%E5%ED%F2%FB+%F5%E0%ED%ED%E0
Частично это пересекается с вашим вопросом.
____________________________________________________________

ОТВЕТЫ: 2
Во первых, задача выделения голоса из музыки в чистом виде не осуществима, поскольку голос (полоса 300-3000 , а для пения до 5000 Гц), просто совпадает по полос с музыкальным сигналом (ухо слышит 20 - 20000). Поэтому, первый метод, который приходит на ум - просто использования набора перестраиваемых вручную полосовых и режекторных фильтров. Цифровые фильтры с неидеальными характеристиками (не прямоугольная АЧХ) делаются элементарно во временной области. Существует целая теория синтеза. Но на практике все выглядит просто: самый простой фильтр - фильтр с конечной импульсной хар-ой это просто взвешенная сумма задержанных на различное время отсчетов. Чтобы найти взвешивающие коэф. нужно на вход фильтра подать 1. На выходе должна получиться функция вида sinx/x (преобразование Фурье от прямоугольника). Таким образом, коэффициенты фильтра - это просто отсчеты ф. sinx/x с частотой дискретизации равной частоте дискретизации сигнала. Полоса фильтра будет определяться периодом sin - F = 1/T. (PS для незнающих математику: f(0) = sinx/x = 1 ).

На счет преобразования Фурье. Парни если бы я сказал не что подобное в институте когда учился, меня бы впороли на мраморе, а потом растреляли...

По порядку:
1)Операция прямое - обратное преобразование Фурье не вызывает потери качества, никогда! (не учитывая точности вычислений)
2)Если вырезать часть спектра в частотной области, естественно упадет мощность сигнала во временной. Можно вспомнить теорему Парсеваля: интеграл от квадрата модуля сигнала во временной области равен интегралу от модуля спектра.
3)При преобразовании Фурье спектр в общем случае имеет и вещественную и мнимую часть. Можно говорить также о амлитуде и фазе (они связаны известными соотношениями). Если после обратного преобразования Фурье получились комплексные компоненты - значит где-то ошибка. И вообще на практике часто применяют т.н дискретное косинусное преобразование: разложение в ряд Фурье четно продолженной выборке. В этом случае спектр имеет только реальную часть и все вычисления в 2 раза быстрее - не нужно возится с мнимыми составляющими.
__________________________________________________________
ОТВЕТ 3
Re:Devnvd
Я уже реализовал вырезание голоса путем вычитания каналов. Думаю проделать то же, но только с определенным спектром.
Кстати, Devnvd, я смотрел уже это сообщение, попробую... Есть только один момент : сама функция BPF работает не ахти: вырезаю кусок спектра и получаю далеко не идеальную функцию. Я находил БПФ и лучше. Но вот вопрос: может я просто не правильно пользуюсь ей?

Я уже понял такую вещь: ни одна функция БПФ не дает хороший результат после вырезания спектра и обратного преобразования.
НО! Если вырезать не спектр, а все его окружающее, получить исходную функцию этого куска, а уже потом эту функцию вычесть из исходного сигнала, то получается очень даже красивый и точный результат.
Беда только в том, что все функции работают по разному при обратном преобразовании куска спектра: кто амплитуду глушит в 2 раза, кто увеличивает в N раз (N-кол-во точек, измерений). Вот предложенная Devnvd`ом BPF дает результат, завышенный примерно в N/2 раз при обр. преобразовании части спектра и в N раз при полном обратном преобразовании всего спектра без изменения.
И мне кажется, что тут собака порыта именно в комплексной чати... Ну берется же она от куда-то. Надо, значит ее как-то учесть. Но как? Я не математик, а программист и до всего в математике приходится доходить самому. Но может кто знает?

Мои соображения... Поправьте, если ошибаюсь.
Есть такие наблюдения: Известно, что в местах всплеска спектра Фурье заложена информация о соотв. частоте f (действительная часть), фазе d (мнимая часть) и амплитуде A (sqrt(f*f+d*d)) (...+k1*A*sin(k2*ft+k3*d)+...). Но вот что интересно! В местах, где спектр -> 0 тоже заложены колебания исходного сигнала. И если обратно преобразовать эти зоны спектра в исх. функцию, то получится почни она, только слабее по амплитуде и, может, немного сдвинутая по фазе. Это означает, что надо очень аккуратно вырезать из спектра его кусок : даже если он ->0, то все равно мы можем потерять в мощности сигнала. Может этим и обосновано то, что обратное преобразование куска дает более слабый сигнал. (Не понятно, почему именно в 2 раза.)

Вопрос:
1)Если я хочу заглушить частоты с F-df по F+df, то частоты 0..F-df и
F+df..Fmax следует вообще обнулить в мнимой и действительной части, или их как-то надо преобразовать, чтобы они друг друка съели?
2) Вот есть преобразование сигнала в спектр и обратно. А есть алгоритмы для работы с самим спектром?
3) Кто нибудь слышал о преобразовании Хартли. Говорят, то же самое, но проще в реализации и работает побыстрее. Может его попробывать. Вот только где бы исходники раздобыть....
_________________________________________________________

Ответ 4

1. Занулять надо и действительную и мнимую части. Но в частотном спектре полученном при дискретном преобразовании Фурье мощность этой частоты является суммой мощностей как самого сигнала, так и составляющих частот полученных на границах интервала. Поэтому и применяется фильтр Ханна, чтобы на границах перед преобразованием уменьшить до возможного минимума амплитуды сигнала. Если потребуется впоследствии делать обратное преобразование, то уменьшать до абсолютного нуля нельзя.
2. С частотным спектром можно работать как с обычной гистограммой, применяя весь арсенал математики(от сложения до вычитания). Нормировкой может служить всё-что угодно или мощность на выбранной опорной частоте или интегральная мощность или комбинированная по отдельным частотам.

http://k-nikitin.narod.ru/Bookmark/Hartley.html
________________________________________________________

ответ 5

-Да, я тоже давно хотел... не нашел ... пришлось самому. Кстати, могу подсказать где взять пару девокалайзеров. 1) Вокал можно любым звуковым редактором вырезать (вычесть каналы). Я пробовал CoolEditPro. 2) Есть сами программки. Лучше всех - DartKaraokeStudio DeVocalizer. В инете можно скачать и сам пакет (12Мб) и крэк к нему. У него есть BASS-компенсация, т.е. восстанавливает басы после вырезания. Правда, в CoolEditPro легко то же самое сделать. Та программка, которую я хочу довести до ума вырезает вокал лучше всех, но шумы оставляет. Приходится их потом отфильтровывать в звуковом редакторе (это элементарно). И вот теперь я хочу еще сильнее подавить вокал, над чем и бьюсь. Я думаю, что долго эту задачу решать буду, пока результат мне понравится, так что исходники появятся не скоро. Но могу нынешнюю тестовую вырезалку прислать.
-Можно и музыку вырезать: вычесть из исходного сигнала все, кроме голоса исполнителя. Для этого вычтем каналы (Лев и Прав) и получим псевдо-стерео. Теперь из исходного сигнала вычтем полученное - останется в основном голос певца. Делать это можно в любом звуковом редакторе. Я использую CoolEditPro.

Продолжение темы...
УРРА!!! Нашел!!! Прав был Taras : надо было cos-БПФ делать. Точнее говоря, само cos-БПФ у меня тоже хреновенько заработало, но я не поленился и попробовал sin-БПФ. Эффект следующий: мощьность обратно преобразованного сигнала идеальная : 95-99% от исходного, причем не зависимо от того, как я извращал спектр!
За все время экспериментов я собрал приличную коллекцию реализаций БПФ. И sin-БПФ = лучший!

Теперь, найдя хорошее БПФ, пойду дальше...
Вопросики:
1) Нужно создать шумоподавитель. После вычитания каналов иногда появляется шум. Конечно можно в звуковом редакторе запись почистить, но интересно самому сделать... Опять же здесь я не спец, но на сколько знаю, "белый шум" вырезают так : дробят спектр частот на маленькие кусочки, и там, где F(f)<Fo, делают F(f)=0. Fo-порог шумоподавителя. Правильно?
2) Когда я буду делать преобразование в спектр сигнала stereo 16-бит, 44100Hz, то блок в 176400 байт, равный 1сек воспроизведения нужно разложить сразу или разбить его по частям? Т.е. 2х88200 байт при преобразовании Фурье с 1024 точками будет примерно 2х110 блоков с учетом нахлестов. Так?
____________________________________________________________

ОТВЕТ 6

AlmigoR! Просто Вы путаете преобразование Фурье и Дискретное преобразование Фурье. Первое дает спектр периодической НЕПРЕРЫВНОЙ функции и выражается действительно с помощью бесконечного ряда, который при обрезании кол-ва членов дает приближенный результат. Более того, в некоторых точках при ограниченнии ряда могут ввобще появляться всплески (особенно вблизи разрывов первого ряда). Дискретное же преобразование осуществляется на выборке точек. Спектр также получается дискретным и преобразование в частотную область и обратно абсолютно точное. Но! Нужно помнить две вещи: 1)Дискретная выборка получается по теореме Котельникова (или Найквиста), которая гласит, что при частоте дискретизации как мимнимум в два раза выше граничной частоты спектра возможно рпедставления неприрывного сигнала в виде набора дискретных отсчетов БЕЗ ПОТЕРИ ИНФОРМАЦИИ. Однако в природе ограниченных по спектру сигналов нет (любой конечный во времени сигнал имеет бесконечный спектр). Вот при дескретизации потеря информации происходит, но это обычно никого не шокирует - если не устраивает качество audioCD - 44кГц, слушай audioDVD - 100кГц. 2)Обычно при спектральном анализе используют БПФ на конечное число точек, меньшее объема выборки. В этом случае можно говорить лишь о спектральной оценке, которая обладает ошибкой, иногда анамально большой. Пример: пусть есть оцифрованный меандр (прямоугольный сигнал со скважностью 2) с периодом 1024 интервала дискретизации.
Будем брать спектральную оценку с помощью БПФ на окне 1024 точек. Получим дурацкий результат - сигнал иммет только постоянную составляющую. На самом деле любой человек, знакомый со спектральным анализом скажет, что спектр имеет огибающую вида sinx/x. Все дело в окне. Для получение более точных спектральных оценок используют взвешивающие окна: Кайзера, Хэмминга и др. В наиболее точных оценках используют скользящие окна. При этом чем больще количество точек в ДПФ, тем выше потенциально может быть качество оценки. Это нужно учитывать при обработке в частотной области. Возвращаясь к примеру: если применить к нашей спектральной оценке ФНЧ, то ничего не измениться: сигнал в виде постоянной составляющей безболезнено пройдет через фильтр нижних частот, хотя очевидно, что фронты меандра должны были бы быть сглажены.

Я предлагаю подумать над следующим алгоритмом.

Предположим на i фрагменте речь уже удалена, тогда на фрагменте i + 1 синтезируем фильтр с таким параметрами, что при пропускании через него сигнала s(i+1) спектральная оценка выходного сигнала S1(i+1) максимально совпадала бы с спектральной оценкой предыдущего фрагмента S1(i), уже очищенного от речи. Тогда речевой сигнал получим как d(i+1) = s(i+1) - s1(i+1). Коэффициенты фильтра получим решив задачу оптимизации (на самом деле я думаю, что это будет вычислительно очень сложно). Перед этой операцией имеет смысл обработать сигнал обычным полосовым фильтром (\с полосой 200 - 5000 Гц.
__________________________________________________________

ОТВЕТ 7

Если на входе системы есть две функции input1(t) и input2(t), о которых мы априорно ничего не знаем, а на выходе имеем функцию out(t), то поставленная вами, Taras, задача по разделению out(t) на input1(t) и input2(t), без обратной связи не разрешима. В качестве обратной связи могут служить фильтры. Причём эти фильтры будут также функциями от времени F(t). Насколько удачно подобранна функция F(t), в текущий момент, можно судить только по соответствию полученной после фильтрации функции ~out(t) нашим предположениям. То есть на выходе должен быть корректор функции F(t).

В данном случае такую задачу решает наш мозг, на основании перебора спектров слышанных ранее голосов и подавления его, например, чтобы лучше услышать музыку, или наоборот, подавление других частей спектра, чтобы услышать голос. Мозг заходит в тупик, когда спектр голоса и музыки совпадают.
Бывают ситуации когда конкретный голос нам неизвестен, и тогда мозг воспринимает его как шум, если музыка при этом гармонична.
_________________
_________________
Дальше всех зайдет тот, кто не знает, куда идти. Embarassed Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение

Начать новую тему   Ответить на тему    Список форумов TenderIrbis -> Свободная тема(talk.free) Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001,2003 phpBB Group  Silver_Xire background picture © BaRiMzI. made by  BaRiMzI





Свободная тема
Хочу познакомиться с ...
Дела душевные
Личный психолог
Юмор
Поэзия
Проза
Форум одного автора
Аниме
Спорт
Армия
Животные
Кулинария
Место встречи
Досуг
Вдали от дома
Фильмы
Музыка
Субкультура
Мода
Афиша
Праздники
Объявления
Чемпионаты
Наука
Общество
Учеба
Английский язык
Tech.Comp
Игры
Авто
Мобильные телефоны
Графика
Render
TI TI Acquainter TI Acqforum TI FTP Service