7 / 1 / 1
Регистрация: 01.10.2012
Сообщений: 115
1

Изменение частоты дискретизации wav

01.04.2019, 05:32. Показов 3206. Ответов 7
Метки нет (Все метки)

Здравствуйте. Имею wav файл, функцией [y,Fs] = audioread(filename) считываю его.
Вопрос, как можно поменять частоту дискретизации Fs чтобы у меня количество отчетов y уменьшилось?
я же правильно понимаю что массив y зависит от Fs? Или придется перекодировать сам wav файл?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2019, 05:32
Ответы с готовыми решениями:

Ffmpeg. Изменения частоты дискретизации (resample) у wav файла с 44 100 Гц до 8000 Гц
Кто то сталкивался с задачей изменения частоты дискретизации при помощи Fffmpeg через wrapper...

Быстрое изменение частоты дискретизации имеющегося звука онлайн
Добрый день. У меня задача быстрого изменения частоты дискретизации имеющегося звука он-лайн по...

Увеличение частоты дискретизации
Есть фильтр, нужно в исходную последовательность вставить нули и передать в фильтр. Подскажите,...

Вывод в RichEdit шаг Дискретизации от *.wav
Ниже приведённый пример по моему мнению не совсем удачный, но этим примером хочу довести.....чего...

7
126 / 115 / 29
Регистрация: 31.10.2016
Сообщений: 1,326
01.04.2019, 10:48 2
Fs это возвращаемое значение функции, оно определяется файлом, который Вы загружаете. Изменить его непосредственно нельзя. Можно только записать новый файл с требуемой Fs, а потом его прочитать. У функции audioread есть дополнительные опции, они позволяют загружать определённый фрагмент файла и задавать формат загружаемых данных (можно выбрать целый или double). Такого, чтобы загружать данные с отличающейся от оригинальной Fs в ней не предусмотрено. И это не случайно, так как перед прореживанием сигнала, во избежание искажений, требуется низкочастотная фильтрация. Оптимальный ФНЧ зависит от особенностей сигнала, поэтому лучше его разработать самостоятельно. Если же требуемая Fs не кратна исходной, то там будет необходима более сложная процедура. Если уж всё равно сигнал загружается в Matlab, то наверное, всю необходимую обработку рациональнее сделать в этом же пакете.
0
945 / 684 / 323
Регистрация: 21.10.2012
Сообщений: 2,063
01.04.2019, 10:51 3
Цитата Сообщение от lna Посмотреть сообщение
чтобы у меня количество отчетов y уменьшилось
Можете написать что-то вроде: y = y(1:2:end), тем самым понизите частоту дискретизации в 2 раза (конкретно для этого случая). Главное, наверное, смотреть, чтобы спектры не наложились друг на друга.
0
7 / 1 / 1
Регистрация: 01.10.2012
Сообщений: 115
01.04.2019, 12:47  [ТС] 4
Вот у меня щас аудио с белым шумом длительностью 1 мин, пройдя через ф-цию [y,Fs] = audioread(filename), я получаю около 2млн значений y.
Данных значений очень много, у меня памяти в МК не хватит, т.к массив y я хочу подать на МК где есть функция fft. Ну и плюсом проверить fft в matlab-e. Сравнить результат.
Как бы мне быть в данном случае
0
126 / 115 / 29
Регистрация: 31.10.2016
Сообщений: 1,326
01.04.2019, 13:02 5
Вот так можно загрузить первую тысячу сэмплов файла
Matlab M
1
[y,Fs] = audioread(filename,[1,1000]);
0
163 / 134 / 60
Регистрация: 16.05.2015
Сообщений: 372
01.04.2019, 16:34 6
Лучший ответ Сообщение было отмечено lna как решение

Решение

А почему бы, после считывания, не использовать для понижения частоты дискретизации функцию dacimate?
http://matlab.exponenta.ru/sig... cimate.php
1
7 / 1 / 1
Регистрация: 01.10.2012
Сообщений: 115
04.04.2019, 09:11  [ТС] 7
да, похоже y = decimate(x,r) то что нужно,
правильно ли я понимаю, когда я считываю файл [y,Fs] = audioread(filename)
у меня появляется массив y и Fs
после применения p = decimate(y,r), к примеру r будет 20, значит Fs уменьшится в 20 раз?
0
163 / 134 / 60
Регистрация: 16.05.2015
Сообщений: 372
04.04.2019, 09:20 8
Лучший ответ Сообщение было отмечено lna как решение

Решение

Цитата Сообщение от lna Посмотреть сообщение
примеру r будет 20, значит Fs уменьшится в 20 раз
Именно так.
Но обратите внимание на следующее. В хелпе сказано, что если значение параметра r больше 13, то стоит разложит это значение на сомножители и применить функцию decimate несколько раз.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2019, 09:20

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Порядок фильтра от частоты дискретизации
При сохранении всех требований к АЧХ синтезируемого ФНЧ (границы полос пропуска- ния и...

Вывод по изменению частоты дискретизации
Доброе утро, уважаемые форумчане! Возникла у меня такая проблема. Задан сигнал, представленный на...

Необходима реализация изменения частоты дискретизации на С++
Мне очень нужна помощь в области изменения частоты дискретизации с помощью различных способов...

Зависимость коэффициентов фильтра от частоты дискретизации
Здравствуйте. Допустим есть ряд чисел А1, А2, А3 среднее будет равно А1/3+А2/3+А3/3, то есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.