Exemple #1
0
    def filtDesign(self):
        '''
        Design a low pass filter and a high pass filter
        '''

        order, self.lowpass = filter_design(
            self.__fs, locutoff=0, hicutoff=50, revfilt=0)
        order, self.highpass = filter_design(
            self.__fs, locutoff=5, hicutoff=0, revfilt=1)
Exemple #2
0
 def recibir_filter(filename): #funcion que recibe un archivo de audio(.wav) y devuelve la senal filtrada linealmente
     
     y, sr = librosa.load(filename) #signal and sampling rate
     fs = sr;
     order, lowpass = filter_design(fs, locutoff = 0, hicutoff = 1000, revfilt = 0); #filtro pasabajas
     order, highpass = filter_design(fs, locutoff = 100, hicutoff = 0, revfilt = 1); #filtro pasa-altas
     y_hp = signal.filtfilt(highpass, 1, y); #aplicacion de filtro
     y_bp = signal.filtfilt(lowpass, 1, y_hp); #aplicacion de filtro 
     data = np.asfortranarray(y_bp)
     return(data,sr)
def recibirsenal(filename):
    import scipy.signal as signal
    y, sr = librosa.load(filename)  #signal and sampling rate
    fs = sr
    order, lowpass = filter_design(fs, locutoff=0, hicutoff=1000, revfilt=0)
    order, highpass = filter_design(fs, locutoff=100, hicutoff=0, revfilt=1)
    y_hp = signal.filtfilt(highpass, 1, y)
    y_bp = signal.filtfilt(lowpass, 1, y_hp)
    y_bp = np.asfortranarray(y_bp)
    return (y_bp, sr)
def filtrar_senal(senal_f, fs):
    "Esta funcion recibe la señal sin filtar y la frecuencia de muestreo y retorna la señal filtrada"
    order, lowpass = filter_design(fs, locutoff=0, hicutoff=1000, revfilt=0)
    # implementación del filtro pasa bajas con filter_design
    order, highpass = filter_design(fs, locutoff=100, hicutoff=0, revfilt=1)
    # implementación del filtro pasa altas con filter_design
    senal_hp = signal.filtfilt(highpass, 1, senal_f)
    # implementacion del diseño del filtro
    senal_lp = signal.filtfilt(lowpass, 1, senal_hp)
    return senal_lp
Exemple #5
0
def filtradofir(senal, Fmuestreo):
    order, lowpass = filter_design(Fmuestreo,
                                   locutoff=0,
                                   hicutoff=1000,
                                   revfilt=0)
    order, highpass = filter_design(Fmuestreo,
                                    locutoff=100,
                                    hicutoff=0,
                                    revfilt=1)
    #Se definen las frecuencias bajas y altas para el diseño de el filtro pasabanda
    y_hp = signal.filtfilt(highpass, 1, senal)
    y_bp = signal.filtfilt(lowpass, 1, y_hp)
    #función filt filt
    y_bp = np.asfortranarray(y_bp)
    return y_bp, Fmuestreo
def cargar_filtrar(filename):

    file, sr = librosa.load(filename)

    order, lowpass = filter_design(sr, locutoff=0, hicutoff=2000, revfilt=0)
    #frecuencia de muestreo sr
    order, highpass = filter_design(sr, locutoff=100, hicutoff=0, revfilt=1)

    file_paltas = signal.filtfilt(highpass, 1, file)

    file_pbajas = signal.filtfilt(lowpass, 1, file_paltas)

    file_filt = np.asfortranarray(file_pbajas)

    return file_filt, sr
def Carga_Filt(y, sr):
    """
    Funcion que permite filtrar la señal de audio y tomar las frecuencias de interes
    Ingresa una señal de audio y su frecuencia de muestreo.
    """
    fs = sr
    # Frecuencia de muestreo
    # Diseño de filtros pasa bajas y altas para tomar la frecuencia de interes
    order, lowpass = filter_design(fs, locutoff=0, hicutoff=1000, revfilt=0)
    order, highpass = filter_design(fs, locutoff=100, hicutoff=0, revfilt=1)

    # Se aplica la funcion de filtrado filtfilt a los 2 diseños de filtro para
    #evitar desfases en la señal
    y_hp = signal.filtfilt(highpass, 1, y)
    y_bp = signal.filtfilt(lowpass, 1, y_hp)

    y_bp = np.asfortranarray(y_bp)
    # Convierte la salida del filtro en una matriz en orden Fortran
    return (y_bp)  # salida de la funcion
