LINUX.ORG.RU

Ищу софт для восстановления формулы, по которой сгенерирован .wav

 ,


0

1

Как по .wav/.mp3 восстановить генератор? Ну там суммы синусов и косинусов, чтобы можно было сгенерировать программно пищалку?



Последнее исправление: ilja-ilja1990 (всего исправлений: 1)

Я не настоящий сварщик, но задача звучит как описание преобразования Фурье.

Axon ★★★★★
()

scilab наверное лучше всего. Импортируешь wav файл как массив, делается одной командой, применяешь на него функцию fft, смотришь результат в виде таблицы, строишь графики. И все.

Ну или python + jupyter notebook + scipy

curufinwe ★★★★★
()
Последнее исправление: curufinwe (всего исправлений: 1)

Как по .wav/.mp3 восстановить генератор?

Зачем восстанавливать? Проще сгенерировать. У всех генераторов БШ на основе ПСП спектры похожие, почти равномерные, почти «белые» ©.

P.S. Ежели совсем лень, то есть «шумовой сайт» © :)

quickquest ★★★★★
()
Ответ на: комментарий от ilja-ilja1990

Вот как загрузить туда файл wav

https://help.scilab.org/doc/5.3.3/en_US/loadwave.html

Как получить спектр

https://help.scilab.org/doc/5.5.2/en_US/fft.html

Графики строить командой plot, тоже можно в справке по scilab посмотреть там же.

curufinwe ★★★★★
()
Ответ на: комментарий от ilja-ilja1990

На основе чего?

На основе псевдослучайных чисел (ПСЧ) ©, например, дискретный белый шум можно получить так: x = 2 * ((rand()/((double)RAND_MAX)) - 0.5).

quickquest ★★★★★
()
Ответ на: комментарий от curufinwe

Спасибо. А можно ли получить не графики, а формулы? Аналитическое представление?

Ну вот выполнил я analyze(loadwave('имя')). Получил график. А как по нему получить формулу? По пикам я найду амплитуду на глаз, что мне дальше делать?

ilja-ilja1990
() автор топика
Ответ на: комментарий от ilja-ilja1990

У белого шума нет формулы. Это статистический процесс.

Как из набора значений получить формулу — google://«функция по точкам».

akk ★★★★★
()
Ответ на: комментарий от akk

Я не прав. Это не белый шум, это записанный генератор.

ilja-ilja1990
() автор топика
Ответ на: комментарий от ilja-ilja1990

Тогда вместо analyze надо применить

Z = fft(wf)

где wf - массив, в который загрузился файл wav. Получится массив Z, комплексных чисел. Просмотреть его можно в окне переменных, щелкнув по нему, откроется таблица. Каждый элемент массива - это амплитуда синуса и косинуса соответствующей частоты. То есть это разложение в ряд Фурье. То есть находишь элементы, которые отличаются от нуля - это и есть гармоники сигнала. Действительная часть числа - амплитуда синуса, мнимая - косинуса. Частоту, которая соответствует каждому элементу массива, надо рассчитать отдельно.

Смотреть надо до середины массива, после середины то же самое в зеркальном отражении идет.

curufinwe ★★★★★
()
Ответ на: комментарий от curufinwe

Это работает, только если послеовательность бесконечна. При конечной последовательности имеем эффект (Гиббса) искажения краев. Чем короче последовательность, тем сильнее искажения.

Deleted
()
Ответ на: комментарий от Deleted

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

curufinwe ★★★★★
()
Ответ на: комментарий от Deleted

Ой, мне бы гармоник получить, потом буду об эффектах думать.

ilja-ilja1990
() автор топика
Ответ на: комментарий от ilja-ilja1990

Ух ты.

Ага, учи матан, ибо правильная формулировка задачи — это половина её решения.

1. А как сделать расчет частот?
2. А можно ли все это автоматизировать? Неужели никому до меня не надо было?

Глянь примеры в MathWorks/Signal Processing Toolbox ©.

quickquest ★★★★★
()
Ответ на: комментарий от ilja-ilja1990

Вот команда

f=sample_rate*(0:(N/2))/N;

f - это получится массив со значениями частот для каждого элемента массива от fft. То есть f(10) - это частота гармоники Z(10). sample_rate - частота дискретизации wav файла, N - число элементов массива wav файла. Массив f будет в два раза короче массива Z, который дает функция fft. Но как я уже писал, из массива Z интересует только первая половина элементов.

curufinwe ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.