Python/numpy: генерировать звук из обратного БПФ синтетического спектраPython

Программы на Python
Ответить
Anonymous
 Python/numpy: генерировать звук из обратного БПФ синтетического спектра

Сообщение Anonymous »

Я продолжаю возиться с найденным мной кодом для анализа/классификации звука в файлах .wav, в том числе с средневзвешенным по амплитуде и стандартным. отклонение спектра rfft (я знаю, что спектр типичного звукового сэмпла не очень хорошо описывается гауссовым колоколом... но я всегда могу это исправить позже).
Просто из чистого любопытства и в основном для "развлечения" я решил сгенерировать .wav-файл со сгенерированным тоном из синтетического спектра с этим средним и стандартным отклонением.
Быстрый тест подтвердил, что я могу создать .wav-файл файл с восстановленным исходным звуком, сохранив выходные данные numpy.irfft() в массиве, возвращаемом numpy.rfft(). Пока все хорошо.
И тут я застрял. Казалось бы, очевидная вещь — сохранить вывод из

Код: Выделить всё

numpy.irfft(numpy.random.normal(wAv,wStd,N))
генерирует звуковой файл, который невозможно усилить, несмотря на то, что я масштабирую выходной сигнал IRFFT в тот же диапазон, что и исходные звуковые данные, и спектр не имеет пика на ожидаемой частоте wAv (насколько этому можно доверять).
Написав это, я понимаю, что должен строить массив значений, которые следуют реальной кривой Гаусса, а не являются случайными. Это могло бы объяснить отличие результирующего спектра от того, что я ожидал, но не проблему мощности. Может ли это быть связано с тем, что я подаю в IRFFT массив чисто действительных чисел вместо комплексных чисел, которые могут ему понадобиться?
Я, конечно, мог бы генерировать синтетический тон во временной области, суммируя необходимую серию синусоидальных волн... но это было бы слишком дорого...

Подробнее здесь: https://stackoverflow.com/questions/798 ... c-spectrum
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»