Exemple #8
0
def textos_y_audios(ruta_audio_y_textos): #funcion que me retorna listas con las señales cargada, filtradas, sr, archivo txt, etc.
    lista_archivos=os.listdir(ruta_audio_y_textos)# carga los archivos en la consola para mirarlos y los almacena en una lista.
    lista = []
    y_vacia = []
    sr_vacia = []
    y_filtrada = []
    x_ft = []
    txt =[]
    for i in np.arange(920,1840,2): #ciclo for para cargar los audios y los txt de la base de datos cargada.
        filename = ruta_audio_y_textos + '/' + lista_archivos[i+1] #carga de audio
        filetxt =  ruta_audio_y_textos + '/' + lista_archivos[i] #carga de texto
        lista.append(filename) #agrega un audio a la lista que almacena todos los audios.
        txt.append(filetxt) #agrega un txt a la lista que almacena todos los audios.
    for j in np.arange(0,len(lista)): #ciclo for para cargar los audios
        y, sr = librosa.load(lista[j]) #obtiene la señal de audio con sus valores y la frecuencia de muestreo.
       
        y_vacia.append(y)#agrega los valores de cada señal de audio a la lista
        sr_vacia.append(sr)

    for m in np.arange(0,len(y_vacia)): #ciclo for que ejecuta la cantidad de veces de audios cargados.
        #diseño de filtros paso bajo y alto de la señal para eliminar frecuencias o ruido indeseado.
        order, lowpass = filter_design(22050, locutoff = 0, hicutoff = 1000, revfilt = 0);
        order, highpass = filter_design(22050, locutoff = 100, hicutoff = 0, revfilt = 1);
        y_hp = signal.filtfilt(highpass, 1, y_vacia[m]);
        y_bp = signal.filtfilt(lowpass, 1, y_hp);
        y_bp1 = np.asfortranarray(y_bp)
        #despues del filtrado de cada señal se agrega a la lista que contiene todas la señales de audio filtradas con las especificaciones de los filtros creados (pasa bajas y altas)
        #y luego se aplica el comanado filt filt para realizar el filtrado de cada señal.
        y_filtrada.append(y_bp1);

    for g in np.arange(0,len(y_filtrada)): #cilco for que se ejecute la cantidad de audios de la base de datos, 
        #definicion de funciones que se necesitan para realizar el filtrado wavelet 
        def wthresh(coeff,thr):
            y   = list();
            s = wnoisest(coeff);
            for i in range(0,len(coeff)):
                y.append(np.multiply(coeff[i],np.abs(coeff[i])>(thr*s[i])));
            return y;
    
        def thselect(y_bp1):
            Num_samples = 0;
            for i in range(0,len(y_bp1)):
                Num_samples = Num_samples + y_bp1[i].shape[0];
    
            thr = np.sqrt(2*(np.log(Num_samples)))
            return thr

        def wnoisest(coeff):
            stdc = np.zeros((len(coeff),1));
            for i in range(1,len(coeff)):
                stdc[i] = (np.median(np.absolute(coeff[i])))/0.6745;
            return stdc;
        
        plt.figure(g)
        LL = int(np.floor(np.log2(y_filtrada[g].shape[0])));
    
        coeff = pywt.wavedec( y_filtrada[g], 'db6', level=LL );

        thr = thselect(coeff);
        coeff_t = wthresh(coeff,thr);
        
        x_rec = pywt.waverec( coeff_t, 'db6');
        
        x_rec = x_rec[0:y_filtrada[g].shape[0]];
       #plt.plot(y_vacia[i][0:5000],label='Original')
       #plt.plot(x_rec[0:5000],label='Umbralizada por Wavelet y aplicada filtros ')
        
        x_filt = np.squeeze(y_filtrada[g] - x_rec); #resta de la señal con filtros pasabajo y pasa altos menos esa misma señal pero aplicado wavelet para obtner las señales respiratorias
        x_ft.append(x_filt)
        #plt.plot(x_filt[0:5000],label='Original - Umbralizada')
        #plt.legend(loc="upper right")
    return y_vacia,x_ft,sr_vacia,lista,txt      
def filtrar_senal(senal_f, fs):
    order, lowpass = filter_design(fs, locutoff=0, hicutoff=1000, revfilt=0)
    order, highpass = filter_design(fs, locutoff=100, hicutoff=0, revfilt=1)
    senal_hp = signal.filtfilt(highpass, 1, senal)
    senal_lp = signal.filtfilt(lowpass, 1, senal_hp)
    return senal_lp