Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Цифровая обработка динамических данных Пахомов Сергей Николаевич

Цифровая обработка динамических данных
<
Цифровая обработка динамических данных Цифровая обработка динамических данных Цифровая обработка динамических данных Цифровая обработка динамических данных Цифровая обработка динамических данных Цифровая обработка динамических данных Цифровая обработка динамических данных Цифровая обработка динамических данных Цифровая обработка динамических данных
>

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Пахомов Сергей Николаевич. Цифровая обработка динамических данных : Дис. ... канд. физ.-мат. наук : 01.01.07 СПб., 2005 99 с. РГБ ОД, 61:05-1/776

Содержание к диссертации

Введение

1 Анализ сегмента спектра Фурье и синтез сегмента входного сигнала 10

1.1 Предварительные сведения 10

1.2 Алгоритм вычисления сегмента спектра Фурье с прореживанием по времени 15

1.3 Алгоритм вычисления центрального сегмента спектра Фурье с прореживанием по времени 20

1.4 Алгоритм вычисления сегмента входного сигнала с прореживанием по времени 24

1.5 Алгоритм вычисления сегмента спектра Фурье с прореживанием по частоте 28

1.6 Алгоритм вычисления сегмента входного сигнала с прореживанием по частоте 32

1.7 Алгоритм вычисления центрального сегмента входного сигнала с прореживанием по частоте 36

1.8 Сравнение с существующими алгоритмами 41

2 Анализ скользящего сегмента спектра Фурье 44

2.1 Предварительные сведения 44

2.2 Алгоритм вычисления полного спектра при сдвиге сигнала на один отсчет 46

2.3 Алгоритм вычисления сегмента спектра при сдвиге сигнала на один отсчет 50

2.4 Алгоритм вычисления полного спектра при двоичном сдвиге сигнала 56

2.5 Алгоритм вычисления сегмента спектра при двоичном сдвиге сигнала 61

2.6 Сравнение с существующими алгоритмами 71

3 Применение алгоритмов обработки динамических данных 74

3.1 Предварительные сведения 74

3.2 Задача восстановления высоких гармоник звуковых одно- и двухканальных сигналов 76

3.3 Алгоритм решения 78

3.4 Требования к программно-аппаратному комплексу . 83

3.5 Описание разработанного программного продукта . 83

3.6 Эксперименты по восстановлению моно- и сетеросиг-налов 87

3.7 Другие задачи обработки звука 90

Литература

Введение к работе

В дискретном гармоническом анализе [1, 8, 9, 31, 32] фундаментальную роль играет дискретное преобразование Фурье (ДПФ) [3, б, 17, 33]. С момента изобретения в 1965 г. алгоритма быстрого преобразования Фурье (БПФ) [2, 5, 10, 11, 12, 13, 15, 36] последний находится в центре внимания как математиков, так и инженеров, занимающихся цифровой обработкой сигналов [4, 7, 16, 28, 29, 38]. В последние годы интерес к БПФ повысился в связи с тем, что возникла необходимость обрабатывать непериодические сигналы, имеющие огромное число отсчетов. В первую очередь это относится к цифровой обработке звуковых сигналов [25, 26, 27] и изображений [18, 24, 34].

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

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

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

Первый подход может быть реализован с применением любого известного быстрого преобразования (в частности, алгоритма Кули-Тьюки). Достоинством этого метода является быстрота, достигаемая за счет использования периодической техники. Однако существенным недостатком такого метода являются производимые им лишние операции, направленные на вычисление неиспользуемых в дальнейшем компонент. Второй подход реализуется с использованием алгоритма Герце-ля [14, 37], вычисляющего индивидуальную компоненту спектра. В отличие от алгоритма Кули-Тьюки, этот метод не производит лишних вычислений. Однако его недостатком является низкое быстродействие при больших длинах сегмента.

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

