Открыть список
Как стать автором
Обновить
29
Карма
0
Рейтинг

Пользователь

Упаковка, компрессия и защита сборок

Спасибо! Исправил ссылку на Foundation Framework. Видимо, произошёл какой-то сбой с OneDrive, когда переименовывал файл.

Приобретать исходные коды вовсе не обязательно, но, возможно, они помогут сохранить кому-то много времени и сил в реальной работе. У меня в мыслях написать ещё несколько статей о нестандартных задачах, которые довелось решить при разработке этого редактора и других программ.

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Есть опыт работы с обоими библиотеками. XNA-фреймворк установлен по умолчанию со студией, а NAudio нужно доплнительно загружать, хотя это не проблема. XNA родной и мультиплатформенный (Win Desktop, Win RT, Win Phone), а также проще в освоении и использовании, по крайней мере, что касается звука. NAudio не мультиплатформенный и более сложный, но охватывает круг аудиозадач более широкий нежели первый собрат.

Думаю, для простого захвата сигнала с микрофона и его анализа, всё-таки легче использовать первый вариант.

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Наткнулся на интервью с создателем программы Melodyne, о которой упоминалось выше в комментариях.
Видео получасовое и на английском, но понять кое-что можно, даже если смотреть перематывая.
Возможно, кто-то отыщет для себя новое…

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Думаю, что в области разработки ИИ и компьютерного слуха в мире задействовано много учёных, но, к сожалению, ничего более конкретного рассказать не могу, и на данный момент у меня таких наработок нет.

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

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Оу, большое спасибо за ссылку! Проверил, алгоритм работает!
Бьюсь об заклад, что многие гитарные тюнеры, виденные мной, используют именно его.
Отклик быстрее, чем у преобразования Фурье с окном 2048 при сравнимой точности.
Но алгоритм распознаёт лишь один пик, поэтому применение его ограничено, однако если использовать в связке с преобразованием Фурье, то, вероятно, можно достичь весьма интересных результатов…

Чтобы пример по ссылке заработал с реальным сигналом с микрофона, добавьте в проект ссылку Microsoft.Xna.Framework, затем закомментируйте строчки
            m_timer = new DispatcherTimer();
            m_timer.Interval = TimeSpan.FromMilliseconds(m_timeInterval);
            m_timer.Tick += OnTimerTick;
            m_timer.Start();

и вместо них допишите
            var timer = new DispatcherTimer();
            timer.Tick += (sender, args) => FrameworkDispatcher.Update();
            timer.Start();

            var device = Microphone.Default;
            device.BufferDuration = TimeSpan.FromMilliseconds(100);
            var bufferSize = device.GetSampleSizeInBytes(device.BufferDuration) / 2;
            var sampleBytes = new byte[2 * bufferSize];

            device.BufferReady += (sender, args) =>
            {
                var sampleSizeInBytes = device.GetData(sampleBytes);
                var sampleSize = sampleSizeInBytes / 2;
                var sample = new double[sampleSize];
                for (var i = 0; i < sampleSize; i++)
                {
                    sample[i] = Convert.ToDouble(BitConverter.ToInt16(sampleBytes, 2 * i));
                }
                m_pitchTracker.ProcessBuffer(sample.Select(t=>(float)t).ToArray());

                UpdateDisplay();
            };

            FrameworkDispatcher.Update();
            device.Start();

Скомпилируйте.

А теперь настраивайте гитару!

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Посмотрел обучающие видеозаписи по Melodyne, и меня они очень впечатлили, вот что значит профессиональный инструмент обработки аудио. Думаю, он стоит своих денег. Предполагаю, что тут как раз таки активно используются фазовые методы коррекции аудиосигналов, как, например, по этой ссылке www.guitarpitchshifter.com/algorithm.html.

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Хороший вопрос.

Извлечь партии инструментов, слабо пересекающихся спектрально, технически можно уже сейчас. Нужно просто применить эквалайзер и заглушить ненужные частоты. Однако на практике как раз таки сложнее всего раскладывать по нотам низкочастотные звуки, поскольку в области басов ноты расположены ближе друг к другу по частоте, поэтому нужно применять более длинные кадры, что ведёт к низкому временному разрешению.

С инструментами, имеющими близкие спектры, дело обстоит намного интереснее. Ведь их мы распознаём именно по тембральной окраске, восприятие которой во многом имеет псюхо-аккустическую природу. Поскольку человек с помощью своего слухового аппарата может выполнить эту задачу, то, теоретически, это доступно и компьютеру… Но для этого нужна, как минимум, специально обученная нейронная сеть. Обучением этой сети, как раз-таки и занимаются люди слушая звуки мира, различную музыку, музицируя…

Одному человеку, как говорят, медведь на ухо наступил, а другой способен различить разницу в неколько герц. И дело здесь скорее не в особенностях строения уха, а именно в обученности нейронной сети, котороя, к слову, начинает закладываться в раннем детстве, вероятно даже, ещё в утробе матери… Учёные проводили эксперимент, только что родившемуся котёнку, заклеивали один глаз, а спустя пару недель повязку снимали, но котёнок на всю жизнь оставался слеп на этот один глаз, хотя физиологически всё было здорово… То есть способность к зрению закладывается именно в самом раннем детстве, а потом её уже так просто не восстановишь. Поэтому, когда мама и папа поют или разговаривает с ещё не родившимся малышом, то это совершенно не пустое занятие, как может показаться прагматичному человеку.

Вспомните, как звучит для вас иностранный язык, которого вы не знаете. Это просто набор слитных звуков, непонятная аброкадабра. Но когда вы начали его изучать, вдруг, вы обнаруживаете способность выхватывать отдельные слова, сочетания, предложения… А если овладели языком в совершенстве, то даже в шумной обстановке по обрывкам фраз можете восстановить то, что сказал собеседник.

То же самое и с музыкой, когда вы слушаете её много, то начинаете различать оттенки, вибрато, вдруг в старых композициях находите для себя новые звуки, которые почему-то раньше не замечали.

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

То есть, использовать информацию из нескольких окон подряд? Практически то же самое, что и использовать окно большего размера.

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

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Спасибо! Пока ещё детально не разобрался, но меня заинтересовал подход.

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

На текущий момент у меня подобных наработок нету, хотя, возможно, кто-то этим уже занимается. Разработка подобных алгоритмов требует огромного труда и ресурсов, а эта статья, как и мобильное приложение к ней, написаны на энтузиазме :)

Не знаю точно, получится ли дальнейшее развитие в этом направлении. Увидим…

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Попробуйте Akoff Music Composer.
Правда, он платный, но 10 секунд можно преобразовать бесплатно :)

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Насколько мне удалось понять, в квантовой механике особый взгляд на природу времени, в рамках которого понятия первично и вторично теряют привычный смысл, поэтому вопрос будет некорректен :)

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Существует также хорошая программа для подбора нот — Transcribe!.
Только она работает не в реальном времени с потоковым аудиосигналом, а с готовым треком.

image

image

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Спасибо! Вы абсолютно правы, иллюстрации брал из интернета и не обратил внимания на эту ошибку. Постараюсь исправить в ближайшее время.

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

О связи преобразования Фурье с принципом неопределённости Гейзенберга можно подробнее прочитать по ссылкам:
ru.wikipedia.org/wiki/Принцип_неопределённости
pandia.org/text/77/481/644.php

Информация

В рейтинге
5,747-й
Зарегистрирован
Активность