Разработка алгоритмов и программ согласования частоты дискретизации для различных носителей звуковой информации
Разработка спектральных методов согласования частоты дискретизации. Построение алгоритма полиномиального представление сигналов. Выбор базисной системы функции для аппроксимирующего полинома. Исследование спектральных методов цифровой обработки сигналов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | диссертация |
Язык | русский |
Дата добавления | 24.05.2018 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Количество спектральных коэффициентов меньше числа отсчетов сигнала из-за эффекта сходимости, многие коэффициенты равны или близки к нулю.
Алгоритм прямого преобразования и перевода сигнала от последовательных отсчетов в спектр имеет вид
где, N - число отсчетов сигнала ( N = 2n, n = 1,2,3,…),
- элементы матрицы базисной системы Адамара;
fj = f (tj) - отсчеты входного сигнала ( j = 0, 1, 2,…, N-1 );
сi - спектральные коэффициенты ( i = 0, 1, 2,…, N-1 ).
Рис. 2.3. Базисные функции Адамара для N = 8
2.3 Разработка общего алгоритма перевода сигнала в полиномиальную форму
Сформируем равенство, в котором преобразование массива отсчетов сигнала f(t) в спектр по базису H приравнивается разложению алгебраического полинома Ak по тому же базису:
где i=0, 1, 2,…,N-1; .
Алгебраический полином второй степени имеет следующий вид:
Алгебраический полином третьей степени имеет следующий вид:
Правая часть равенства (2.6) приравняется спектральным коэффициентам базиса Адамара. Выражение (2.6) можно написать следующим виде:
Полученное выражение (2.9) можно представить в виде системы уравнений, связывающей спектральные коэффициенты входного сигнала с коэффициентами алгебраического полинома:
Решая систему уравнений можно получить аналитические выражения, где Ak вычисляется как функция от спектра входного сигнала, при этом полиномиальные аппроксимирующие структуры имеют следующий вид.
Для второй степени:
Для третьей степени:
Получились достаточно простые аналитические связи между спектральными коэффициентами сi и коэффициентами аппроксимирующего полинома Ak. Отметим, что из 8 возможных спектральных коэффициентов сi (N=0ч7) в аппроксимирующей структуре присутствуют только четыре: с0, с4, с6, с7.
Поскольку для нахождения коэффициентов аппроксимирующего полинома достаточно всего четырех спектральных коэффициентов, нет необходимости вычислять остальных спектральных коэффициентов (с1, с2, с3, с5).
Проверим разработанный алгоритм:
Возьмем 8 отсчетов функции y=ln(x+1) в интервале [0; 7/8],
Исходные отсчеты:
C помощью разработанного алгоритма найдём коэффициенты аппроксимирующего полинома для второй степени.
a0 = 0.004052
a1 = 0.931393
a2 = -0.253125
Значит аппроксимирующий полином второй степени имеет следующий вид:
y`(x)= 0.004052 +0.931393 *x-0.253125*x2
Рис.2.4. Иллюстрация аппроксимирующий полином второй степени для функции y=ln(x+1)
Возьмем 8 отсчетов функции y=ln(x+1) в интервале [0; 7/8],
Исходные отсчеты:
C помощью разработанного алгоритма найдём коэффициенты аппроксимирующего полинома для третьей степени.
a0 = 0.000320
a1 = 0.986533
a2 = -0.413048
a3 = 0.121716
Значит аппроксимирующий полином третьей степени имеет следующий вид:
y`(x)= 0.000320 +0.986533*x--0.413048 *x2+0.121716*x3
Рис.2.5. Иллюстрация аппроксимирующий полином второй степени для функции y=ln(x+1)
В таблицах 2.1 и 2.2 приведены среднеквадратические ошибки аппроксимации функциональных зависимостей и экспериментальных данных
Таблица 2.1
Функциональные зависимости (степень полинома k=2) |
Среднеквадратические ошибки |
||
МНК (%) |
Пол. Мет. (%) |
||
ln(x+1) |
0,005795 |
0,006231 |
|
ex |
0,012459 |
0,013411 |
|
sin(x*р) |
0,056695 |
0,061 |
|
cos(x*р) |
0,2134 |
0,2302 |
Таблица 2.2
Функциональные зависимости (степень полинома k=3) |
Среднеквадратические ошибки |
||
МНК (%) |
Пол. Мет. (%) |
||
ln(x+1) |
0,0006738 |
0,000728 |
|
ex |
0,0006778 |
0,00084 |
|
sin(x*р) |
0,0376258 |
0,040295 |
|
cos(x*р) |
0,008853 |
0,013237 |
Выводы по Главе II
По результатам исследований во второй главе можно сделать следующие выводы:
1. Разработан алгоритм вычисления коэффициентов аппроксимирующих полиномов. Предлагаемый подход базируются на представлении входного сигнала не в виде последовательности отсчетов, а в виде спектров в базисной системе Адамара.
2. Разработанный алгоритм состоит в решении системы алгебраических уравнений, на его базе предложены структуры вычисления коэффициентов полиномов.
3. Получены оценки точности выполнения аппроксимирующих выражений, которые показывают
4. Для разработанного алгоритма реализованы контрольные примеры (экспериментальные функции) для оценки возникающих при обработке погрешностей.
Глава 3. Разработка программных средств согласование частоты дискретизации
3.1 Характеристик современных средств записи и хранения звуковой информации
На основа записи хранение и воспроизведение цифрового сигнала на компьютере лежит звуковая карта.
Звуковая карта (звуковая плата, аудиокарта; англ. sound card) -- дополнительное оборудование персонального компьютера, позволяющее обрабатывать звук (выводить на акустические системы и/или записывать). На момент появления звуковые платы представляли собой отдельные карты расширения, устанавливаемые в соответствующий слот. В современных материнских платах представлены в виде интегрированного в материнскую плату аппаратного кодека (согласно спецификации Intel AC'97 или Intel HD Audio).
Для того чтобы понять принцип работы звуковой карты рассмотрим следующую схему.
Рис. 3.1. Упрощенная схема устройства звуковой карты
Звуковой сигнал с микрофона или плеера подается на один из входов звуковой карты. Это аналоговый сигнал. Он поступает на входной микшер, который служит для смешивания сигналов, если их поступает на вход несколько. Затем сигнал с входного микшера поступает на аналого-цифровой преобразователь (АЦП), с помощью которого происходит оцифровка аналогового сигнала, т.е. преобразование его в дискретный двоичный сигнал. Потом цифровые данные поступают в сердце звуковой платы - процессор (DSP - Digital Signal Processor). Этот процессор управляет обменом данными с компьютером через шину PCI материнской платы. Когда центральный процессор компьютера выполняет программу записи звука, то цифровые данные поступают через шину PCI либо прямо на жесткий диск, либо в оперативную память компьютера. Присвоив этим данным имя, мы получим звуковой файл.
При воспроизведении этого звукового файла данные с жесткого диска через шину PCI поступают в сигнальный процессор звуковой платы, который направляет их на цифро-аналоговый преобразователь (ЦАП). Цифро-аналоговый преобразователь преобразует двоичный сигнал в аналоговый. Электрический сигнал, получившийся в результате преобразования, поступает на выходной микшер. Этот микшер идентичен входному и управляется при помощи той же самой программы. Сигнал с выходного микшера поступает на линейный выход звуковой карты и выход на звуковые колонки, подключив к которому колонки или наушники мы слышим звук [17, 18].
Интегрированная аудиоподсистема AC'97
AC'97 (сокращенно от англ. audio codec '97) -- это стандарт для аудиокодеков, разработанный подразделением Intel Architecture Labs компании Intel в 1997 г. Этот стандарт используется в основном в системных платах, модемах, звуковых картах и корпусах с аудиорешением передней панели. AC'97 поддерживает частоту дискретизации 96 кГц при использовании 20-разрядного стерео-разрешения и 48 кГц при использовании 20-разрядного стерео для многоканальной записи и воспроизведения.
AC'97 состоит из встроенного в южный мост чипсета хост-контроллера и расположенного на плате аудиокодека. Хост-контроллер (он же цифровой контроллер, DC'97; англ. digit controller) отвечает за обмен цифровыми данными между системной шиной и аналоговым кодеком. Аналоговый кодек -- это небольшой чип (4Ч4 мм, корпус TSOP, 48 выводов), который осуществляет аналогоцифровое и цифроаналоговое преобразования в режиме программной передачи или по DMA. Состоит из узла, непосредственно выполняющего преобразования -- АЦП/ЦАП (аналоговоцифровой преобразователь / цифроаналоговый преобразователь; англ. analog digital converter / digital analog converter, сокр. ADC/DAC). От качества применяемого АЦП/ЦАП во многом зависит качество оцифровки и декодирования цифрового звука.
HD Audio
HD Audio (от англ. high definition audio -- звук высокой четкости) является эволюционным продолжением спецификации AC'97, предложенным компанией Intel в 2004 году, обеспечивающим воспроизведение большего количества каналов с более высоким качеством звука, чем при использовании интегрированных аудиокодеков AC'97. Аппаратные средства, основанные на HD Audio, поддерживают 24-разрядное качество звучания (до 192 кГц в стереорежиме, до 96 кГц в многоканальном режимах -- до 8 каналов).
Формфактор кодеков и передачи информации между их элементами остался прежним. Изменилось только качество микросхем и подход к обработке звука.
SRC
Преобразователи частоты семплирования (SRC, Sample Rate Convertors) задействуются в тех случаях, когда частота семпла не совпадает с опорной частотой текущего режима (иначе семпл проиграется с неправильной скоростью и изменит тон). Используется 256 интерполяторов, с качеством выше, чем у типичного полифазного КИХ-фильтра 100-го порядка (FIR, finite impulse response = КИХ, конечная импульсная характеристика). Диапазон сдвига тона от 0 до 8.
Рис.3.2. Схема работы SRC X-Fi
Картинка иллюстрирует работу SRC X-Fi по конвертации 44.1 кГц в 48 кГц. Сперва отсчеты сигнала удваиваются до 88.2 кГц. Полифазный КИХ фильтр конвертирует сигнал до 192 кГц с коэффициентом, равным удвоенному отношению 48/44.1. В финальной стадии частота уменьшается до 48 кГц. Такая схема более эффективна с точки зрения вычислительных затрат и даёт более качественный результат, так как на последнем этапе не образуется алиазинг из-за некратных частот.
При конвертации стандартного тона 997 Гц из 44.1 кГц в 48 кГц стандартный параметр, отвечающий за мощность шумов и искажений, THD+N равен -136 дБ, дрожание частоты в полосе пропускания ±0.00025 дБ. Проверять эти параметры Creative рекомендует как минимум с помощью измерительной станции AudioPrecision.
Учитывая запас по перегрузке (headroom) в 6 дБ и 32 стадии цикла обработки, THD+N может ухудшиться до -124 дБ, а неравномерность АЧХ возрастёт до ±0,01 дБ. Но параметры даже самых лучших на сегодня ЦАПов по шумам и искажениям уступают таким показателям.
Следует лишь учесть, что параметры качества в частотной области не показывают работу фильтров во временном домене. Но, учитывая позиционирование карт в первую очередь на игры и фильмы, такую точность преобразования можно считать великолепной. В прошлых изделиях интермодуляционные искажения от SRC доходили до 0,1% в высокочастотной области, при этом на падение качества жаловались лишь единичные пользователи.
Имеется очень важный момент, который не сильно афишируется производителем -- в отличие от звуковых процессоров предыдущего поколения, в X-Fi можно отключить передискретизацию вместе с остальными эффектами DSP! При этом, конечно, теряется уникальная возможность одновременного прослушивания нескольких сигналов разных частот дискретизации, с последующим наложением всяческих эффектов и улучшайзеров. Однако поклонникам максимально качественного саунда подобное нужно меньше всего.
Преобразователи SRC работают также в режиме DMA, позволяя производить преобразования прямо в ОЗУ компьютера без участия ЦПУ. Для исключения коллизий при загруженной шине PCI имеется настраиваемый кэш.
3.2 Разработка метода изменения частоты дискретизации аудио сигналов
На сегодняшний день широко используются две способы изменения частоты дискретизации, которые приведены в первой главе. Первый способ изменения частоты дискретизации основывается на преобразовании дискретного сигнала в аналоговую форму, затем заново дискретизировать аналоговый сигнал с нужной частотой дискретизаций. При такой подходе, расходывается много времени за счет этого такой подход не удовлетворяет требованием систем реального времени. Второй подход изменения частоты дискретизации на целое число раз. Недостатком данного метода является необходимость фильтрации сигнала на повышенной в M раз частоте дискретизации, что требует значительных вычислительных ресурсов. При этом соответствующая частота может во много раз превосходить как исходную, так и окончательную частоту передискретизации, особенно если M и N -- близкие большие числа. Так, например, при передискретизации звукового сигнала с 44100 Гц до 48000 Гц этим методом необходимо увеличить частоту дискретизации в 160 раз до 7056000 Гц и затем уменьшить её в 147 раз до 48000 Гц. Таким образом, в данном примере вычисления приходится производить на частоте дискретизации более 7 МГц.
В отличие от традиционных методов разрабатываемый метод изменения частоты дискретизации, не требует больших вычислительных ресурсов, задержка сигнала чуть больше одной секунды, метод легко реализуется на аппаратном уровне.
Рис. 3.3. Алгоритм вычисления спектральных коэффициентов входного аудио сигнала.
Во второй главе бил разработан алгоритм вычисления коэффициентов аппроксимирующих полиномов. Предлагаемый подход базируются на представлении входного сигнала не в виде последовательности отсчетов, а в виде спектров в базисной системе Адамара. Модуль вычисление коэффициентов аппроксимирующего полинома показано на Рис. 3.3
Разработанный алгоритм состоит в решении системы алгебраических уравнений, на его базе предложен структуры вычисления коэффициентов полиномов. Коэффициенты алгебраического полинома вычисляется по формуле 2.11. Алгоритм вычисления алгебраического полинома показано на рисунке 3.4.
Рис. 3.4. Алгоритм вычисления коэффициентов алгебраического полинома.
Следующий вопрос, которого надо решить, заключается в следующем: разделение аудио сигнала на фиксированные фрагменты. В каждом фрагменте должно быть по 8 отсчетов, так как разработанный алгоритм, перевода сигнала в полиномиальную форму, имеет такое ограничение. Поэтому в цикле берутся каждый 8 отсчетов, вычисляются спектральные коэффициенты по этим отсчетам и затем, вычисляются полиномиальные коэффициенты аппроксимирующего полинома для этого фрагмента. Все это повториться для следующих восьми точек отсчета. И это процесс будет продолжаться пока не вычисляться полиномиальные коэффициенты аппроксимирующего полинома, для всех фрагментов, число повторений равно количество_отсчетов_в_сигнале/8. Это процедура необходимо для того чтобы разделить вес сигнал на фрагменты. В каждом фрагменте будут участвовать восемь отсчетов входного сигнала. Алгоритм реализации этой проблемы представлена на Рис.3.6.
Рис. 3.5. Алгоритм фрагментации аудиосигнала для формулирования аппроксимирующего полинома
Если продолжительность аудио сигнала меньше одной секунды считывается отсчёты аудиосигнал, и записываются в память для дальнейшей обработки, если продолжительность аудиосигнала больше одной секунды, в память записывается отсчеты текущей секунды, и обработка происходить с отсчетами одной секунды, после обработки текучего секунды аудиосигнала, результаты обработки записываются на выходной файл. Такой подход необходим при работе системах реального времени. После записи результатов обработки, выбираются следующие отсчеты в секунде. Этот процесс продолжается до окончания аудиосигнала. Количество точек в одноканальном аудиосигнале вычисляется следующем образе:
количество_отсчетов = продолжительность_аудиосигнала * частота_дискретизации_аудиосигнала
Теперь, посмотрим, что мы имеем. У нас есть алгоритм, который делить аудио сигнал на фрагменты по 8 отсчетов каждого, а также алгоритм нахождения коэффициентов аппроксимирующего полинома третьего степени для этих фрагментов. Это означает, что мы теперь сможем заняться изменение частоты дискретизации аудиосигнала.
Увеличение частоты дискретизации назевается интерполяцией, уменьшение частоты дискретизации назевается децимацией. Чтобы изменить частоту дискретизации аудио сигнала мы находим математическую модель сигнала. С помощью математической модели сигнала можно вычислить значение сигнала в любом точке.
На рис. 3.6 приведён алгоритм изменения частоты дискретизации аудисигнала. Алгоритм изменения частоты дискретизации работает следующим образом: для начала модуль фрагментации аудиосигнала разделяет аудиосигнал с продолжительностью не боле одной секунды на фрагментов из 8 отсчетов, затем это процедура вычисляет спектральный коэффициентов этого фрагмента, после этого вычисляются коэффициенты аппроксимирующего полинома для этого фрагмента.
На следующем шаге вычисляются количество фрагментов, а также, шага дискретизации. Они вычисляются по формуле:
количество_фрагментов = длина_аудио_сигнала/8;
шага дискретизации = (количество_фрагментов -0.125) / новая_частота_дискретизации;
Рис. 3.6. Алгоритм фрагментации аудиосигнала для формулирования аппроксимирующего полинома
И так теперь вычислены все нужные параметры для изменения частоты дискретизации. Открываем цикл до нового частоты дискретизации здесь, стоит одна проблема, разработанный нам алгоритм рассчитан на вычисления уровня сигнала в интервале от 0 до 1, по этому при вычислении шага берется дробная часть.
3. Разработка программы согласования частоты дискретизации для сигнальных процессоров.
На основе разработанного алгоритма било разработано модельные программы для персональных компьютеров на платформе MatLab и было проверено серия экспериментов, а также была написано программа на языке с++ которая, реализует алгоритм изменения частоты аудиоигналов.
В настоящее время наблюдается непрерывный рост интереса специалистов-разработчиков к использованию в различных устройствах обработки сигналов цифровых сигнальных процессоров. Это обусловлено как удобствами применения, доступностью и широкими возможностями отладочных инструментов самих процессоров. Среда разработки проектов VisualDSP++ позволяет разработчикам разрабатывать и выполнять отладку приложений. Эта среда включает лёгкий в использовании ассемблер, компилятор С/С++ и библиотеку исполняемых функций С/С++, включающую математические функции и функции ПЦОС. Ключевой особенностью средств разработки программного обеспечения является эффективность кода, написанного на языках С/С++
Проанализирован класс процессоров цифровой обработки сигналов и для реализации изменения частоты дискретизации аудиосигналов процессоры фирмы Analog Devices - ADSP Blackfin, отличающиеся развитыми средствами эмуляции и удобством отладки комплекса. Гарвардская архитектура и наличие аппаратно - реализованных специальных команд умножения, параллельного умножения с накоплением дают возможность широкого применения.
Системные требования программы Analog Devices:
· Операционная система - Windows 2000® SP4, Windows XP® SP2 or greater, Windows Vista™ Business edition, Windows Vista™ Enterprise edition or Windows Vista™ Ultimate edition, Windows Seven™ Business edition, Windows Seven ™ Enterprise edition or Windows Seven ™ Ultimate edition.
· Центральный процессор - Intel Pentium® 32-bit, 1 GHz
· Оперативная память - 512 MB RAM
· Свободное пространство на жестком диске - 2 GB
Программа VisualDSP++ имеет очень удобный интерфейс разработки. На рисунке 3.3.1. показано основной вид программы.
Рис.3.7. Интерфейс программы VisualDSP++.
Здесь 1- панель инструментов и строка меню; 2 - окно управления проектами; 3 - окно для написание кода программы; 4 - окно консоли, в котором отображаются результаты.
В разработанным алгоритме, изменение частоты дискретизации выполняется на произвольном числе точек, то есть можно изменят частоту дискретизации аудиосигнала в дробное число раз. Например, изменить частоту дискретизации аудиосигнала стандарта CD 44,1кГц на DVD 48,0 кГц. Чтобы достичь такого результата, било решено вычислять новые отсчеты сигнала в интервале одной секунды. Такой подход вполне оправдал себя, результаты изменений частоты дискретизации показаны на следующих рисунках. Чтобы посмотреть изменения сигнала нам необходимо построить график аудио сигнала, для этого надо сделать следующие действия, после компиляции программы заходим в меню View Debug Windows PlotNew эти
На рисунке 3.10 показано изменения частоты дискретизации сигнала с 48000 Гц на 44100 Гц. Для простоты в графике показано первые 16 отсчетов исходного сигнала и 15 отсчетов нового сигнала с измененной чистотой дискретизацией. При этом в сигнале с частотой дискретизаций 48000 Гц отсчеты сигнала измеряются на каждой 20,8 мкс, а в сигнале частотой дискретизаций 44100 Гц сигнала измеряются на каждой 22,675 мкс. На рисунке 3.11 показано изменения частоты дискретизации сигнала с 48000 Гц на 44100 Гц. Для простоты в графике показано первые 64 отсчетов исходного сигнала и 36 отсчетов нового сигнала с измененной чистотой дискретизацией.
Рис. 3.10. Изменения частоты дискретизации сигнала с частотой дискретизацией 48000 Гц на 44100 Гц в 16 отсчетах.
Рис. 3.11. Изменения частоты дискретизации сигнала с частотой дискретизацией 44100 Гц на 24800Гц в 64 отсчетах.
Разработанный алгоритм изменения частоты дискретизации не требует больших вычислительных операции, в отличии от метода изменения частоты дискретизации с целым шагом.
В этой главе было рассмотрена разработка программных средств согласования частоты дискретизации, в том числе м рассмотрены следующие моменты:
- Характеристики современных средств записи и хранения звуковой информации;
- Разработан метод изменения частоты дискретизации аудио сигналов, который работает с фиксированными фрагментами сигнала.
- На основе разработанного алгоритма, изменения частоты дискретизации аудио сигналов, била разработана программа для сигнальных процессоров компании Analog Device, на платформе VisualDSP++ ;
- Проанализировано эффективность разработанных алгоритмов и программ.
Заключение
Основные результаты работы заключаются в следующем:
1. Исследованы существующие методы цифровой обработки сигналов во временной области и в спектральной области, также выявлены недостатки классических методов аппроксимации сигналов.
2. Сформулирован и обоснован метод перевода сигнала из временной формы в спектральную, а затем в полиномиальную на основе Фурье-базисов.
3. Для выбранных базисных систем поставлены и решены теоретические вопросы поиска коэффициентов полиномов, обладающих свойствами математической корректности, алгоритмической эффективности и простотой реализуемости на сигнальных процессорах.
4. Для реализации разрабатываемых методов и алгоритмов обработки выбраны процессоры семейства Blackfin ADSP BF 525 компании Analog Devices, отличающиеся развитыми средствами эмуляции и удобством отладки комплекса.
5. Получены оценки эффективности разработанных полиномиальных аппроксимирующих структур, проведен анализ их качественных характеристик при обработке сигналов с шумами, выявлены их основные преимущества относительно существующими методами.
Список литературы
1. Каримов И.А.: Постановление Президента Республики Узбекистан «О мерах по дальнейшему внедрению развитию современных информационно-коммуникационных технологий» / Собрание законодательства Республики Узбекистан, 2012 г., № 13, стр. 139. Ташкент, 2012.
2. Закон Республики Узбекистан «Об информатизации»/ Ведомости Олий Мажилиса Республики Узбекистана, 2004 г., № 1-2, ст. 10. Ташкент, 11.12.2003
3. Л. З. Румшинский. Математическая обработка результатов эксперимента. Справочная руководство. Главная редакция физико-математической литературы. - М.: Изд-во Наука, 1971. - 192 c.
4. Осипова, А.П. Практикум по аппроксимации табличных функций различными аналитическими зависимостями с помощью метода наименьших квадратов. - М.: Изд-во МАИ, 1992. - 258 c.
5. Самарский, А.А.Введение в численные методы. - М.: Изд-во Наука,1997. - 352 c.
6. Волков, Е.А. Численные методы. - М.: Изд-во Наука, 1987. - 345 c.
7. И.С. Березин, Н.П. Жидков. Методы вычислений. - М.: Изд-во ФизМатЛит, 1962. - 254c.
8. Дж. Форсайт, М.Мальком, К. Моулер. Машинные методы математических вычислений. - М.: Изд-во "Мир", 1980. - c.
9. Ричард Лайонс Цифровая обработка сигналов: второе издание. -- Бином-Пресс, 2006. - 656 с.
10. Л. Рабинер, Б. Гоулд Теория и применение цифровой обработки сигналов. -- М.: Мир, -- 848 с.
11. Романюк Ю.А. Основы цифровой обработки сигналов. В 3-х ч. Ч.1. Свойства и преобразования дискретных сигналов: Учебное пособие. --М.: МФТИ, 2005.--332 с.
12. А. Б. Сергиенко. Цифровая обработка сигналов. - СПб.: СпецЛит, 2002. - 608 c.
13. Айфичер, Эммануил С. Джервис, Барри У. Цифровая обработка сигналов: практический подход, 2-е издание - М.: Вильямс, 2004. -- 992 c.
14. Юкио Сато. Без паники! Цифровая обработка сигналов. - М.: Додэка-XXI, 2010. --176 c.
15. Дахнович, А.А. Дискретные системы и цифровая обработка сигналов: учебное пособие-Тамбов: Изд-во Тамб. гос. техн. ун-та, 2007. - c.
16. А. Оппенгейм, Р. Шафер. Цифровая обработка сигналов. - М.: Техносфера, 2006. - 859 c.
Приложение
Листинг кода программы изменения частоты дискретизации на языке программирование C++ на платформе VisualDSP++
diskretlash.cpp
// diskretlash.cpp: Defines the entry point for the console application.
#include <iostream.h>
#include <stdio.h>
#include <math.h>
void main()
{
int i, j;
double yy_out[512]={0};
int vector_leng = 15;
int hh;
hh = int(double(vector_leng)/double(8));
double c0[16],c4[16],c6[16],c7[16],a0[16],a1[16],a2[16],a3[16];
for (j= 0; j< hh+1; j++)
{
for (i=0; i<8; i++)
{
y_loc[i] = y_in[(j*8+i)];
}
// вычисление спектральных коэффициентов
c0[j] = y_loc[0]+y_loc[1]+y_loc[2]+y_loc[3]+y_loc[4]+y_loc[5]+y_loc[6]+y_loc[7];
c4[j] = y_loc[0]+y_loc[1]+y_loc[2]+y_loc[3]-y_loc[4]-y_loc[5]-y_loc[6]-y_loc[7];
c6[j] = y_loc[0]+y_loc[1]-y_loc[2]-y_loc[3]-y_loc[4]-y_loc[5]+y_loc[6]+y_loc[7];
c7[j] = y_loc[0]-y_loc[1]-y_loc[2]+y_loc[3]-y_loc[4]+y_loc[5]+y_loc[6]-y_loc[7];
cout << c0[j] <<'\n' << c4[j] <<'\n' << c6[j] <<'\n' << c7[j] <<'\n'<< endl;
// вычисление коэффициентов кубического полинома
a3[j] = -c7[j]/0.09385;
a2[j] = 2*((c6[j])+c7[j]*7);
a1[j] = -0.5*(c4[j]+3.5*c6[j]+ 9.6542*c7[j]);
a0[j] = 0.125*(c0[j]+1.75*(c4[j]+c6[j])+2.6135*c7[j]);
cout << "a0= "<< a0[j] <<'\n' << "a1= "<< a1[j] <<'\n' << "a2= "<< a2[j] <<'\n'<< "a3= " << a3[j] <<'\n' << endl;
}
for (i= 0; i < ((hh+1)*8); i++)
{
x_in[i] = double(i)/double(8);
}
int d_n = 14;
double h = 0;
int oraliq_soni = int((vector_leng+1)/8);
double qadam = (oraliq_soni-0.125)/d_n;
int nn = 0;
double xlok=0.0;
j = 0;
int k = 0;
for (i=0;i<d_n+1;i++)
{
x_out[i] = h;
j= int(h);
xlok = h-j;
yy_out[i] = a0[j]+a1[j]*xlok+a2[j]*pow(xlok, 2)+
a3[j]*pow(xlok, 3);
h = h + qadam;
}
for (j=0;j<h;j++)
{
ii = 0;
for (nn = 0; nn < d_n; nn++)
{
x_loc[nn] = ii;
y_loc2[nn] = a0[j]+a1[j]*x_loc[nn]+
a2[j]*pow(x_loc[nn], 2)+a3[j]*pow(x_loc[nn], 3);
cout << x_loc[nn] << '\t'<< y_loc2[nn] <<endl;
if (j==0)
{
x_out[nn] = x_loc[nn];
yy_out[nn] = y_loc2[nn];
}
else
{
x_out[(j*d_n+nn)] = x_loc[nn]+j;
yy_out[(j*d_n+nn)] = y_loc2[nn];
}
ii = ii + double(1)/double(d_n);
}
cout <<endl;
}
for (i=0; i<d_n+1; i++)
{
y_out[i] = yy_out[i];
cout << i+1 <<" "<< y_out[i] << " \t"<< y_in[i]<<" \t"<< fabs(y_in[i] - y_out[i]) << endl;
}
}
Листинг кода модельной программы изменения частоты дискретизации на платформе MatLab
wave.m
clc
clear
% считывание аудио файла с расширением *.wave
[y, fs, nbits, opts] = wavread('salom.wav'); d_old = fs
n = size(y,1);
% определение длительности файла
duraction = n/d_old
format short;
yy = y(1:n, 1);
% воспроизведение аудио файла
wavplay(yy, 48000)
for j = 1:fix(n/8)-1
for i=1:8
y_loc(i) = yy(((j)*8+i));
end
y_loc;
c0(j) = y_loc(0+1)+y_loc(1+1)+y_loc(2+1)+y_loc(3+1)+y_loc(4+1)+y_loc(5+1)+y_loc(6+1)+y_loc(7+1);
c4(j) = y_loc(0+1)+y_loc(1+1)+y_loc(2+1)+y_loc(3+1)-y_loc(4+1)-y_loc(5+1)-y_loc(6+1)-y_loc(7+1);
c6(j) = y_loc(0+1)+y_loc(1+1)-y_loc(2+1)-y_loc(3+1)-y_loc(4+1)-y_loc(5+1)+y_loc(6+1)+y_loc(7+1);
c7(j) = y_loc(0+1)-y_loc(1+1)-y_loc(2+1)+y_loc(3+1)-y_loc(4+1)+y_loc(5+1)+y_loc(6+1)-y_loc(7+1);
%вычисления коэффициентов кубического полинома
a3(j) = -c7(j)/0.09385;
a2(j) = 2*((c6(j))+c7(j)*7);
a1(j) = -0.5*(c4(j)+3.5*c6(j)+ 9.6542*c7(j));
a0(j) = 0.125*(c0(j)+1.75*(c4(j)+c6(j))+2.6135*c7(j));
end
d_n = 44100
oraliq_soni = fix(n/8)-1;
qadam = (oraliq_soni-0.125)/(d_n*duraction);
h=0;
if duraction > 1
for t =1:fix(duraction)
for i=1:d_n*duraction
xout(i) = h;
j = fix(h);
xlok = h-j;
yy_out(t+i) = a0(j+1)+a1(j+1).*xlok+a2(j+1).*xlok.^2 + a3(j+1)*xlok.^3;
h = h+ qadam;
end
end
ennd = i+t;
else
for i=1:d_n*duraction
xout(i) = h;
j = fix(h);
xlok = h-j;
yy_out(i) = a0(j+1)+a1(j+1).*xlok+a2(j+1).*xlok.^2 + a3(j+1)*xlok.^3;
h = h+ qadam;
end
end
figure
plot(yy)
figure
plot(yy_out)
wavplay(yy_out, d_n)
Листинг кода модельной программы изменения частоты дискретизации на платформе Microsoft Visual Studio 2010 на языке програмирование C#
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Alvas.Audio;
namespace AudioResampling
{
public partial class Form1: Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openFileDialog1.FileName;
if (File.Exists(textBox1.Text))
{
richTextBox1.Text = GetFileInfo(textBox1.Text);
}
else
{
richTextBox1.Text = "Файл не найден !";
}
}
}
private void button2_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
txtOutput.Text = saveFileDialog1.FileName;
}
}
private string GetFileInfo(string fileName)
{
var sb = new StringBuilder();
WaveReader wr = new WaveReader(File.OpenRead(fileName));
IntPtr format = wr.ReadFormat();
byte[] data = wr.ReadData();
wr.Close();
var fd = AudioCompressionManager.GetFormatDetails(format, true);
WaveFormat wf = AudioCompressionManager.GetWaveFormat(fd.FormatHandle);
sb.AppendFormat("Format: [{0}], \nFormatTag: {1}, \nChannels: {2}, \nSamplesPerSec: {3}, \nBitsPerSample: {4}, \nBlockAlign: {5}, \nAvgBytesPerSec: {6}\n\n",
fd,
wf.wFormatTag,
wf.nChannels,
wf.nSamplesPerSec,
wf.wBitsPerSample,
wf.nBlockAlign,
wf.nAvgBytesPerSec);
return sb.ToString();
}
private void ConvertWav()
{
var fileName = textBox1.Text;
IntPtr formatNew = AudioCompressionManager.GetPcmFormat(2, 16, Convert.ToInt32(txtSamples.Text));
string fileNameNew = txtOutput.Text;
WaveReader wr = new WaveReader(File.OpenRead(fileName));
IntPtr format = wr.ReadFormat();
byte[] data = wr.ReadData();
wr.Close();
byte[] dataNew = AudioCompressionManager.Convert(format, formatNew, data, false);
WaveWriter ww = new WaveWriter(File.Create(fileNameNew),
AudioCompressionManager.FormatBytes(formatNew));
ww.WriteData(dataNew);
ww.Close();
}
private void button3_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(txtOutput.Text))
{
MessageBox.Show("Пожалуйста, выберите выходной файл !");
}
else
{
ConvertWav();
}
}
}
}
Form1.Designer.cs
namespace AudioResampling
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label2 = new System.Windows.Forms.Label();
this.txtOutput = new System.Windows.Forms.TextBox();
this.button2 = new System.Windows.Forms.Button();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.txtSamples = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.button3 = new System.Windows.Forms.Button();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
// button1
this.button1.Location = new System.Drawing.Point(376, 12);
this.button1.Margin = new System.Windows.Forms.Padding(2);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(26, 19);
this.button1.TabIndex = 0;
this.button1.Text = "...";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
// textBox1
this.textBox1.Location = new System.Drawing.Point(208, 12);
this.textBox1.Margin = new System.Windows.Forms.Padding(2);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(164, 20);
this.textBox1.TabIndex = 1;
// label1
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 15);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(191, 13);
this.label1.TabIndex = 2;
this.label1.Text = "Выберите файл с расширением wav";
// richTextBox1
this.richTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.richTextBox1.Location = new System.Drawing.Point(6, 19);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(374, 160);
this.richTextBox1.TabIndex = 3;
this.richTextBox1.Text = "";
// groupBox1
this.groupBox1.Controls.Add(this.richTextBox1);
this.groupBox1.Location = new System.Drawing.Point(15, 37);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(386, 185);
this.groupBox1.TabIndex = 4;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Информация о выбранном файле ";
// label2
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(6, 47);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(149, 13);
this.label2.TabIndex = 7;
this.label2.Text = "Название выходного файла";
// txtOutput
this.txtOutput.Location = new System.Drawing.Point(193, 43);
this.txtOutput.Margin = new System.Windows.Forms.Padding(2);
this.txtOutput.Name = "txtOutput";
this.txtOutput.Size = new System.Drawing.Size(158, 20);
this.txtOutput.TabIndex = 6;
// button2
this.button2.Location = new System.Drawing.Point(354, 43);
this.button2.Margin = new System.Windows.Forms.Padding(2);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(26, 19);
this.button2.TabIndex = 5;
this.button2.Text = "...";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
// groupBox2
this.groupBox2.Controls.Add(this.txtSamples);
this.groupBox2.Controls.Add(this.label2);
this.groupBox2.Controls.Add(this.label3);
this.groupBox2.Controls.Add(this.txtOutput);
this.groupBox2.Controls.Add(this.button2);
this.groupBox2.Location = new System.Drawing.Point(15, 228);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(386, 78);
this.groupBox2.TabIndex = 8;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Информация о выходном файле";
// txtSamples
this.txtSamples.Location = new System.Drawing.Point(193, 16);
this.txtSamples.Margin = new System.Windows.Forms.Padding(2);
this.txtSamples.Name = "txtSamples";
this.txtSamples.Size = new System.Drawing.Size(187, 20);
this.txtSamples.TabIndex = 9;
// label3
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(6, 19);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(154, 13);
this.label3.TabIndex = 0;
this.label3.Text = "Частота дискретизации (Hz)";
// button3
this.button3.Location = new System.Drawing.Point(15, 311);
this.button3.Margin = new System.Windows.Forms.Padding(2);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(385, 28);
this.button3.TabIndex = 10;
this.button3.Text = "Изменить частоту дискретизации";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
// openFileDialog1
this.openFileDialog1.FileName = "openFileDialog1";
// Form1
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(411, 351);
this.Controls.Add(this.button3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.label1);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "Form1";
this.Text = "Resampling wav file";
this.groupBox1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtOutput;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.TextBox txtSamples;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.SaveFileDialog saveFileDialog1;
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace AudioResampling
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Размещено на Allbest.ru
...Подобные документы
Техническая характеристика сигналов в системах цифровой обработки. Описание программ для обработки цифровой и синтезированной звуковой информации, шумоподавление звука. Профессиональная обработка звука и звуковой волны: сжатие, запись, сэмплирование.
курсовая работа [82,9 K], добавлен 01.03.2013Эффективность преобразования и кодирования сигналов, используемых в качестве переносчиков информации. Амплитудная модуляция. Генераторы сигналов низкой частоты. Построение графиков "пороговый сигнал-полоса канала связи" для идеального и реального каналов.
курсовая работа [299,7 K], добавлен 23.01.2014Нахождение собственных чисел и собственных векторов в связи с широкой областью использования краевых, начально-краевых и спектральных задач в науке и технике. Методы вычисления спектральных характеристик Леверье–Фаддеева, А.Н. Крылова и А.М. Данилевского.
курсовая работа [2,1 M], добавлен 22.09.2014Использование цифровых сигналов для кодирования информации, регистрации и обработки; унификация операций преобразования на всех этапах ее обращения. Задачи и физическая трактовка процессов идеальной интерполяции сигналов алгебраическими полиномами.
реферат [1,3 M], добавлен 12.03.2011Моделирование процесса обработки 500 сигналов, поступающих с датчиков. Определение среднего времени задержки сигналов в канале и линии-ЭВМ и вероятности переполнения входных накопителей. Разработка и описание алгоритма функционирования программной модели.
курсовая работа [140,7 K], добавлен 09.04.2013Исследование простейших радиотехнических сигналов, разложение их в ряд Фурье. Построение амплитудных спектров синуса, суммы синусов и синка. Создание в среде программирования Matlab программ с параметрами: длина сигнала, амплитуда, частота дискретизации.
лабораторная работа [990,4 K], добавлен 23.11.2014Понятие и способы дискретизации аналоговых сигналов. Ознакомление с примерами аналого-цифрового преобразование звука. Изучение способов кодирования цифровых изображений, видеоданных и текста. Рассмотрение теоремы Котельникова и теории информации.
презентация [1,2 M], добавлен 15.04.2014Особенности разработки и реализации обучающей программы и схемы алгоритмов на языке программирования С++. Понятие равномерной и неравномерной дискретизации. Представление информации (составление кода) в виде таблицы перекодировки или многочлена.
курсовая работа [704,6 K], добавлен 06.03.2013Характеристика предприятия ТОО "Com Sales Group". Составление программ на языке программирования. Составление алгоритмов, разработка численных методов решения задач. Методы откладки программ. Анализ технологии машинной обработки экономической информации.
отчет по практике [1,3 M], добавлен 19.04.2016Ознакомление с комплектацией и классификацией звуковых карт; рассмотрение их основных характеристик - частоты дискретизации, разрядности, динамического диапазона, коэффициента нелинейных искажений, поддерживаемых спецэффектов. Диапазон цен на аудиоплаты.
презентация [647,5 K], добавлен 17.11.2011Характеристика методов нечеткого моделирования и изучение системы кластеризации в пакетах прикладных программ. Разработка и реализация алгоритма для оптимизации базы правил нечеткого классификатора с помощью генетического алгоритма аппроксимации функции.
дипломная работа [1,9 M], добавлен 21.06.2014Характеристика методов представления заданных чисел в двоичной, шестнадцатеричной, восьмеричной системе счисления. Представление указанного числа в четырехбайтовом IEEE формате. Разработка алгоритма обработки одномерных и двумерных числовых массивов.
контрольная работа [138,9 K], добавлен 05.06.2010Современные семейства ПЛИС фирмы Xilinx, их характеристики и значимость в процессе построения систем цифровой обработки сигналов. Создание базы параметров, фактов и запрещенных комбинаций для решения открытой задачи поискового проектирования модели ПЛИС.
курсовая работа [3,6 M], добавлен 14.12.2012Анализ существующих алгоритмов обработки информации человеком и современных моделей памяти. Разработка алгоритмов и математической модели ассоциативного мышления. Имитационная модель обработки информации. Компьютерный эксперимент по тестированию модели.
курсовая работа [2,3 M], добавлен 19.11.2014Цифровое представление звуковых сигналов. Устройства вывода звуковой информации: колонки, динамик и наушники. Устройства ввода звуковой информации. Частота и интенсивность звука. Амплитуда звуковых колебаний, мощность источника звука, диапазон колебаний.
реферат [133,3 K], добавлен 08.02.2011Преобразование аналоговой формы первичных сигналов для их обработки с помощью ЭВМ в цифровой n-разрядный код, и обратное преобразование цифровой информации в аналоговую. Практическая реализация схем аналого-цифровых и цифро-аналоговых преобразователей.
реферат [89,2 K], добавлен 02.08.2009Проблема улучшения качества отпечатков пальца с целью повышения эффективности работы алгоритмов биометрической аутентификации. Обзор алгоритмов обработки изображений отпечатков пальцев. Анализ алгоритма, основанного на использовании преобразования Габора.
дипломная работа [4,5 M], добавлен 16.07.2014Непрерывная и дискретная информация. Кодирование как процесс представления информации в виде кода. Особенности процедуры дискретизации непрерывного сообщения. Позиционные и непозиционные системы счисления. Представление информации в двоичном коде.
реферат [117,3 K], добавлен 11.06.2010Работа с сигналами речевого диапазона. Применение кодеков и кофидеков. Устранение искажений от взаимодействия частоты дискретизации. Блок-схема внешнего модема. Контакты и разъемы. Четырехпроводная дуплексная передача. Цифровой сигнальный процессор.
презентация [4,6 M], добавлен 22.10.2014Изучение и программная реализация в среде Matlab методов обработки, анализа, фильтрации, сегментации и улучшения качества рентгеновских медицинских изображений. Цифровые рентгенографические системы. Разработка статически обоснованных алгоритмов.
курсовая работа [4,7 M], добавлен 20.01.2016