Моделирование речи на основе гармонического звукоряда для воспроизведения на разных скоростях с сохранением тембра тема диссертации и автореферата по ВАК РФ 05.13.18, кандидат наук Морозов Петр Дмитриевич

  • Морозов Петр Дмитриевич
  • кандидат науккандидат наук
  • 2017, ФГБОУ ВО «Санкт-Петербургский государственный университет»
  • Специальность ВАК РФ05.13.18
  • Количество страниц 134
Морозов Петр Дмитриевич. Моделирование речи на основе гармонического звукоряда для воспроизведения на разных скоростях с сохранением тембра: дис. кандидат наук: 05.13.18 - Математическое моделирование, численные методы и комплексы программ. ФГБОУ ВО «Санкт-Петербургский государственный университет». 2017. 134 с.

Оглавление диссертации кандидат наук Морозов Петр Дмитриевич

4. Научная новизна

5. Теоретическая и практическая значимость

6. Методы исследования

7. Положения, выносимые на защиту

8. Степень достоверности и апробация результатов

9. Основные идеи

1. ПРОБЛЕМА ИЗМЕНЕНИЯ СКОРОСТИ ВОСПРОИЗВЕДЕНИЯ ЦИФРОВОГО ЗВУКА С СОХРАНЕНИЕМ ТОНАЛЬНОСТИ

§1.1. Особенности человеческой речи

§1.2. Особенности восприятия звука человеком

§1.3. Цифровой звук

§1.4. Структура ШДУ-файла

§1.5. Связь преобразования Фурье с реальными гармониками

§1.6. Вейвлетное преобразование

§1.7. РБОЬД

2. ЗАДАЧА ГАРМОНИЧЕСКОЙ АППРОКСИМАЦИИ

§2.1. Критерий качества

§2.2. Частотно-амплитудный детектор

§2.3. Модификация частотно-амплитудного детектора

§2.4. Последовательная оптимизация

2.4.1. Переход к оптимизации по периодам

2.4.2. Градиентный спуск для фиксированного периода

2.4.3. Минимизация вычислительной погрешности при градиент-

ной оптимизации для фиксированного периода

2.4.4. Стабилизация фаз

2.4.5. Оптимизация периодов

3. СИНТЕЗ

§3.1. Сглаживание скачков

§3.2. Заполнение пропущенных отсечек

3.2.1. Квазиэрмитовы кубические сплайны

3.2.2. Построение КЭК-сплайна

3.2.3. Свойства КЭК-сплайнов

3.2.4. Линейная интерполяция

3.2.5. Оптимизация дополнительных сэмплов

§3.3. Восстановление звукового давления

4. ОПИСАНИЕ ВЫЧИСЛИТЕЛЬНОГО АЛГОРИТМА

§4.1. Анализ входного потока

§4.2. Синтез выходного потока

5. ЭКСПЕРИМЕНТЫ

§5.1. Инструментарий

§5.2. Структура экспериментов

§5.3. Визуализация экспериментальных результатов

ЗАКЛЮЧЕНИЕ

Список условных обозначений

Список литературы

Приложение 1. Программная реализация алгоритма NetPeriodFilling

Приложение 2. Программная реализация алгоритма PhaseShift

Приложение 3. Программная реализация алгоритма Scanner

Приложение 4. Программная реализация алгоритма

OptimisationOfPeriod

Приложение 5. Программная реализация алгоритма InitialAnalysis

Приложение 6. Программная реализация алгоритма RegularAnalysis

Приложение 7. Программная реализация алгоритма Averaging

Приложение 8. Программная реализация алгоритма Synthesis

ВВЕДЕНИЕ

Рекомендованный список диссертаций по специальности «Математическое моделирование, численные методы и комплексы программ», 05.13.18 шифр ВАК

Введение диссертации (часть автореферата) на тему «Моделирование речи на основе гармонического звукоряда для воспроизведения на разных скоростях с сохранением тембра»

1. Актуальность темы исследования

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

При этом при предоставлении рекламодателем ролика нестандартной длины, например, 25 секунд, либо ему будет отказано, либо будут взяты деньги как за 30-секундный ролик.

На телевидении в силу того, что задействуется видеоканал, минимальная длительность сообщения, которое еще воспринимается, доходит до пяти секунд. Поэтому на телевидении приняты форматы, кратные пяти секундам: 5, 10, 15, 20, 30 сек. При этом требование к длительности чрезвычайно жестко: она должна быть соблюдена до сотой доли секунды. Весьма распространены ролики продолжительностью 5 или 10 секунд. Они носят, как правило, динамический характер, картинка в них создается отдельно от сопровождающей озвучки, и клипмейкеру приходится прилагать немалые усилия, чтобы при создании таких роликов на видеоряд была правильно наложена звукозапись. Соответственно, озвучивающим текст диктору/актерам нередко приходится перезаписываться для синхронизации аудиопотока с видео.

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

Помимо подгонки аудиопередач к заданной длительности, интерес имеет также и вещание на повышенных в 1.5-2 раза скоростях. К этому располагает существование большого количества грамотных людей, обладающих способностью чтения "про себя" со скоростью в 5-6 раз большей, чем чтение вслух.

