Я новичок в python, но у меня есть проект по созданию программы, использующей python. Концепция этой программы состоит в том, чтобы разделить записанные звуки на «класс a» и «класс b». Я попытался использовать эту концепцию, потому что результат записанного звука представляет собой такой большой шум, которого нельзя избежать и который не может быть отфильтрован из-за вариаций шума (непредсказуемый шум).
поэтому сначала у меня есть " образец звука », который используется в качестве справочника. Я меняю «образец звука» на частотную форму во временной области (например, спектограмма), мы можем назвать это «звуковой отсчет». затем я записываю звук, который также преобразуется в частотную форму во временной области (то же, что и в форме «образец звука»). мы можем назвать «тестовым звуком».
Оба они («звуковой образец» и «тестовый звук») находятся в форме многомерных массивов, которые затем я хочу проверить, каждое ли значение в каждом элементы в массиве «образец звука» содержатся в «тестовом звуке».
Теперь, вот проблемы, как проверить, содержится ли значение в некоторых элементах массива «образец звука» в « тестирование звукового "массива?" ... вот код, который я использовал.
import wave
import struct
import sys
import numpy as np
def wav_to_floats(wave_file):
w = wave.open('....wav') #>>opening wav file of "the sample sound"
astr = w.readframes(w.getnframes())
a = struct.unpack("%ih" % (w.getnframes()* w.getnchannels()), astr)
a = [float(val) for val in a]
return a
the_sample_sound = np.array(wav_to_floats(sys.argv[0]))
def wav_to_floats_2 (wav_file):
v = wave.open('....wav') #opening wav file of "the testing sound"
astu = v.readframes(v.getnframes())
b = struct.unpack("%ih" % (v.getnframes()* v.getnchannels()), astu)
b = [float(val) for val in b]
return b
the_testing_sound = np.array(wav_to_floats_2(sys.argv[0]))
time = 30 #duration time of sound (both "the sample sound" and "the testing sound") is 30 second
c = np.array_split(the_sample_sound, time)
for i in range (time) :
d = np.abs(np.fft.fft(c[i]))
e = np.array_split(the_testing_sound, time)
for j in range (time) :
f = np.abs(np.fft.fft(e[i]))
# i tried to use this block code to check value from the sample sound to the testing sound but it could not work
h = 0
for i in (d) :
for j in (e) :
for u in (j) :
if u in (i) :
h += 1
else :
h += 0
print (h) #>> to sum how many times value in sample sound is contained in the testing sound
дополнительная информация, которую я использую python 3x и извините за плохой engli sh ..