Вторым способом устранения эффекта искажения спектра является применение так называемых взвешивающих (или весовых) окон [35]. Выбранный для анализа отрезок сигнала домножается на весовое окно, которое плавно сводит его к нулю на концах анализируемого участка. Существует множество окон, все они имеют похожую форму и в значительной степени устраняют рассмотренные искажения спектра. Однако, выбор весовой функции влияет на многие показатели гармонического анализа. В том числе, на обнаружимость, степень достоверности и легкость реализуемости вычислительных операций. Для каждого конкретного приложения предпочтительно использовать свое окно. Это является существенным недостатком, поскольку в большинстве случаев про анализируемый сигнал заранее ничего не известно. По этой причине взвешивающие окна в диссертационной работе не рассматриваются.

Наконец, третий способ борьбы с искажением заключается в анализе спектра Фурье, скользящего вдоль оси дискретного времени. Т.е. каждый раз при сдвиге сигнала его спектр вычисляется заново. В настоящее время существует два подхода к вычислению скользящего спектра: статические и динамические алгоритмы пересчета.

К разряду статических относятся все классические алгоритмы БПФ (в частности, алгоритм Кули-Тькжи). Однако статические алгоритмы не являются оптимальными, поскольку в своей работе не принимают во внимание результаты расчетов, полученные на предыдущих шагах скольжения.

Динамическими являются алгоритмы, работающие с учетом накопленной информации. Основные подходы к синтезу таких вычислительных схем рассмотрены в [30]. В вычислительном плане предложенные в этой работе алгоритмы значительно эффективнее статических. Но они имеют существенный недостаток, поскольку применимы для сдвига (скольжения) спектра только на один отсчет.

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

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

На защиту диссертации выносятся следующие основные результаты:

1) Алгоритмы анализа сегмента спектра Фурье по полному сигналу и алгоритмы синтеза сегмента входного сигнала по полному спектру с прореживанием по времени и по частоте.

2) Алгоритмы анализа центрального сегмента спектра Фурье и синтеза центрального сегмента входного сигнала,

3) Алгоритмы анализа скользящего сегмента спектра Фурье при сдвиге входного сигнала на один отсчет и при двоичном сдвиге сигнала. Для всех предложенных алгоритмов проведена оценка эффективности в сравнении с существующими вычислительными схемами. Разработано программное обеспечение для решения задачи восстановления высоких гармоник моно- и стереосигналов.

Основные результаты диссертационной работы опубликованы в работах [19, 20, 21, 22, 23].

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

Алгоритм вычисления сегмента спектра Фурье с прореживанием по времени

В этой главе и в дальнейшем в работе будем использовать следующие обозначения: Z — множество целых чисел; а : Ь — множество последовательных целых чисел {а, а + 1,..., Ь], Целое число j можно единственным образом представить в виде где г — натуральное число и f Є 0 : г — 1. Для неполного частного f и остатка j" используются обозначения

Пусть s — натуральное число и N = 2 . Обозначим через Cjv линейное пространство комплекснозначных N-периодических функций целочисленного аргумента х — x(j), j Є . Элементы простран ства CJV будем называть сигналами, а величины x(j) — компонентами (или отсчетами) сигнала. Дискретное преобразование Фурье Э л : Сдг — CN сопоставляет сигналу х сигнал X = 3 дг(ж) с компонентами где ш/м — ехр(2тп /.ЛГ). Сигнал X называется спектром Фурье сигнала , а величины Х(к) — компонентами спектра. Формула (1-1) допускает обращение:

Вычисление компонент X(k)7 к Є 0 : JV — 1, задаваемых формулой (1.1), будем называть анализом спектра Фурье. Вычисление компонент x(j), j Є 0 : N — 1, задаваемых формулой (1.2), будем называть синтезом входного сигнала.

Для анализа спектра может быть применено быстрое преобразование Фурье. Для описания алгоритма БПФ положим N„ — JV/2", Д(/ = 2 -1. Введем в рассмотрение перестановку revs, которая сопоставляет числу j Є 0 : 2s — 1 число revs(j), двоичный код которого равен перевернутому s-разрядному двоичному коду числа j.

