Проверка того, содержатся ли значения каждого элемента из массива в другом массиве - python - PullRequest
0 голосов
/ 25 мая 2020

Я новичок в 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 ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...