Большой практический интерес также есть и в значительном (в 1.5 и бо-

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

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

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

Последующие изобретения в области аналоговой звукозаписи были нацелены не на изменение длительности воспроизведения по отношению к записи, а на максимальную близость частотного спектра воспроизведения к спектру записи. Что в аналоговой звукозаписи соответствовало, в частности, требованию большой близости скорости записи к скорости воспроизведения. Последняя осуществлялась посредством разнообразных стабилизаторов скорости вращения пластинок на граммофонах/патефонах и стабилизаторов скорости лентопро-тяжки на магнитофонах. Некоторые стабилизаторы, помимо набора фиксированных стандартных скоростей, имели возможность дополнительной настройки на нужную скорость. Стандартные скорости вращения пластинок были 78, 45, 33 оборота в минуту. Стандартные скорости лентопротяжки колебались в еще больших пределах — от 38.1 до 2.38 см/с. Таким образом, пользователь мог аппаратно (и даже вручную) ускорять и замедлять воспроизведение в широких пределах, но при этом в тех же пределах изменялись и частотные характеристики. Например, переход от 33 к 78 оборотам в минуту пластинки давал такое

искажение частотных характеристик, что не только не узнавался диктор, но и сама речь становилась неузнаваемой. Аппаратных устройств, которые позволяли бы производить ускорение/замедление с сохранением частотных характеристик, создано не было. Одновременное ускорение темпа воспроизведения записанного звука с таким же увеличением частотных характеристик и замедление с таким же уменьшением частотных характеристик находило незначительное применение в кинематографе. Большие возможности менять темп воспроизведения с сохранением исходных частотных характеристик предоставила эра цифрового звука, и некоторый прогресс в этом направлении начался.

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

2. Степень разработанности

Эра цифрового звука открыла большие возможности для манипуляции со звуком. Сложные звуковые эффекты оказалось возможным достичь программными средствами. Комплексы таких программ от одной фирмы-производителя, объединенных интерфейсом, именуются звуковыми редакторами. Наиболее известные из них — Acid Music Studio [39], Adobe Audition [40], AudaCity [41], Audio Speed Changer Pro [42], Cakewalk Sonar [43], Logic Pro [44], Music Construction Set [45], Nero WaveEditor [4б], PaulStretch [47], PhotoSounder [4В], Pro Tools [49], Propellerhead Reason [50], REAPER [51], Sound Forge [52], VocalRemover [53]. Не во всех них реализована возможность ускорения/замедления входного аудиофайла с сохранением исходной тонально-

сти звука. Данная реализация была обнаружена в конвертере PhotoSounder, онлайн-сервисе VocalRemover, аудиоредакторе AudaCity, программах Audio Speed Changer Pro, PaulStretch, Adobe Audition, REAPER.

Создатель конвертера PhotoSounder Михель Рузик преследовал цель отображения звука в изображение с возможностью редактирования последнего и обратного отображения итогового изображения в звук. Наиболее известным отображением звука в изображение является сонограмма. Сонограммой называется изображение зависимости спектра звуковых колебаний от времени. Чаще всего она представлена в виде двумерной диаграммы, где на оси абсцисс откладывается время, а на оси ординат — частота. На графике посредством изменения цвета показывается величина амплитуды сигнала на отведенном частотном диапазоне в указанном временном промежутке. Получение сонограммы в PhotoSounder требует довольно долго времени. В частности, обработка коротких тестовых фраз, содержащих от 16 до 20 слогов (см. стр. 88), в среднем заняла 16 сек, а использование акселерации — дополнительные 5 сек. Другим и более серьезным минусом PhotoSounder является снижение качества выходного результата по отношению к оригиналу даже без применения акселерации или замедления. Заметное уже на музыкальных произведениях без вокала. А результат обработки музыки с вокалом и чистой речи просто плохой: появляется металличность, которая оказывает неприятное впечатление во время прослушивания.

Программа PaulStretch имеет те же недостатки по ускорению/замедлению речи с сохранением исходного тембра, что и PhotoSounder.

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

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

Нагруженный большим количеством разнообразных функций аудиоредак-тор AudaCity в области ускорения/замедления речи с сохранением исходного тембра практически не отличим от VocalRemover. В частности, имеет те же недостатки, а длина выходного файла практически равна длине входного, умноженного на коэффициент ускорения.

Программа Audio Speed Changer Pro напрямую нацелена на смену темпа воспроизведения с сохранением исходной тональности. "Замедленный" выходной файл имеет тот же дефект дырявости и той же величины, что и продукт от VocalRemover, то есть звуковые пропуски при воспроизведении. И в ускоренном выходном файле дефект такой же — тремоляция.

Полное совпадение дефектов в ускорении и замедлении темпа воспроизведения оцифрованной речи в VocalRemover, AudaCity и Audio Speed Changer Pro наводит на мысль, что либо в них использованы одинаковые математические аппараты, либо одни из них используют часть кода другого.

Adobe Audition дает сравнимое качество при замедлении (появляется "мелодичный" шум). При ускорении на 50% Adobe Audition дает тремоляцию.

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

3. Цель и задача диссертации

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

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

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

Увеличение темпа речи — востребованный прием, используемый при трансляции рекламы и подгонки воспроизведения аудиофайла к выделенному окну в эфирном времени. Замедление темпа речи может быть полезно изучающим иностранный язык или пожилым людям, поскольку с возрастом понижаются острота слуха и скорость восприятия. На основе теоретических исследований экспериментальной работы был создан пакет программ, называемый в работе "Темп-дискретизация".

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

7. Положения, выносимые на защиту

• Математическая модель речи на основе гармонического звукоряда;

• Численный метод последовательной оптимизации в определении фундаментальной частоты и амплитуд обертонов оцифрованной речи;

• Алгоритм повышения уровня гладкости при интерполяции квазиэрмитовыми кубическими сплайнами и его реализация в программном комплексе;

• Алгоритм ускорения с помощью изменения частоты дискретизации и его реализация в программном комплексе.

• Эффективность систем ортогональных пробников при моделировании функциональной зависимости спектра аудиосигнала от времени, которые, в отличие от вейвлетов, имеют переменные носители, отличающиеся от пробника к пробнику;

8. Степень достоверности и апробация результатов

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

Результаты, изложенные в диссертации, были представлены на международной научной конференции аспирантов и студентов "Процессы управления и устойчивость" (Санкт-Петербург, 2011 г., 2012 г. и 2013 г.), всероссийской конференции, посвященной 80-летию со дня рождения В.И. Зубова "Устойчивость и процессы управления" (Санкт-Петербург, 2015 г.), "Семинаре по конструктивному негладкому анализу и недифференцируемой оптимизации" (факультет ПМ-ПУ СПбГУ, 2016 г.).

9. Основные идеи

В различных подходах по программному замедлению и ускорению воспроизведения цифрового звука с сохранением тональности можно выделить три основные идеи:

1. Для ускорения вырезать из исходного цифрового потока равномерно следующие друг за другом куски цифрового звука одинаковой длины с дальнейшим сглаживанием цифрового потока на оставшихся интервалах, а для замедления — вставка в исходный поток равномерно следующих друг за другом

пустых интервалов с дальнейшим заполнением их с помощью интерполяции по соседним исходным интервалам.

2. Если известны функции, описывающие амплитуды и частоты гармонических составляющих, то есть возможность воспроизвести их в ускоренном темпе. Например, есть сигнал W(m) = p(m) sin (u(m)m), m = 1,N, известны p(m) и ш(m) и они медленно меняются. Генерируется сигнал p(Xm) sin (u(Xm)m), m = 1,[N/X\, и воспроизводится на частоте дискретизации входного сигнала.

3. Использовать возможность изменения указываемой в заголовке файла типа WAV частоты дискретизации выходного файла относительно входного. Это позволяет вначале понизить частоты основной гармоники и обертонов в выходном файле относительно таковых во входном, сохранив при этом количество сэмплов в выходном и время его воспроизведения. А затем соответствующим изменением частоты дискретизации вернуть тембр к исходному, сохранив количество сэмплов в файле, но изменив время воспроизведения. Например, по известным p и ш в описанном выше сигнале W сгенерировать сигнал p(m) sin (X^(m)m) и воспроизвести с частотой, в Х-1 раз больше исходной. Это дает основание называть параметр Х коэффициентом акселерации. При 0 < Х < 1 это ускорение, при Х > 1 — замедление. Подробнее об этом в §3.3.

Первая и вторая идеи осложняются введением высококачественной интерполяции, не порождающей паразитных шумов (для второй идеи интерполировать приходится p и ш, когда Xm — нецелое число). Здесь будет использоваться третья идея.

Глава 1.

ПРОБЛЕМА ИЗМЕНЕНИЯ СКОРОСТИ ВОСПРОИЗВЕДЕНИЯ

ЦИФРОВОГО ЗВУКА С СОХРАНЕНИЕМ ТОНАЛЬНОСТИ

§1.1. Особенности человеческой речи

Экспериментальные данные показывают, что звуковое давление, соответствующее речи, хорошо описывается формулой вида

р

W (г) = оой + ^ а (г) + Ф{(г}} + ад 81п(ад)г + Ф{(г}}, (1.1)

{=1

где г Е [0, Т], а функции а{(г), Ь(), Ф{(г) имеют относительную скорость изменения значительно меньшую, чем частоты гармоник:

ao(t)

ao(t)

< ^i(t),

a%(t)

ai(t)

< ад,

w

bi(t)

<< ад, 6i(t) << ад. (1.2)

Значения Ж в дискретные моменты времени t = 1,..., Ж записываются в звуковой файл формата WAV.

Представление (1.1) с ограничениями (1.2) располагает к выбору в качестве аппроксиматора входного звукового потока на интервале t + At £ [t,t + T]

сумму гармонических колебаний:

р

/ (г, Аг) = хо(г) + ^ хг(г) сж(ш{(г)Ы) + у{(г) $т(и{(г)Аг), (1.3)

1=\

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

х о(г)

хо(г)

< их(г),

х {(г)

Х{(г)

< и{(г),

У{(г)

у {(г)

< и{(г).

При подходящем выборе критерия качества аппроксимации оптимизация по нему аппроксиматора (1.3) приведет к

иг(г) « П{(г), р{(г) := ^х2г(г) + у? (г) ^а2г(г) + Щ(г), % = 1,р, хо(г) « ао(г).

(1.4)

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

(1.5)

и{ = %и1, % = 2,Рх,

где Р1 < Р, их — фундаментальная частота. Что приближает описание реального сигнала (1.3) к частичной сумме ряда Фурье, построенного на промежутке [0, Т] исходного акустического колебания. Разница заключается в зависимости коэффициентов представления от времени г, а в ряде Фурье они константы; кроме того, в представлении могут быть члены с частотами, не удовлетворяющие связи (1.5). Описанное свойство существенно облегчает анализ входного аудиопотока.

Фундаментальная частота и1 соответствует частоте размыкания-смыкания голосовых связок, а прочие и{ из (1.5) являются обертонами фундамен-

тальной частоты. Для мужского голоса фундаментальные частоты находятся в диапазоне 85 + 155 Гц, женского — 165 + 255 Гц [23], [38]. Помимо этого, в некоторых фонемах могут присутствовать одна-две высокочастотные составляющие в диапазоне 4 +12 кГц, не обязанные своему появлению работе голосовых связок. Они появляются в результате независимых генераторов звука голосового аппарата. И некоторые из них могут иметь свои обертоны. Высокочастотные составляющие губных и губно-зубных звуков лежат в диапазоне 6 + 7 кГц. Их обертона либо отсутствуют, либо очень высоки за пределами слышимости. Зубные звуки имеют высокочастотный диапазон 4^7 кГц, их обертона усиливаются резонатором губной полости [18].

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

§1.2. Особенности восприятия звука человеком

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

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

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

Наиболее существенной особенностью слуха для целей акселерации является субъективная неразличимость суммы нескольких гармонических колебаний при различных фазах смещения одного относительно другого [12]. Это позволяет не заботиться о привязке найденных гармоник друг к другу по фазе.

Поэтому синтезированное звуковое давление вида

р

Ш (г) = хо(г) + ^ р{(г)

{=1

будет вызывать те же ощущения, что и входной сигнал (1.1).

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

Обычный здоровый человек, не обладающий выдающимися слуховыми особенностями, способен воспринимать звук в диапазоне 16 + 20000 Гц при передаче колебаний по воздуху [2], [15]. Частоты человеческого голоса лежат в диапазоне 300 + 4000 Гц [19]. Диапазон частот, которые такой человек в состоянии услышать, называется слуховым диапазоном, более высокие частоты — ультразвуком, более низкие — инфразвуком. Некоторые полости речевого ап-

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

§1.3. Цифровой звук

Для работы на цифровых компьютерах акустический сигнал W(t) подвергается цифровой обработке в аналогово-цифровых преобразователях (АЦП) [21]. Она состоит из двух дискретизаций — по времени и по амплитуде, называемой квантованием. По времени: в равноотстоящих друг от друга моментах времени ti,..., tN, именуемых отсечками, производятся замеры амплитуды электрического сигнала, являющаяся аналогом входного акустического давления. Квантование: в том же АЦП измеренное аналоговое значение амплитуды в отсечке оцифровывается, то есть находится среди принятых машинных чисел для данного формата звукового цифрового файла такое машинное число W(ti), которому соответствует физический аналог, наиболее близкий к измеренному [35]. Пара отсечка — квантованная амплитуда (ti, W(ti)) именуется сэмплом. Как правило, масштаб времени выбирается таким, что ti+1 — ti = 1, i = 1,.., N, поэтому для обозначения отсечки используется просто натуральное число, а последовательность сэмплов представляется одномерным массивом W(1), W(2),W(N).

Самые распространенные частоты временной дискретизации — 8 000, 22 050, 44 100, 48 000, 88 200, 96 000 и 192 000 Гц. Частота дискретизации 8 000 Гц считается стандартной в телефонии, 22 050 — на радио, 44 100 — в Audio CD, остальные — в DVD Audio. Большинство современных проигрывателей позволяют правильно воспроизводить звуки с цифровых аудиофайлов, записанных с произвольной частотой дискретизации. А звуковые редакторы также и вести звукозапись на задаваемой пользователем частоте дискретизации.

Частотой Найквиста называется равная половине частоты дискретизации звуковая частота. Это максимальная частота, которую цифровая система может адекватно сохранить и воспроизвести [5]. То есть если подлежащий дискре-

тизации аналоговый сигнал имеет частотные компоненты из диапазона 0 + 20 кГц, то у такого сигнала частота дискретизации должна быть не менее 40 кГц. Однако качество воспроизведения, то есть погрешность в амплитудах составляющих гармоник, будет лучше, если частота дискретизации заметно более чем в 2 раза превышает частоту входного сигнала. Поэтому и принимается в DVD Audio частота дискретизации 48 кГц и даже выше.

Для квантования приняты разрядности 8, 16, 24, 32 и 64 бит. То есть количество уровней громкости равно, соответственно, 88, 168, 248, 328 и 648. Для качественной записи достаточно использовать разрядность 16 бит [27], разрядности с большим значением расширяют динамический диапазон и тем самым позволяют повысить качество звукозаписи.

§1.4. Структура WAV-файла

Одними из первых контейнеров для хранения оцифрованного несжатого аудиопотока были файлы формата WAV (Waveform Audio File Format, от английского "waveform" — "в форме волны") [24]. Формат был разработан фирмами IBM и Microsoft в 1991 году [56]. Он не налагает ограничений на используемый алгоритм кодирования. Будучи интегрированным в систему Windows, он стал столь же распространенным, что и сама система [57]. В силу идейной простоты, за последнюю четверть века он практически не подвергся сильным изменениям, и ныне известен как "standard WAVE_FORMAT_PCM" (PCM — Pulse Code Modulation = импульсно-кодовая модуляция) [25]. Большое количество прочих аудиоформатов в основном возникали для внедрения той или иной идеи сжатия цифрового аудиопотока.

Похожие диссертационные работы по специальности «Математическое моделирование, численные методы и комплексы программ», 05.13.18 шифр ВАК

Список литературы диссертационного исследования кандидат наук Морозов Петр Дмитриевич, 2017 год

СПИСОК ЛИТЕРАТУРЫ

[1] Амосов, О.С. Исследование рядов с применением методов фрактального и вейвлет-анализа / О.С.Амосов, Н.В.Муллер // Науковедение, 2014. — №3 (22). — С. 1-14.

[2] Вартанян, И.А. Звук-слух-мозг / И.А.Вартанян. — Л.: Наука, 1981. — 175 с.

[3] Вологдин, Э.И. Слух и восприятие звука [Курс лекций] / Э.И.Вологдин. — СПб.: СТ "Факультет ДВО", 2004. — 36 с.

[4] Голубинский, А.Н. О частотно-временном разрешении кратковременного Фурье-анализа и непрерывного вейвлет-анализа при обработке речевых сигналов / А.Н.Голубинский, Р.А.Асташов // Вестник Воронежского института МВД России, 2013. — №3. — С. 4-11.

[5] Жмудь, В.А. Теорема Котельникова-Найвиста-Шеннона, принцип неопределенности и скорость света / В.А.Жмудь // Автоматика и программная инженерия, 2014. — №1(7). — С. 127-136.

[6] Завьялов, Ю.С. Методы сплайн-функций / Ю.С.Завьялов, Б.И.Квасов, В.Л.Мирошниченко. — М.: Наука, 1980. — 352 с.

[7] Камачкин, А.М. Модели колебаний в нелинейных системах / А.М.Камачкин, С.Е.Михеев, В.В.Евстафьева. — СПб.: Изд-во СПб-ГУ, 2004. — 194 с.

[8] Кирой, В.Н. Физиологические методы в психологии (учебное пособие) /

B.Н.Кирой. — Ростов-на-Дону: ООО "ЦВВР", 2003. — 224 с.

[9] Козлов, П.В. Вейвлет-преобразование и анализ временных рядов [Электронный ресурс] / П.В.Козлов, Б.Б.Чен // Вестник КРСУ. — 2002. — №2. — Режим доступа:

http://www.krsu.edu.kg/vestnik/2002/v2/a15.html

[10] Михеев, С.Е. Нелинейные методы в оптимизации / С.Е.Михеев. — СПб.: Изд-во СПбГУ, 2001. — 276 с.

[11] Морозов, П.Д. О сплайновой обработке звуковых потоков / П.Д.Морозов // Вестник Санкт-Петербургского университета. Серия 10 Прикладная математика. Информатика. Процессы управления, 2014. — Выпуск 2. —

C. 73-84.

[12] Морозов, П.Д. Восприятие акустических сигналов, модулированных речевой амплитудной огибающей / П.Д.Морозов, В.С.Михеев // Вестник ВГУ. Серия: Системный анализ и информационные технологии, 2015. — №1. — С. 115-123.

[13] Морозов, П.Д. Применение квазиэрмитовых кубических сплайнов для передискретизации звуковых файлов / П.Д.Морозов, С.Е.Михеев // Труды Карельского научного центра Российской академии наук, 2014. — №4. — С. 106-115.

[14] Новиков, Л.В. Основы вейвлет-анализа сигналов / Л.В.Новиков. — СПб.: СПбГТУ, 1999. — 152 с.

[15] Самойлов, В.О. Медицинская биофизика / В.О.Самойлов. — СПб.: Спец-лит, 2007. — 560 с.

[16] Стренг, Г. Линейная алгебра и ее применения / Г.Стренг. — М.: МИР, 1980.

— 456 с.

[17] Умняшкин, С.В. Теоретические основы цифровой обработки и представления сигналов / С.В.Умняшкин. — М.: Техносфера, 2012. — 368 с.

[18] Фант, Г. Акустическая теория речеобразования / Г.Фант. — М.: Наука, 1964. — 284 с.

[19] Фролов, А.В. Синтез и распознавание речи. Современные решения [Электронный ресурс] / А.В.Фролов, Г.В.Фролов // Электронный журнал. — 2003. — Режим доступа:

http://www.frolov-lib.ru/books/hi/ch01.html.

[20] Яковлев, А.Н. Введение в вейвлет-преобразования / А.Н.Яковлев. — Новосибирск: НГТУ, 2003. — 104 с.

[21] Allen, Ph. CMOS Analog Circuit Design, 3rd Edition / Ph.Allen, D.Holberg.

— Oxford University Press, 2013. — ISBN-10: 0198097387, ISBN-13: 9780198097389. — P. 784.

[22] Akima, H. A New Method of Interpolation and Smooth Curve Fitting Based on Local Procedures / H.Akima // Journal of the Association for Computing Machinery, vol. 17, 1970. — Pp. 589-602.

[23] Baken, R. Clinical Measurement of Speech and Voice / R.Baken. — London: Taylor and Francis Ltd, 1987. — P. 177.

[24] Kabal, P. Audio File Format Specifications — WAVE or RIFF WAVE sound file [Электронный ресурс] / P.Kabal. — McGill University. — Режим доступа:

http://www.mmsp.ece.mcgill.ca/AudioFormats/WAVE/WAVE.html.

[25] Kadhim, I. A New Audio Steganography System Based on Auto-Key Generator / I.Kadhim // Al-Khwarizmi Engineering Journal, vol. 8, 2012. — №1. — Pp. 27-36.

[26] Karup, J. On a new mechanical method of graduation / J.Karup. — Transactions of the Second International Actuarial Congress, London, 1899.

[27] Kirn, P. Real World Digital Audio / P.Kirn. — Berkeley: Peachpit Press, 2006.

— ISBN-10: 0321304608, ISBN-13: 9780321304605. — P. 615.

[28] Lyons, R. Understanding Digital Signal Processing, 3rd Edition / R.Lyons. — Prentice-Hall, 2011. — ISBN-10: 0137027419, ISBN-13: 9780137027415. — P. 954.

[29] Morozov, P.D. Speech signals analysis using a frequency detector and smoothing first and second derivatives / P.D.Morozov, S.E.Miheev // "Stability and Control Processes" in Memory of V.I. Zubov (SCP), 2015 International Conference. — Pp. 576 - 579.

[30] Moulines, E.Time-domain and frequency-domain techniques for prosodic modification of speech / E.Moulines, W.Verhelst. — In: Kleijn, W.B., Paliwal, K.K. (eds.): Speech coding and synthesis. — Amsterdam: Elsevier, 1995. — Pp. 519-555.

[31] Olkkonen, J. Discrete Wavelet Transforms: Theory and Applications / J.Olkkonen. — Intech, 2011. — ISBN-13: 9789533071855. — P. 256.

[32] Oster, G. Auditory Beats in the Brain / G.Oster // Scientific American, 1973.

— №229(4). — Pp. 94-102.

[33] Polikar, R. The Wavelet Tutorial [Электронный ресурс] / R.Polikar. — Режим доступа:

http://engineering.rowan.edu/polikar/WAVELETS/WTtutorial.html.

[34] Salomon, D. Data Compression: The Complete Reference, 4th Edition / D.Salomon. — Springer, 2006. — ISBN-10: 1846286026, ISBN-13: 9781846286025. — P. 1093.

[35] Sayood, Kh. Introduction to Data Compression, 3rd Edition / Kh.Sayood. — Morgan Kaufmann, 2005. — ISBN-10: 012620862X, ISBN-13: 9780126208627. — P. 680.

[36] Schoenberg, I. Contributions to the Problem of Approximation of Equidistant Data by Analytic Functions / I.Schoenberg // Quarterly of Applied Mathematics, vol. 4, nos. 1 & 2, 1946. — Pp. 45-99 & 112-141.

[37] Sprague, T. Explanation of a new formula for interpolation / T.Sprague // Journal of the Institute of Actuaries, vol. 22, 1880. — Pp. 270-285.

[38] Titze, I. Principles of Voice Production / I.Titze. — Prentice Hall (currently published by NCVS.org), 1994. — P. 188.

[39] Acid Music Studio (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://www.sonycreativesoftware.com/acidsoftware.

[40] Adobe Audition (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://www.adobe.com/products/audition.html.

[41] AudaCity (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://www.audacityteam.org/.

[42] Audio Speed Changer Pro (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://audio_speed_changer_pro.en.softonic.com.

[43] Cakewalk Sonar (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

https://www.cakewalk.com/products/SONAR/.

[44] Logic Pro (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://www.apple.com/ru/logic-pro/.

[45] Music Construction Set (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://www.mobygames.com/game//will-harveys-music-construction-set.

[46] Nero WaveEditor (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://nero-waveeditor.en.softonic.com.

[47] PaulStretch (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://hypermammut.sourceforge.net/paulstretch/.

[48] PhotoSounder (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://photosounder.com.

[49] Pro Tools (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://www.avid.com.

[50] Propellerhead Reason (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

https://www.propellerheads.se/reason.

[51] REAPER (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://www.reaper.fm.

[52] Sound Forge (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://www.sonycreativesoftware.com/soundforgesoftware.

[53] VocalRemover (официальный сайт производителя программы) [Электронный ресурс]. — Режим доступа:

http://vocalremover.ru.

[54] Результаты экспериментов [Электронный ресурс]. — Режим доступа: https://soundcloud.com/user-599793378.

[55] Что такое форманты и классификация тембров голоса по Блудову А.А. [Электронный ресурс]. — Режим доступа:

http://www.constudio.ru/2010/02/what-are-formants.html.

[56] IBM Corporation and Microsoft Corporation (August 1991). Multimedia Programming Interface and Data Specifications 1.0. [Электронный ресурс]. — Режим доступа:

http://www.tactilemedia.com/info/MCI_Control_Info.html.

[57] Microsoft Help and Support. Information about the Multimedia file types that Windows Media Player supports. Microsoft Corporation, 12.05.2008 [Электронный ресурс]. — Режим доступа:

http://support.microsoft.com/kb/316992.

NETPERIODFILLING

void NetPeriodFilling(int fType, int mmin, int mmax,

int nWdiscr, int* AddrStep)

{int stepLocal; stepLocal = (int)(mmax-mmin)/(nWdiscr-1); *AddrStep = stepLocal; mm[fType][0] = mmin; for (int i = 1; i < nWdiscr; i++) mm[fType][i] = mm[fType][i-1] + stepLocal;

}

PHASESHIFT

void PhaseShift(int fType, int P) {float sumLocal = 0.0, phaseLocal, epsLocal = 0.01; for (int j = 1; j <= P; j++)

{aHalf2[fType][j-1] = a[fType][2*j-1]*a[fType][2*j-1] +

a[fType][2*j]*a[fType][2*j]; aHalf[fType][j-1] = sqrt(aHalf2[fType][j-1]); sumLocal += aHalf[fType][j-1]; if (sumLocal < epsLocal) phaseLocal = 0.0; else

{phaseLocal = asin(a[fType][2*j-1]/aHalf[fType][j-1]); if (a[fType][2*j] < 0.0) if (a[fType][2*j-1] > 0.0) phaseLocal = M_PI - phaseLocal; else phaseLocal = - M_PI - phaseLocal;

}

phase[fType][j-1] = phaseLocal;

}

}

SCANNER

int Scanner(int fType, int P, int n,

int mult, int nWdiscr, float* WorkR, double* AddrSgoal) {float aLocal[2*Pmax+1], phaseLocal[Pmax]; double SgoalLocal;

for (int j = 0; j < 2*Pmax; j++) aLocal[j] = 0.0; int IndexLocal = 0; for (int i = 0; i < nWdiscr; i++) {GaDiPh(fType, P, n,

mm[fType][i], mult, nWdiscr, WorkR, &SgoalLocal); if (i == 0) goto Scan0; if (*AddrSgoal > SgoalLocal)

{IndexLocal = i; Scan0: *AddrSgoal = SgoalLocal; for (int j = 0; j <= 2*P; j++) aLocal[j] = a[fType][j]; for (int j = 0; j < P; j++) phaseLocal[j] = phase[fType][j];

}

}

for (int j = 0; j <= 2*P; j++) a[fType][j] = aLocal[j]; for (int j = 0; j < P; j++) phase[fType][j] = phaseLocal[j]; return IndexLocal;

}

OPTIMISATIONOFPERIOD

int OptimisationOfPeriod(int fType, int P, int n,

int m, int mult, int nWdiscr, int step, float* WorkR, int* Addrlndex, double* AddrSgoal) {int number, schetPOend, mDelta, m1, mLocal; double s1 = -1.0, SgoalLocal = -1.0; int IndexLocal, IndexOldLocal, mShift; IndexOldLocal = *AddrIndex; IndexLocal = *AddrIndex; float *pointLocal; bool number1repeat = 0; number = 1; schetPOend = 0; mDelta = 1;

if ((fType == 0)&&((n - n0)%(Shift*mm[fType][nWdiscr-1]) == 0)) {IndexLocal = Scanner(fType, P, n,

mult, nWdiscr, WorkR, &SgoalLocal); mLocal = mm[fType][IndexLocal];

}

else mLocal = m; GaDiPh(fType, P, n,

mLocal, mult, nWdiscr, WorkR, &SgoalLocal); //процедура вычисляет амплитуду, фазу и невязку для mLocal if (mLocal == mm[fType][nWdiscr-1]) mDelta = -mDelta; m1 = mLocal; mLocal += mDelta; s1 = SgoalLocal; Memor(fType, P);

OtkatWorkReduce; LBLP2:

GaDiPh(fType, P, n,

mLocal, mult, nWdiscr, WorkR, &SgoalLocal); //процедура вычисляет амплитуду, фазу и невязку для mLocal if (s1 <= SgoalLocal) if (numberlrepeat) {Otkat(fType, P); OtkatWorkReduce;

mLocal = ml; SgoalLocal = sl; schetPOend = 1; goto LBLPend;

}

else if (mDelta > 0 && ml == mm[fType][0] ||

mDelta < 0 && ml == mm[fType][nWdiscr-1]) {IndexLocal = Scanner(fType, P, n,

mult, nWdiscr, WorkR, &SgoalLocal); mLocal = mm[fType][IndexLocal]; schetPOend = 2; goto LBLPend;

}

else

{mDelta = -mDelta; mLocal = ml + mDelta; numberlrepeat = 1; goto LBLP2;

}

LBLP1: number++;

if (mLocal == mm[fType][0] || mLocal == mm[fType][nWdiscr-1])

{IndexLocal = Scanner(fType, P, n,

mult, nWdiscr, WorkR, &SgoalLocal); mLocal = mm[fType][IndexLocal]; schetPOend = 3; goto LBLPend;

}

si = SgoalLocal; ml = mLocal; mLocal += mDelta; Memor(fType, P); OtkatWorkReduce; GaDiPh(fType, P, n,

mLocal, mult, nWdiscr, WorkR, &SgoalLocal); if (SgoalLocal >= si) {Otkat(fType, P); OtkatWorkReduce;

mLocal = ml; SgoalLocal = si; schetPOend = 4; goto LBLPend;

}

else

{if (number > (int)step/2) {schetPOend = 5; goto LBLPend;

}

}

goto LBLP1; LBLPend:

*AddrIndex = IndexLocal; return mLocal;

}

INITIALANAYSIS

void InitialAnalysis(int fType, int P, int mult,

int mmin, int mmax, int nWdiscr, float* WorkR, int* AddrIndex, int* AddrStep, double* AddrSgoal) {int IndexLocal, stepLocal, mLocal; double SgoalLocal; int tempLocal;

NetPeriodFilling(fType, mmin, mmax,

nWdiscr, &stepLocal); *AddrStep = stepLocal; IndexLocal = Scanner(fType, P, n0,

mult, nWdiscr, WorkR, &SgoalLocal); *AddrIndex = IndexLocal; mNode[fType] = mm[fType][IndexLocal]; for (int i = 0; i < 3; i++)

{mNode[fType] = OptimisationOfPeriod(fType, P, n0+i*Shift,

mNode[fType], mult, nWdiscr, stepLocal, WorkR+i*Shift, &IndexLocal, &SgoalLocal); Nodes[fType][i+1][0] = acc*2.0*M_PI/mNode[fType]; PhaseShift(fType, P); for (int j = 0; j < P; j++) Nodes[fType][i+1][j+1] = aHalf[fType][j]; if (i == 2)

for (int j = 0; j < P; j++) phaseprev[fType][j] = phase[fType][j];

else if (i == i)

phasesynth[fType][O] = phase[fType][O] - Nodes[fType][2][0];

}

for (int k = -kO[fType][O]; k < 0; k++) Mw[fType][k] = Nodes[fType][i][0]; for (int k = 0; k < k0[fType][0]; k++) Mw[fType][k] = Nodes[fType][2][0]; for (int j = 0; j < P; j++) {for (int k = -k0[fType][0]; k < 0; k++) M[fType][j][k] = Nodes[fType][i][j+i]; for (int k = 0; k < k0[fType][0]; k++) M[fType][j][k] = Nodes[fType][2][j+i];

}

}

REGULARANAYSIS

int RegularAnalysis(int fType, int P, int n,

int m, int mult, int nWdiscr, int step, float* WorkR, int* AddrIndex, double* AddrSgoal) {int mLocal, IndexLocal; double SgoalLocal; IndexLocal = *AddrIndex;

mLocal = OptimisationOfPeriod(fType, P, n,

m, mult, nWdiscr,

step, WorkR, &IndexLocal,

&SgoalLocal);

PhaseShift(fType, P); for (int j = 0; j < P; j++) phaseprev[fType][j] = phase[fType][j]; *AddrIndex = IndexLocal; return mLocal;

}

AVERAGING

void Averaging(int fType, int P, float w) {float SLocal, sumMLocal, sumwLocal; SLocal =0.0;

for (int i = 0; i < 3; i++) for (int j = 0; j <= P; j++) Nodes[fType][i][j] = Nodes[fType][i+1][j];

for (int j = 0; j < P; j++) {

sumMLocal = aHalf[fType][j];

for (int k = 1-k0[fType][j]; k < k0[fType][j]-1; k++) {sumMLocal += M[fType][j][k]; M[fType][j][k] = M[fType][j][k+1];

}

M[fType][j][k0[fType][j]-1] = aHalf[fType][j]; Nodes[fType][3][j+1] = sumMLocal/(2.0*k0[fType][j]-1);

}

sumwLocal = w;

for (int k = 1-k0[fType][0]; k < k0[fType][0]-1; k++) {sumwLocal += Mw[fType][k]; Mw[fType][k] = Mw[fType][k+1];

}

Nodes[fType][3][0] = sumwLocal/(2.0*k0[fType][0]-1);

}

SYNTHESIS

void Synthesis() {float S = 0.0; float Coef3[nAnal][P[fType]+1], Coef2[nAnal][P[fType]+1], Coef1[nAnal][P[fType]+1], Coef0[nAnal][P[fType]+1]; for (int fType = 0; fType < nAnal; fType++) {for (int j = 1; j <= P[fType]; j++) {phasesynth[fType][j-1] += j*Nodes[fType][1][0]; phasesynth[fType][j-1] = Minimizer(phasesynth[fType][j-1]); S += sin(phasesynth[fType][j-1])*Nodes[fType][1][j];

}

}

for (int j = 0; j <= P[fType]; j++)

{Coef3[fType][j] = (Nodes[fType][3][j]-3*Nodes[fType][2][j] +

3*Nodes[fType][1][j]-Nodes[fType][0][j])/ (2*Shift*Shift*Shift); Coef2[fType][j] = (-Nodes[fType][3][j]+4*Nodes[fType][2][j]-

5*Nodes[fType][1][j]+2*Nodes[fType][0][j])/ (2*Shift*Shift); Coef1[fType][j] = (Nodes[fType][2][j]-Nodes[fType][0][j])/

(2*Shift); Coef0[fType][j] = Nodes[fType][1][j];

}

Out[nExit++] = (UnShort)S; for (int i = 1; i < Shift; i++) {S = 0.0;

for (int fType = 0; fType < nAnal; fType++)

for (int j = 1; j <= P[fType]; j++) {phasesynth[fType][j-1] += j*(Coef3[fType][0]*i*i*i+

Coef2[fType][0]*i*i+Coef1[fType][0]*i+ CoefO[fType][O]); S += sin(phasesynth[fType][j-1])*(Coef3[fType][j]*i*i*i+

Coef2[fType][j]*i*i+Coef1[fType][j]*i+CoefO[fType][j]);

}

Out[nExit++] = (UnShort)S;

}

}

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