Иногда необходимо анализировать только часть компонент спектра, индексы которых принадлежат заданному промежутку а : &, 0 a b N — 1. Назовем такую выборку сегл енто.м спектра Фурье. Если требуется вычислить сегмент с компонентами а : 6, где а и 6 имеют вид а = JV/2 — d, Ь = JV/2 + d — 1, d Є 1 : -АГ/2, назовем такую выборку центральным сегментном спектра Фурье, Формулы (1.3), (1.4) допускают обращение, которое может быть использовано для синтеза входного сигнала. Обратное БПФ с прореживанием по времени для сигнала х может быть записано в следующем виде:

Иногда необходимо синтезировать только часть компонент входного сигнала, индексы которых принадлежат заданному промежутку а : 6, 0 а b N — 1. Назовем такую выборку сегментом входного сигнала. Если требуется вычислить сегмент с компонентами а : ї , где а и 6 имеют вид a = N/2—d, Ь = N/2+d l, d Є 1 : N/2, назовем такую выборку центральным сегментом входного сигнала. 1.2. Алгоритм вычисления сегмента спектра Фурье с прореживанием по времени

Опишем алгоритм анализа спектра Фурье и определим количество производимых им арифметических операций.

За основу алгоритма вычисления сегмента спектра с прореживанием по времени взято БПФ с прореживанием по времени.

При І = {а)д , ...,(Ь)д величина {/)д изменяется в пределах 0 : Ді, — 1, а величина \l/Av\ принимает только значения 0 и 1. Следовательно, формула (1.9) является сужением (1.11) на указанные индексы, и вычисляемые на последнем шаге xs(k)t к Є а : Ь являются компонентами искомого спектра.

Покажем, что вычисляемые по (1.9) компоненты необходимы и достаточны для вычислений, производимых на следующем шаге. На 1/-м шаге вычисляются

