2016-03-11 4 views
1

Я только что начал писать программу для управления некоторым аудио в python. Прежде чем писать какие-либо функции фильтрации, я хотел бы провести тест для сравнения входного сигнала с выходным сигналом после прохождения входного сигнала через rfft и irfft. По какой-то причине выходной файл имеет невероятное количество усиления в нем (50 дБ!) По сравнению с входным файлом, и я не могу понять, почему это происходит. Вот код:rfft or irfft Увеличивает объем wav-файла в python

from scipy.io.wavfile import read, write 
from scipy.fftpack import rfft, irfft 
import numpy as np 

rate, input = read('5and10ksm.wav') 
transformed = rfft(input) 
output = irfft(transformed) 
write('smaller.wav', rate, output) 

Спасибо!

+0

Вы не позаботились о масштабирующем коэффициенте в БПФ - вам нужно разделить на нет образцов. –

ответ

0

scipy.fftpack.irfft возвращает массив поплавков. Преобразуйте его в dtype вашего входного файла, прежде чем записывать его как wav-файл: output.astype(input.dtype).

+0

Это сработало отлично. При тестировании я использовал тип, а не dtype, поэтому я даже не заметил, что он возвращал поплавки. Спасибо огромное! –

+0

Счастливые помочь. (Вы можете принять ответ, кстати,;)) –

 Смежные вопросы

  • Нет связанных вопросов^_^