close

Вход

Забыли?

вход по аккаунту

?

Курсовая1

код для вставкиСкачать
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
«ВОЛГОГРАДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
институт Математики и информационных технологий
кафедра Информационных систем и компьютерного моделирования
Допустить работу к защите
Зав. каф. ИСКМ
______________ А.В. Хоперсков
«____» ________________ 2012г.
Карнов Николай Валерьевич
Разработка компьютерной программы для изменения частоты звукового
сигнала без изменения его длительности
Отчет о научно-исследовательской работе
Студент
Карнов Н.В.
(дата, подпись)
Специальность
Информационные системы и технологии
Группа
ИСТ-101
Научный руководитель
к.ф.-м.н., доцент каф. ИСКМ
Кузьмин Н.М.
(дата, подпись)
Нормоконтролер
Мищенкова Е.С.
(дата, подпись)
Волгоград 2012
Содержание
Введение
5
1 Алгоритм питч-шифтинга
8
1.1 Основные термины и определения
8
1.2 Наложение кадров
9
1.3 Фаза вокодер
10
1.4 Передискретизация
13
2 Разработка алгоритма питч-шифтинга
16
3 Реализация алгоритма
17
Заключение
19
Список литературы
20
4
Введение
Высота и темп − это понятия, которые пришли из музыки, но не из звука.
Они очень связаны с нашим восприятием окружающих звуков, и мало связаны
с физикой [1]. Частота − понятие физическое, характеризует колебательный
процесс, измеряется в колебаниях в секунду или герцах. Высота же − это
субъективное ощущение, психофизический аналог частоты. Человек может
определять высоту для различных звуков, даже для непериодических волн. На
основании этого ощущения, мы можем сказать, что один звук выше другого
или ниже. Кроме того, человек своим ухом улавливает разницу высот интервалы. Некоторые интервалы более приятны для слуха, другие менее. Так,
человек выстраивает все звуки по высоте, от низких до высоких, выделяет
среди них только те, что отстоят друг от друга в благоприятных интервалах,
называет их нотами и использует для написания музыки. Высоту можно
обозначать нотами соответствующей октавы, а можно измерять в герцах.
Темп − это количественная характеристика ритма. Ритм связан со
свойством человека, выстраивать звуки во времени, искать закономерности в
повторяющихся последовательностях [3]. Темп измеряется в количестве тактов
в минуту.
Если мы имеем дело с живой музыкой, то темп и высота легко меняются.
Переходим в другую тональность, замедляем или убыстряем темп, играем
произведение по-другому [2]. В электронной музыке еще быстрее: меняем
параметр BPM и транспонируем партитуру, запускаем секвенсоры, драммашины и синтезаторы снова. Но что делать, если мы имеем дело с уже
записанной и оцифрованной звуковой волной? Каким образом изменить темп и
высоту в произвольном куске звука?
Один очевидный и известный способ воздействия на темп и высоту есть.
Все знают, что если пластинку проигрывать быстрее, то высота сдвигается −
обычный голос становится смешным голосом Буратино. Обратно, если
5
проиграть медленно получится медленный низкий голос. Одновременно с этим
изменяется не только высота, но и темп. Вот так связаны высота звука и темп
при изменении скорости проигрывания. Самая сложная задача появляется
тогда, когда мы хотим независимо друг от друга сдвигать высоту и менять
темп. Оказывается, что можно лишь в некоторой степени имитировать то, что
высота сдвигается, а темп не меняется [1]. Но есть небольшая проблема, и
состоит она в том, что высота и темп фактически одно и то же. А
воздействовать на эти вещи необходимо по-разному. Проблема границы
говорит нам о том, что есть область между темпом и высотой − (10-20 Гц) −
это область шероховатости звука. Так, например, свойство звука "РРРР" быть
таким мелкоребристым по ощущению или свойство хоруса быть шероховатым
− это звуковые объекты именно этого масштаба. Эта область и является
критической для сдвига высоты и перемены темпа − эти эффекты должны
действовать здесь аномально [12].
Поэтому
задача
сдвига
высоты
−
интересная
задача.
Она
не
формализуется. Потому что требуется менять не физические параметры, а
психоакустические. То есть её надо решать так, чтобы человеку казалось, что
темп остаётся, а высота меняется, и при этом все свойства звука остаются. Это
означает, что у этой задачи нет единого решения, а есть много, и они разные
[1].
Питч-шифтинг − звуковой эффект или соответствующее устройство,
добавляющее к сигналу его копию, отстоящую от основного тона на любой
интервал в пределах двух октав вверх или вниз [2].
Основное применение состоит в транспонировании в другие тональности
записанных вокальных партий и партий в исполнении реальных инструментов.
Кроме того, с помощью Pitch Shift можно корректировать по высоте те
фрагменты партии, которые певцом или музыкантом исполнены фальшиво.
Поскольку одновременно можно задавать не один, а несколько интервалов
транспонирования, Pitch Shift способен выполнять также роль гармонайзера:
6
формировать заданные аккорды, основанные на тоне обрабатываемого
фрагмента аудиоданных [4].
Целью исследования является рассмотрение алгоритмов изменения
частоты звукового сигнала, не изменяя его длительности, и реализация одного
из них.
Для достижения данной цели необходимо решить следующие задачи:
1) рассмотреть алгоритмы для изменения частоты сигнала, не изменяя
его длительности;
2) выбрать один из них для реализации;
3) разработать информационную модель;
4) реализовать и протестировать программу.
Объектом
исследования
является
цифровая
обработка
сигналов.
Предметом исследования являются алгоритмы изменения частоты звукового
сигнала, не изменяя его длительности.
Данная работа состоит из введения, трех глав, заключения и списка
литературы. Во введении определены актуальность выбранной темы, цель,
задачи, средства, методы, предмет, объект и структура работы. В первой главе
описаны алгоритмы изменения частоты. Во второй главе описаны этапы
разработки одного из алгоритмов. В третьей главе описана полученная
программа и все ее функции. В заключении сделаны выводы о результатах
проведенной работы.
7
1 Алгоритм питч-шифтинга
1.1 Основные термины и определения
Фактор масштабирования определяется как коэффициент, используемый
для растяжения или сжатия спектра для регулировки частоты, таким образом,
что поле сдвигается. Как только это будет сделано, мы будем выполнять
интерполяцию для возврата к первоначальной продолжительности [2].
Например, если мы хотим изменить частоту вверх на один полутон, нам
нужно использовать масштабный коэффициент, который равен 1,0594. Это
значит, что нам сначала нужно растянуть сигнал без изменения высоты, таким
образом, что продолжительность умножается на 1,0594. После этого, нам
нужно играть сигнал 1,0594 раз быстрее (рисунок 1).
Рисунок 1 − Как переместить частоту вверх на один полутон (рисунок
заимствован из http://www.guitarpitchshifter.com/algorithm.html)
С другой стороны если мы хотим изменить частоту вниз на один полутон,
нам нужно использовать масштабный коэффициент, который равен 0,9439 [3].
Это значит, что нам сначала нужно сжимать сигнал без изменения высоты,
8
таким образом, что теперь продолжительность умножается на 0,9439. После
этого, нам нужно играть сигнал медленнее на 0,9439 (рисунок 2).
Рисунок 2 − Как переместить частоту вниз на один полутон (рисунок
заимствован из http://www.guitarpitchshifter.com/algorithm.html)
1.2 Наложение кадров
Мы разобьем наш сигнал на много небольших кадров. Эти кадры взяты
из исходного сигнала так, что они перекрывают друг друга на 75%. Эти кадры
затем будут расположены по-разному для того, чтобы растянуть или сжать во
времени выходной сигнал (рисунок 3) [6].
Но теперь у нас есть одна проблема, когда мы изменяем кадры, это
создает разрывы (рисунок 4).
Это даст сбой, который будет воспринят человеческим ухом. Мы должны
сделать что-то, чтобы убедиться, что нет никакого разрыва [6].
9
Рисунок 3 − Растяжение и сжатие сигнала кадр за кадром (рисунок
заимствован из http://www.guitarpitchshifter.com/algorithm.html)
Рисунок 4 − Разрыв сигнала при растяжении или сжатии во времени
(рисунок заимствован из http://www.guitarpitchshifter.com/algorithm.html)
1.3 Фаза вокодер
На рисунке 5 показано как работает алгоритм вокодер. Он состоит из трех
этапов: анализ, обработка и обобщение [7].
10
Рисунок 5 − Обзор алгоритма (рисунок заимствован из
http://www.guitarpitchshifter.com/algorithm.html)
Анализ. Оконный процесс − вынимает маленький кадр из большого
сигнала. Он изменяет спектр сигнала, и этот эффект нужно свести к минимуму.
Чтобы уменьшить оконный эффект на представлении частоты сигнала,
используется окно Хемминга размером N (рисунок 6) [8].
Рисунок 6 − Оконный процесс (рисунок заимствован из
http://www.guitarpitchshifter.com/algorithm.html)
Структура, сделанная из образцов N, преобразуется с помощью быстрого
преобразования Фурье как показано в уравнении (1.1) [9].
11
 j( 2kn)
N 1
N
( Х [k ])   x[n  i * (hop )]w[n]e
,
n0
(1.1)
где k=0, 1, 2, …, N-1.
В предыдущем уравнении, x[n] типовой сигнал, w[n], представляет окно
Хемминга и X[k] представляет дискретный спектр структуры i. Чтобы
увеличить разрешение спектра, окна перекрыты с фактором 75%. Число
образцов между двумя последовательными окнами упоминается как размер
перелета и равно N/4 для наложения на 75%.
Обработка. Применение быстрого преобразования Фурье длины N
начинающиеся от 0 до (N-1)/N*f с интервалом f/n, где f-скорость частоты
дискретизации. Сигнал с частотой, которая падает между двух кадров будет
смазываться, и его энергия будет распространяться через близлежащие кадры.
Фаза информации используется для улучшения точности оценки частоты
каждого кадра. Рисунок 9 показывает две волны синуса с немного
отличающимися частотами. Эти структуры разделены на структуры образцов
N. Окна не накладываются. Первая волна синуса имеет частоту и таким образом
падает точно на первую частоту кадра. У второй волны есть частота, немного
больше, чем первая частота кадра [8].
Рисунок 9 − Волны синуса с различными частотами и разностью фаз
(рисунок заимствован из http://www.guitarpitchshifter.com/algorithm.html)
12
Информация о фазе двух последовательных структур представляет
существенный интерес. Для первого сигнала между двумя структурами нет
никакой разности фаз. Однако, для второго сигнала, фаза первого кадра
больше,
чем
ноль.
Это
подразумевает,
что
компонент
сигнала,
соответствующий этому кадру, выше, чем частота исходного кадра. Разность
фаз между двумя структурами упоминается как изменение фазы.
Синтез [11]. Таким образом, теперь нам удалось приспособить фазу в
области частоты для нашего текущего сигнала. Теперь мы должны
возвратиться к временному интервалу. Для этого используем обратное
преобразование Фурье уравнение (1.2).
 j 2kn
1 N 1
N w[n]
qi [n]  i  ( X i [k ])i e
N k 0
(1.2)
Каждая структура тогда добавлена к наложению, как показано в
уравнении (1.3). Переменная L обозначает число структуры и представляет
функцию шага единицы [11].
L1
y[n]   qi [n  i]u[n  i * hopi ]  u[n  i * hopi  N ]
io
(1.3)
1.4 Передискретизация
Теперь мы получили
времени,
а
частота
передискретизировать
сигнал, который либо сжат, либо растянут по
осталась
наш
не
сигнал
изменой.
Теперь
возвратиться
мы
к
должны
начальной
продолжительности и изменить частоту. Предположим, что у нас есть
предположенные на рисунке 8 данные выборки, и мы хотим удвоить частоты.
13
Самый простой вариант состоит в том, чтобы выбрать каждый второй элемент
и воспроизводить результат [15].
Рисунок 8 − Передискретизация при выборке каждого второго элемента
(рисунок заимствован из http://www.guitarpitchshifter.com/algorithm.html)
Теперь это легко, потому что когда мы удваиваем частоту, мы имеем дело
с коэффициентом масштабирования, который является целым числом. Если
коэффициент масштабирования не целое число (например 1,0594, когда мы
перемещаем частоту на один полутон), то мы не можем использовать ту же
самую технику. Вместо этого мы будем использовать линейную интерполяцию,
чтобы
приблизить образец который должен лечь в этом местоположении.
Линейная интерполяция ведет себя, так же как и фильтр низких частот и таким
образом удаляет большую часть возможного совмещения имен, когда мы
субдискритизируем [14]. На рисунке 9 показано изменение частоты сигнала с
коэффициентом масштабирования 1,2.
14
Рисунок 9 − Линейная интерполяция
15
2 Разработка алгоритма питч-шифтинга
Рассмотрим диаграмму вариантов использования для полученной мною
программы, которая показана на рисунке 12.
Рисунок 12 − Диаграмма вариантов использования
Итак, как мы видим из диаграммы, пользователь должен сначала открыть
аудио файл. Далее, он может просматривать информацию о файле,
воспроизводить аудио файл и изменять эффект питч-шифтинга вниз или вверх
на одну октаву. После смены эффекта пользователь может сохранить
полученный им результат наложения эффекта.
16
3 Реализация алгоритма
Рассмотрим главное окно полученной программы показанное на
рисунке 13.
Рисунок 13 − Главное окно
Сначала пользователь должен открыть аудио файл, далее он может
изменять эффект Pitch в режиме реального времени.
Возьмем аудио файл и построим для него спектр сигнала начальный
и при максимальных изменениях частоты. Полученные результаты показаны
на рисунках 14, 15, 16.
Рисунок 14 − Спектр для начального сигнала
17
Рисунок 15 − Спектр сигнала при изменении питч-шифтинга +12
Рисунок 16 − Спектр сигнала при изменении питч-шифтинга -12
18
Заключение
В результате выполнения научно-исследовательской работы мною был
рассмотрен
алгоритм
питч-шифтинга,
который
применяется
для
транспонирования в другие тональности записанных вокальных партий и
партий в исполнении реальных инструментов. Кроме того, с помощью Pitch
Shift можно корректировать по высоте те фрагменты партии, которые певцом
или музыкантом исполнены фальшиво. Поскольку одновременно можно
задавать не один, а несколько интервалов транспонирования,
Pitch Shift
способен выполнять также роль гармонайзера: формировать заданные аккорды,
основанные на тоне обрабатываемого фрагмента аудиоданных.
При реализации данного алгоритма я получил программу, в которой
можно изменять эффект питч-шифтинга в режиме реального времени. Интервал
изменения частоты звукового сигнала равен от 1 октавы вверх до двух октав
вниз. Изменил частоту на максимальный и минимальный уровень и построил
для них спектры и так же построил спектр для исходного сигнала.
19
Список литературы
1. Cook, P and Scanove, G The synthesis toolkit. Proceedings of the International
Computer Music Conference, 1999 — 100 p.
2. Keith, L. An efficient method for pitch shifting digitally sampled sounds
Computer Music Journal, 13(4):65–71, 1989 — 40 p.
3. Sklar, G. A. Wavelet-based Pitch-shifting Method. — М.:МИР, 2008. — P. 10.
4. Блейхут, Р. Быстрые алгоритмы цифровой обработки сигналов. — М.:Мир,
1989. — 448p.
5. Буч, Г., Рамбо Д., Джекобсон, А. Язык UML. Руководство пользователя. —
2-е изд. — СПб.: ДМК Пресс, Питер, 2004. — 432с.
6. Даджион, Д. Мерсеро, Р. Цифровая обработка многомерных сигналов. —
М.: Мир, 1988. — 488 с.
7. Марпл-мл., С. Л. Цифровой спектральный анализ и его приложения. —
М.:МИР, 1990. — С. 584.
8. Оппенгейм, А., Шафер, Р. Цифровая обработка сигналов. Изд. 2-е, испр. —
М.: Техносфера, 2007. — 856 с.
9. Рабинер, Л., Гоулд, Б. Теория и применение цифровой обработки сигналов.
— М.: Мир, 1978. — 848 с.
10. Хемминг, Р. В. Цифровые фильтры. — М.: Недра, 1987. — 221 с.
11. Афонский, А. А., Дьяконов, В. П. Цифровые анализаторы спектра, сигналов
и логики.— М.: СОЛОН-Пресс, 2009. — 248 с.
12. Глинченко, А. С. Цифровая обработка сигналов. В 2 ч. — Красноярск: Издво КГТУ, 2001. — 383 с.
13. Гольденберг, Л. М. Цифровая обработка сигналов. Учебное пособие для
вузов. — М.: Радио и связь, 1990. — 256 с.
14. Гольденберг, Л. М. Цифровая обработка сигналов. Справочник. — М.:
Радио и связь, 1985. — 312 с.
20
15. Дьяконов, В. П. Современная осциллография и осциллографы. — М.:
СОЛОН-Пресс, 2004. — 320 с.
16. Макс, Ж. Методы и техника обработки сигналов при физических
измерениях. В 2-х тт. — М.: «Мир», 1983.
17. Сергиенко, А. Б. Цифровая обработка сигналов. — СПБ.: Питер, 2007. —
751 с.
18. Цыкин, И. А. Дискретно-аналоговая обработка сигналов. М.: Радио и
связь, 1986. — 213 с.
21
Документ
Категория
Компьютеры, Программирование
Просмотров
59
Размер файла
404 Кб
Теги
курсовая
1/--страниц
Пожаловаться на содержимое документа