Определим количество арифметических операций в предложенном алгоритме. Для этого отдельно рассмотрим вычисления, проводимые по формулам (1.8) и (1.9). В формуле (1.8) при каждом v Є 1 : [_log2(6— а+ 1)J индекс р принимает Nv значений, а индекс I — Av значений. Таким образом, количество комплексных умножений равно

В формуле (1.9) при каждом У l_log2( — a + 1)J + 1 ". s индекс р принимает Nu значений, а индекс I — (Ь — а + 1) значений. Таким образом, количество комплексных умножений равно

В этом случае с = s. Таким образом, вычисляются все компоненты спектра и согласно (1.20) Mi = i\nog2iV, А\ = i\4og2iV — вычислительная сложность, соответствующая алгоритму Кули-Тьюки. Следует также обратить внимание на операции, связанные с изменением индекса І в формуле (1.9). Значения, которые принимает этот индекс, вычисляются в результате целочисленного деления. Однако эти операции не учитываются, поскольку на практике деление в данном случае может быть заменено логическими битовыми операциями.

Алгоритм вычисления центрального сегмента входного сигнала с прореживанием по частоте

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

Рассмотрим алгоритм вычисления центрального сегмента сигнала с прореживанием по частоте. Заметим, что при изменении р Є Nv — d : Nv 1 выполняются соотношения {Ni/ + p)N = р и l(Ni, -\-p)/Nv\ — 1. При изменении р Є 0 : d — 1 можем записать равенства {p)N =ри Lp/AT J О-С учетом этого заключаем, что соотношения (1-76) соответствуют (1.82), (1.83).

Рассмотрим формулу (1.77). При изменении р Є N/2 — d : N/2-l выполняются соотношения (р)дг = р и [j?/iViJ = 0. При измене-нии р 0 : d 1 можем записать равенства {JVi + p)Ni = р и [(ЛГі +p)/Ni\ = 1. С учетом сказанного, соотношения (1.77) соответствуют (1.63). Наконец, формула (1.78) соответствует (1.64) при подстановке в последнюю значений a = N/2 — d и Ь — N/2 + d — 1.

Сравним быстродействие данного алгоритма со скоростью работы общей схемы вычисления сегмента входного сигнала. Как видно из (1.84), (1.85), теоретически выигрыша во времени нет. Однако экспериментальные данные показывают, что выигрыш все же имеется. Это достигается благодаря значительному упрощению индексов, используемых в соотношениях (1.76), (1.77), в сравнении с (1.63).

Как отмечалось выше, существует два подхода к решению задачи нахождения сегмента спектра (входного сигнала). Первым является вычисление всех компонент и отбрасывание ненужных. Вторым — поточечное вычисление компонент сегмента. Рассмотрим каждый из них и определим области, в которых в зависимости от соотношения N и b — а + 1 эффективен тот или иной алгоритм.

1) Самым очевидным способом анализа сегмента спектра (синтеза сегмента входного сигнала) является вычисление всех его компонент по алгоритму Кули-Тьюки и отбрасывание ненужных. Теоретически этот способ всегда хуже предложенных алгоритмов, поскольку во время своей работы вычисляет большее количество элементов. Однако на практике существует область, в которой соотношение iV и Ь — а + 1 таково, что анализировать весь спектр (синтезировать входной сигнал) и отбрасывать ненужные компоненты оказывается эффективнее, нежели вычислять только компоненты сегмента. Это объясняется тем, что предложенные алгоритмы содержат дополнительные вычислительные затраты, связанные с более трудоемкой индексацией по отношению к алгоритму Кули-Тьюки.

2) Другим способом вычисления сегмента спектра (входного сигнала) является поточечное вычисление его компонент с использованием алгоритма Герцеля. Для малых длин сегмента этот спо соб существенно эффективнее рассмотренных методов. Однако при возрастании этих длин алгоритм становится неэффективным.

В Таблице 1.1 показаны экспериментальные данные измерения времени работы всех алгоритмов. Эксперименты проводились при различных значениях N и Ь — а + 1. При каждой фиксированной паре чисел N и b а + 1 случайным образом генерировалось 100 различных сигналов. Для каждого сигнала измерялось время работы всех алгоритмов, после чего вычислялось среднее время работы каждого G — области, в которых эффективнее использовать алгоритм Герцеля, буквой Р — области, в которых оптимальные результаты дают предложенные алгоритмы. Таким образом: применение алгоритма Герцеля наиболее эффективно при длине сегмента, не превышающей 5%-10% от длины сигнала; применение предложенных алгоритмов наиболее эффективно при длине сегмента, составляющей 10%—50% от длины сигнала; при длине сегмента более 50% длины сигнала эффективнее анализировать весь спектр (синтезировать входной сигнал).

В данной главе рассматриваются комплекснозначные функции целочисленного аргумента х = x(j), j Є Ж, не являющиеся периодическими. Множество таких функций обозначим С^. Для обработки функций х Соо будем использовать периодическую технику.

Назовем скользящим спектром спектр конечной выборки функции гс, перемещающийся вдоль временной оси: N-1 где І є Ъ — некоторый момент дискретного времени. Выборку Х/(&), k Є a : b, где 0

Алгоритм вычисления сегмента спектра при сдвиге сигнала на один отсчет

Опишем быстрый алгоритм пересчета всех компонент спектра при двоичном сдвиге сигнала на число отсчетов т = 2 , t 0 : s.

Доказательство. Истинность формул (2.28) следует из (2.4). Покажем, что компоненты, вычисленные при некотором v, и компоненты, хранящиеся в памяти, необходимы и достаточны для вычислений на следующем шаге. Для этого разобьем соотношения (2.28) на две группы по индексу Р:

Для вычислений по формуле (2.29) при v = s используются только : т — 1. Согласно (2.2) Х р(0) = х(1 - р), Х р_ /2(0) = ж(/ - р - ЛГ/2) - компоненты входного сигнала. Полученные Хр(0) и ГрЧ1), Р Є 0 : m - 1 необходимы для вычислений при v = s — 1. Вместе с хранящимися в памяти компонентами Xfzl_A _ (fc), 0:1, рЄ0:т- 1 они достаточны.

