Диссертация (1149825), страница 10
Текст из файла (страница 10)
После этого происходит оптимизацияГрадиентным спуском в момент m = m + 1. И так далее. Окончание работы происходит, когда до конца основной части обрабатываемого WAV-файлаостается m0 сэмплов.2)Информация выбирается с первого сэмпла основной части файла формата WAV, но поскольку половина длины носителяпробника может быть m0 и при анализе используются сэмплы входного файла моментов раньше, чем текущий, на половинудлины пробника, момент, с которого следует начать анализ, должен быть не ранее, чем m0 .61Общая схема высокочастотного анализаПоскольку диапазон коротких периодов, соответствующий высоким частотам, невелик (3 ÷ 6), разделение оптимизации на Грубую оптимизацию иГрадиентный спуск нецелесообразно.
И на этих периодах проводится полнаяоптимизация, которая соответствует Грубой оптимизации с шагом 1.2Назначение Грубой оптимизации — избежать “зависания” итераций в районе одного локального минимума при наличии других локальных минимумовс меньшим значением критериев. Достаточно частая сетка узлов-периодов, используемая в выборе оптимизации, гарантирует переход от окрестности одноголокального минимума к окрестности другого, если в этом другом значение критерия существенно меньше.
Включение Грубой оптимизации происходит, когдарасстояние текущей итерации по периоду от опорного узла становится больше,чем ее расстояние до соседнего узла, то есть достаточно часто.Оптимизация периода на следующем моменте времени вполне естественностартует с оптимального значения периода, найденного на предыдущем моменте времени, поскольку изменение частотных характеристик происходит существенно медленнее сравнительно с частотой дискретизации.Глава 3.СИНТЕЗ§3.1. Сглаживание скачковСтрогая локализация работы частотно-амплитудного детектора в относительно узких окнах просмотра может приводить к кратковременным резким изменениям частот и амплитуд даже в пределах анализа на протяжении периодаглавной гармоники.
Непосредственный синтез выходного звукового файла наоснове таких скачков приводит к появлению нежелательных высокочастотныхшумов. Во избежание таких дефектов для синтеза выходного звукового файлаприменяются значения частот и амплитуд, усредненные на некотором промежутке. Хорошие результаты были достигнуты при усреднении по диапазону,охватывающему экстентом расположенные сэмплы входного потока в количестве, приблизительно равному удвоенной середине 2Tcp диапазона периодов, насоответствующие которым частоты настраивается программа.
Таким образом,для буфера усреднения требовался массив из 2Tcp /u элементов, где u — расстояние в сэмплах между отсечками, в которых производился анализ.Для основной гармоники величина Tcp в программе, настроенной на женский голос, равнялась 165. При u = 10 для буфера усреднения требуется массивиз 33 элементов.6263§3.2. Заполнение пропущенных отсечекСогласно предлагаемой методике, для ускорения обработки входного цифрового потока значения амплитуд гармоник и их частот частотно-амплитуднымдетектором вычисляются не на каждом сэмпле, а с пропуском u со значением10 и более. При синтезе же оставшиеся значения должны быть заполнены.
Делается это с помощью интерполяции, к которой качество восстановления звукас помощью ЦАП предъявляет определенные требования.Работу ЦАП можно описать примерно следующим образом: поток сэмп′′лов {O(m′ )}N0 , N < N − 1, преобразуется в аналоговый ступенчатый сигнал,который подается на аналоговый фильтр, выполняющий аппаратное сглаживание.
Если от сэмпла к сэмплу изменение амплитуд происходит относительномедленно, то аппаратное сглаживание успешно функционирует и выдает достаточно гладкий аналоговый сигнал. В случае же резких изменений амплитудв выходной сигнал добавляются высокочастотные составляющие, воспринимаемые как паразитные шумы. Поэтому появляется задача понижения резкостиизменения амплитуд, подаваемых в ЦАП, с одной стороны, а с другой — обеспечения быстродействия и устойчивости алгоритма интерполяции (АИ).В частности,1.
На входных в АИ узлах t00 , t10 , ... он должен вернуть вычисленные значения амплитуд.2. Для получения значений амплитуд Aij на дополнительных узлах til изсэмпльного интервала [ti0 , ti+1,0 ] АИ должен использовать только вычисленныезначения амплитуд в узлах, непосредственно примыкающих к ti0 и ti+1,0 . Количество таких узлов желательно минимизировать.3. Аналоговый сигнал после прохождения через ЦАП выдаваемого АИ выходного цифрового сигнала должен иметь наименьшее количество паразитныхшумов.64Лучше всего этим требованиям удовлетворяет кубическая квазиэрмитоваяинтерполяция [10]. Она порождает локальные сплайны, то есть не требующиеодновременной обработки всего множества узлов [11].3.2.1.
Квазиэрмитовы кубические сплайныКлассический эрмитов сплайн состоит из звеньев, являющихся интерполяционными полиномами Эрмита, строящимися по значениям интерполируемой функции и ее производной на двух узлах, ограничивающих участок интерполяцииданного звена [6]. “Склейка” таких звеньев дает эрмитов сплайн.
Его тип —S3,2 , то есть он гладкий (первый индекс — порядок сплайна, второй индекс —его дефект).В нашем случае входной сигнал в интерполяцию представляет собой от−1сечки значений звукового давления в моменты {ti0 }N, N := ⌊(N −2m0 )/u⌋ 3) ,0но информация о значениях производных давления в какие-либо моменты отсутствует. И имеющиеся теория и алгоритмы позволяют строить кубическийсплайн (типа S3,1 ), то есть еще глаже эрмитового. Однако, такой сплайн уже неотносится к категории локальных, и в вычислении четырех параметров каждогозвена используется информация по всем N узлам. При большом N (сотни тысяч) задача становится практически неразрешимой.
Путь для выхода из коллизии между вычислительной трудоемкостью и гладкостью сплайна вполне естествен: получить приближенные значения производных в узлах интерполяциипо некоторому ограниченному шаблону, а потом построить полином Эрмита. Иуже в 1880-м году Шпраг (T.B. Sprague) [37] фактически предложил формулыдля звеньев сплайна S5,3 , которые строились как полиномы Эрмита по значениям на концах сэмпльного интервала звена 1-й и 2-й производных интерполируемой функции, вычисляемых приближенно с помощью полинома Лагранжа по шеститочечному шаблону, и значениям интерполируемой функции. В1899-м году Каруп (J. Karup) [26] предложил формулы для звеньев сплайна3)Операция антье “⌊·⌋” определена на стр.
53.65S3,2 с вычислением производных на концах сэмпльного интервала звена по четырехточечному шаблону. С введением понятия сплайна в 1946-м году [36] исоответствующей терминологии, сплайны, конструируемые согласно формуламШпрага–Карупа, естественно называть квазиэрмитовыми кубическими сплайнами (КЭК-сплайнами).
Однако и до конца двадцатого века в некоторых публикациях можно обнаружить название “касательная интерполяция” (osculatoryinterpolation) для метода Карупа. В частности, в [22] Акима под этим названиемпривел небольшую модификацию вычислительных формул Карупа, в конечномитоге приводящую к тому же сплайну, что и метод Карупа. Здесь будут построены КЭК-сплайны, исходя из других начальных соображений [13], и полученырасчетные формулы, несколько отличные от формул Карупа и Акимы. И хотяитоговый сплайн оказывается таким же, предлагаемая методика его построенияпозволила провести анализ уровня гладкости (см. опр.
3.2) выходного сигнала,который появляется после сглаживания в ЦАПе.3.2.2. Построение КЭК-сплайна−1Пусть {si0 }N— сэмплы входного сигнала в процесс интерполяции, si1 , ..., si,u−10— дополнительные сэмплы в моменты (в дополнительных узлах), соответственно,til = ui + rl, l = 1, ..., u − 1,(3.1)где r — шаг дискретизации, который, не умаляя общности, считаем равным 1.Каждому узлу интерполяции, начиная со второго (с индексом 1) и до предпоследнего, сопоставим центральную разностную производную:hi =si+1,0 − si−1,0,2ui = 1, 2, ...N − 2.(3.2)В первом и последнем узлах положим 4) h0 = hN −1 = 0.4)Целесообразность этого назначения более теоретическая, чем практическая.
Оно позволяют построить сплайн S3,2 на всемпромежутке [m0 , N − 1 − m0 ], а не только на внутренних звеньях. Практически же ценность интерполяции на крайних звеньяхничтожна, так как им соответствует длительность звучания 0.02 − 0.03 сек.66Начальное звено сплайна получим линейной интерполяцией по первому ивторому сэмплам.
Впрочем, можно было бы интерполировать между первымузлом и вторым как угодно — последствия этого произвола, как будет видно вдальнейшем, закончатся к третьему узлу. Остальные звенья от этого не зависят.Прочие звенья между моментами ti0 и ti+1,0 , i ≥ 1, получаются в результате решения задачи кратного интерполирования с помощью полинома третьейстепени H3 (t):H3 (tl0 ) = sl0 , H3′ (tl0 ) = hl ,(3.3)где l = i, i + 1. Поскольку hl не являются значениями производной интерполируемой функции, такой полином назовем квазиэрмитовым кубическим, аКЭК-сплайны и есть сплайны, составленные из таких полиномов.3.2.3.
Свойства КЭК-сплайновРешение задачи (3.3) с вычислительной точки зрения удобнее описать не черезглобальную переменную t, а через локальную m следующим образом:m = t − ⌊t/u⌋u(3.4)[]для всех t ∈ ⌊t/u⌋u, ⌊t/u⌋u + u . 5) Из (3.4) видно, что m пробегает значенияот 0 до u − 1, когда t пробегает значения между двумя соседними узлами интерполяции ti0 и ti+1,0 .
Формула (3.4), очевидно, не позволяет определить t поm, однако при построении интерполяционного сплайна этого не потребуется.Решение задачи (3.3) в локальных переменных доставляется известнойформулой:[6]C[i,i+1] (m) = C[i,i+1] (m/u) = (1 − m/u)2 (1 + 2m/u)si0 + (m/u)2 (3 − 2m/u)si+1,0 ++hi u(1 − m/u)2 m/u − hi+1 (m/u)2 (1 − m/u)u.(3.5)Далее узлы ti0 будем называть i-ми узлами интерполяции, i = 0, ..., N −1.5)Операция антье “⌊·⌋” определена на стр. 53.67Соберем коэффициенты при одинаковых степенях m в (3.5):C[i,i+1] (m) = ai m3 + bi m2 + ci m + di ,(3.6)где коэффициенты с учетом (3.2) рассчитываются по формуламai =si+2,0 − 3si+1,0 + 3si0 − si−1,0,2u3bi =−si+2,0 + 4si+1,0 − 5si0 + 2si−1,0,2u2(3.7)si+1,0 − si−1,0,di = si0 .(3.8)2uИллюстрация поведения i-го звена сплайна тесно связана с параллелоci =граммом звена, который образуется касательной к звену в узле i и параллельной ему прямой, содержащей отрезок Xi−1 Xi+1 , совместно с касательной к звену в узле i + 1 и параллельной ему прямой, содержащей отрезок Xi Xi+2 , гдеXl = (l, sl0 ).