Вычисление когерентности из пар WAV-файлов - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть набор оригинальных аудиофайлов и набор аудиофайлов, которые были отфильтрованы с использованием фильтра Сципи Баттерворта в определенных диапазонах c. Я использую приведенный ниже код для загрузки двух наборов аудиофайлов и вычисления показателя когерентности между каждой парой аудиофайлов.

Массив частот, который выводит функция когерентности Сципи, имеет размерность (2, ) и содержит 0, 0.5 - явно недостаточно для построения графика. Выведенные значения когерентности имеют форму (5703976, 2). Я не думаю, что это проблема разных аудиоформатов или несоответствия оригинального и отфильтрованного файла. Не уверен, почему это происходит. Любой вклад будет высоко ценится!

import matplotlib.pyplot as plt
from os import walk
import sys
from scipy.io import wavfile
from scipy import signal

filenames= []
dirpath = []
filtered = []
original = []
f = []

for (dirpath, dirnames, filenames) in walk("C:\\Users\\tkim1\\Desktop\\New folder (2)\\WAV sounds"):
     f.extend(filenames)

for x in filenames:
     if ("LP" in x) or ("HP" in x):
   filtered.append(x)
else:
   original.append(x)

filtered.sort()
original.sort()


for names, names2  in zip(filtered, original):
print(names)
print(names2)
fs, data = wavfile.read("C:\\Users\\tkim1\\Desktop\\New folder (2)\\WAV sounds\\" + names)
data =data[24:] / 2**15

fs2, data2 = wavfile.read("C:\\Users\\tkim1\\Desktop\\New folder (2)\\WAV sounds\\" + names2)
data2 =data2[24:] / 2**15

f, Cxy = signal.coherence(data, data2) 

plt.semilogy(f, Cxy)            
plt.xlabel('frequency [Hz]')
plt.ylabel('Coherence')
plt.show()
...