При v = s—1,..., +2 полученные по (2.29) компоненты Х" р(к), к Є 0 : iVj,_i — 1,рЄ0:ттг— 1 необходимы при переходе от v к і/ — 1. Вместе с хранящимися в памяти компонентами Xi_p_ v{k), к 0 : Nj, — 1, р Є 0 : m — 1, f = s — 2,... , + 1 они являются достаточными.

Опишем быстрый алгоритм пересчета внутреннего сегмента спектра при двоичном сдвиге сигнала на число отсчетов т 2і, t Є 0 : s. В этом случае форма алгоритма зависит от соотношения величин s, t и г. Рассмотрим отдельно два случая: Q t s — гн s r S 5; 5 (при t = s — г полученные алгоритмы совпадают).

Определим количество арифметических операций, необходимых для работы полученного алгоритма. Для этого отдельно рассмотрим вычисления, проводимые по формулам (2.39) и (2.40). В формуле (2.39) при каждом v Є s — r + l : s индекс к пробегает Nu значений, индекс р — тп значений. Следовательно, количество комплексных умножений равно

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

При и = s - г + 1 по формуле (2.50) получены Х 1[к), к Є 0 : NB-r — 1, р 6 0 : Д5_г+і — 1. Их можно разбить на группы Xf_-;(fc) и Xp At_r{k), к є 0 : Ns.r - 1, V Є 0 : Д5_г - 1. Поскольку Ns п, эти компоненты необходимы и достаточны для вычислений по формуле (2.51) при V = s — г.

Таким образом, они необходимы и достаточны при переходе ОТУ к Ї/-1. Определим количество арифметических операций, необходимых для работы полученного алгоритма. Для этого отдельно рассмотрим вычисления, проводимые по формулам (2.52) и (2.53).

В формуле (2.52) при каждом и s — r + 1 : t индекс к пробегает N„ значений, индекс р — Av значений. При v Є t + 1 : s индекс к пробегает iVy, индекс р — т значений. Следовательно, количество комплексных умножений равно количество комплексных сложений определяется формулой

В формуле (2.53) при каждом v Є 1 : s — г индекс к пробегает п значений, индекс р — А» значений. Следовательно, количество комплексных умножений равно М 1 = пА„ = п{2 -г -I). Количество комплексных сложений определяется формулой

Таким образом, получаем формулы для общего числа комплексных умножений М5 = М!Ъ + М= n{2s-r -1) + N{t -s + r) + N-m (2.55) it и общего числа комплексных сложений Аь = Л ь + Al = n(2s_r - 1) + N(t + г) + 2N - 2m. (2.56) Вычислим объем данных, которые необходимо хранить в памяти для работы алгоритма. В условии теоремы требуются компоненты (при v = s имеем Х _ дг/2(0) = х(1 — р — iV/2), р Є 0 : т — 1 — компоненты входного сигнала). Число этих элементов может быть вычислено как Однако при дальнейшем скольжении спектра потребуются также компоненты

Как отмечалось выше, существует два подхода к решению задачи нахождения скользящего спектра. Первым является вычисление спектра с помощью статического БПФ. Вторым — динамические алгоритмы. Рассмотрим каждый из этих подходов и определим области, в которых в зависимости от соотношения Nam эффективен тот или иной алгоритм.

1} Первым способом нахождения скользящего спектра является вычисление его компонент по алгоритму Кули-Тыоки. Теоретически этот способ всегда хуже предложенных алгоритмов, поскольку его вычислительная сложность всегда выше. Однако на практике существует область, в которой соотношение N итп таково, что статическое вычисление спектра оказывается эффективнее динамического. Это объясняется тем, что предложенные алгоритмы содержат дополнительные вычислительные затраты по отношению к алгоритму Кули-Тьюки.

