Python: Расчет частоты с течением времени из файла WAV в Python? - PullRequest
0 голосов
/ 22 февраля 2019

Я использую библиотеку scipy wavfile для чтения wavfile.

rate, data = scipy.io.wavfile.read(filename)

Это вернет данные о скорости и RAW для указанного имени файла wav.

Какие преобразования в массиве данных делаютМне нужно сделать, чтобы перейти от RAW-данных к частоте?

Я понимаю, что FFT используется для перехода в частотную область, но я бы хотел перейти во временную область.

Любая помощьоценили!:)

1 Ответ

0 голосов
/ 23 февраля 2019

Это даст вам среднюю частоту по данному сигналу:

def spectral_statistics(y: np.ndarray, fs: int) -> float:
    """
    Compute mean frequency

    :param y: 1-d signal
    :param fs: sampling frequency [Hz]
    :return: mean frequency
    """
    spec = np.abs(np.fft.rfft(y))
    freq = np.fft.rfftfreq(len(y), d=1/fs)    
    amp = spec / spec.sum()
    mean = (freq * amp).sum()
    return mean 

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

...