def plot_before_after_transformation(dataset, entonema, wav):
    if not wav.endswith('.wav'):
        return

    path = '{}/{}/{}'.format(dataset, entonema, wav)

    ybefore = get_pitch_decompy_values(path,
                                       remove_silencess=False,
                                       interpolate=False)
    ynew = get_pitch_decompy_values(path,
                                    remove_silencess=True,
                                    interpolate=True)

    fig, axarr = plt.subplots(2)
    axarr[0].grid()
    axarr[0].plot(ybefore)
    axarr[0].set_ylabel('No trans')
    axarr[0].set_xlabel('len = {}       entropy = {}'.format(
        len(ybefore), entropy(ybefore)))
    ax = plt.axis

    axarr[1].grid()
    axarr[1].plot(ynew)
    axarr[1].set_ylabel('With trans')
    axarr[1].set_xlabel('len = {}       entropy = {}'.format(
        len(ynew), entropy(ynew)))
    fig.subplots_adjust(hspace=0.5)
    plt.axis = ax

    dir = './temp/{}'.format(entonema)
    if not os.path.exists(dir):
        os.mkdir(dir)
    plt.savefig('{}/{}_{}.png'.format(dir, entonema, wav.replace('.wav', '')))
Пример #2
0
    def on_browse_button_released(self):
        #path = unicode(QFileDialog.getOpenFileName(self))
        path = QFileDialog.getOpenFileName(self)[0]

        name = os.path.basename(path)
        if not name.endswith('.wav'):
            self.track_label.setText(u"{} no es un archivo .wav".format(name))
            return
            

        self.player.setMedia(QtMultimedia.QMediaContent(QUrl.fromLocalFile(path)))
        self.track_label.setText(name)
        self.canvas.plot_spectrogram(path)

        print('path = {}'.format(path))
        curve = get_pitch_decompy_values(path, remove_silencess = True, interpolate = False)
        vector, _ = naive_vectorizer(curve, true_features = self.cols)
        X = [vector]
        X = self.scaler.transform(X)
        predicted = self.clf.predict(X)[0]

        print('predicted = {}'.format(predicted))


        self.entonema_label.setText(
            u"Predicción de entonema: {}".format(predicted)
        )
def plot_spline_interpolation(dataset, entonema, wav):
    print('Hola!')
    if not wav.endswith('.wav'):
        return

    curve_path = '{}/{}/{}'.format(dataset, entonema, wav)
    curve = get_pitch_decompy_values(curve_path,
                                     remove_silencess=True,
                                     interpolate=False)

    ynew = spline_interpolation(curve)
    x = np.arange(0, len(curve))

    plt.figure()
    plt.scatter(x,
                curve,
                s=np.pi,
                label='Original_pitch  entropy = {}'.format(entropy(curve)))
    plt.plot(x,
             ynew,
             label='Spline_interpolation   entropy = {}'.format(entropy(ynew)),
             alpha=0.4)
    plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
    plt.legend(loc='upper center',
               fancybox=True,
               shadow=True,
               bbox_to_anchor=(0.5, 1.13))
    plt.grid()

    #plt.title('Cubic-spline interpolation\n\n    entonema = {}    wav = {}'.format(entonema, wav))
    #plt.show()
    dir = './temp/{}'.format(entonema)
    if not os.path.exists(dir):
        os.mkdir(dir)
    plt.savefig('{}/{}_{}.png'.format(dir, entonema, wav.replace('.wav', '')))
def make_excels(folder,
                entonema,
                vectoricer,
                excels_path,
                max_audio_by_folder=1000,
                processer=True,
                remove_silencess=True,
                interpolate=True):
    #input('processer = {}    silencess = {}'.format(processer, remove_silencess))
    processer = simply_add_vector_processer if processer else by_level_cD_processer
    #folder = os.path.join(dataset, entonema, wav)
    if os.path.isdir(folder):
        data, archivos, start = [], 0, time.time()
        dataframe = pd.DataFrame([])

        for augmentation in os.listdir(folder)[:max_audio_by_folder]:
            if augmentation.endswith('.wav'):
                curve = get_pitch_decompy_values(
                    '{}/{}'.format(folder, augmentation),
                    remove_silencess=remove_silencess,
                    interpolate=interpolate)
                dataframe = processer(dataframe, vectoricer, curve,
                                      augmentation)
                archivos += 1
                #print('    augmentation = {}  vector_len = {}'.format(augmentation, len(vector)))
                #print(':)')
                '''
                except:
                    print('deprecated = {}     folder = {}'.format(augmentation, os.path.basename(folder)))
                    #print('    augmentation deprecated   dataset = {} entonema {} wav = {} augmentattion = {}'.format(dataset, entonema, wav, augmentation))
                '''
        dataframe['entonema'] = str(entonema)
        dataframe = dataframe.fillna(value=0)
        write_excel(dataframe, '{}/{}_{}.xlsx'.format(excels_path, entonema,
                                                      ''))
 def info(self, dataset, entonema, wav, curve = []):
     wav_path = '{}/{}/{}'.format(dataset,entonema,wav)
     if len(curve) == 0:
         curve = get_pitch_decompy_values(wav_path, \
         remove_silencess = self.silences, interpolate = self.interpolate)
     pendt = pendiente_pitch(curve)
     spectrumm = spectrum(curve)
     if(len(spectrumm) > self.max): self.max = len(spectrumm)
     return [pendt] + spectrumm.tolist()
 def sol(dataset, entonema, wav, *args):
     if wav.endswith('.wav'):
         curve_path = '{}/{}/{}'.format(dataset, entonema, wav)
         curve = get_pitch_decompy_values(curve_path,
                                          remove_silencess=args[0],
                                          interpolate=args[1])
         if len(curve) > 0:
             return function(curve, entonema, wav, *args[2:])
     else:
         print('Error {} needs a .wav'.format(str(function)))
    def info(self, dataset, entonema, wav, curve = []):
        wav_path = '{}/{}/{}'.format(dataset,entonema,wav)
        if len(curve) == 0:
            curve = get_pitch_decompy_values(wav_path, \
            remove_silencess = self.silences, interpolate = self.interpolate)
        entr_pitch = [round(entropy(curve), ndigits=2)]
        cA_entr = []
        cD_entr = []
        conv = []

        descp = get_cD(curve, 'db5', level = 4)
        for (cA, cD) in descp:
            cA_entr.append(round(entropy(cA), ndigits=2))
            cD_entr.append(round(entropy(cD), ndigits=2))
            rec = pywt.waverec((cA,cD), 'db5')
            cv = convolve(curve,rec, mode='valid')[0]
            conv.append(round(cv,ndigits=2))

        return entr_pitch + cA_entr + cD_entr + conv