2) Другим способом нахождения скользящего спектра является использование динамических алгоритмов. Однако, как уже отмечалось, созданные ранее динамические схемы вычисления спектра применимы только для сдвига спектра на один отсчет. Таким образом, для вычисления скользящего спектра со сдвигом более чем на один отсчет необходимо многократное использование указанных алгоритмов, что делает их существенно ху же предложенного метода. Экспериментальные данные подтверждают этот вывод и по этой причине не приводятся.

В Таблице 2.1 показаны экспериментальные данные измерения времени работы алгоритма Кули-Тьюки и предложенных методов. Эксперименты проводились при различных значениях N и т. При каждой фиксированной паре чисел N и т случайным образом генерировалось 100 различных сигналов. Для каждого сигнала измерялось время работы всех алгоритмов, после чего вычислялось среднее время работы каждого из них. В таблице буквой F отмечены области, в которых эффективнее вычислять скользящий спектр по алгоритму Кули-Тьюки, буквой Р — области, в которых оптимальные результаты дают предложенные алгоритмы.

Задача восстановления высоких гармоник звуковых одно- и двухканальных сигналов

При каждом сдвиге сигнала вдоль временной оси задача решается в два этапа: поиск ведущих частот и пересчет спектра. Опишем подробно каждый из указанных шагов. На первом этапе для текущей выборки ищутся ведущие частоты (тона), т.е. частоты, на которых спектральные составляющие имеют наибольшую амплитуду. Поиск ведущих тонов осуществляется в указанном частотном диапазоне. В реализованной программе рассматривается диапазон от 500 Гц до 2000 Гц, т.к. в этом диапазоне преимущественно располагаются воспринимаемые человеком звуки. Пусть звуковой сигнал оцифрован с некоторой частотой дискретизации F JI, а длина спектра положена равной N. Тогда для пересчета частотного диапазона из герц в условные единицы используется формула где F — частота в герцах, a FN — искомая частота. Так, например, если частота дискретизации равна 44100 Гц, а длина спектра равна 8192, то частотный диапазон от 500 Гц до 2000 Гц будет пересчитан в диапазон от 93 до 372 условных единиц.

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

Далее из полученного сегмента выбираются несколько компонент с наибольшими амплитудами. Число этих компонент не фиксировано. В реализованной программе выбираются все отсчеты спектра, амплитуда которых составляет более половины от максимальной амплитуды. Однако только малая часть из этих компонент на самом деле являются основными тонами. Другие — лишь кратковременные всплески. Для того, чтобы выделить действительно ведущие тона, выполняются следующие действия.

Указанный частотный диапазон пересчитывается несколько раз при сдвиге сигнала на один, два и т.д. отсчетов. Другими словами, вычисляется скользящий сегмент спектра. В каждом из вычисленных сегментов отслеживаются отсчеты на тех частотах, которые были выбраны при первичном вычислении компонент частотного диапазона. Таким образом, для каждой «подозрительной» на ведущий тон частоты строится так называемая спектральная кривая. Последняя отражает, действительно ли данная частота является ведущим тоном, или же это кратковременный всплеск. Наконец, несколько частот (в реализованной программе — пять), для которых спектральные кривые имеют наибольшую амплитуду и длительность, выбираются в качестве ведущих тонов.

В предложенной схеме поиска ведущих тонов необходимо вычислять компоненты скользящего частотного диапазона. Поэтому для данной цели наиболее эффективно использовать описанный во второй главе диссертационной работы алгоритм анализа скользящего сегмента спектра Фурье при сдвиге сигнала на один отсчет.

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

Идеология обработки звука заключается в том, что задачи, как правило, ставят звукорежиссеры. Звукорежиссер не знает математики, да и в технике разбирается достаточно слабо. Но он понимает на слух, чего он хочет. Поэтому все алгоритмы по обработке звуковых сигналов строятся математиками с помощью математического моделирования, но при определенном (иногда очень высоком) уровне эмпирического подбора.

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

Похожие диссертации на Цифровая обработка динамических данных