def show_open_dialog(self):
        self.audioFile = QtGui.QFileDialog.getOpenFileName(
            self, 'Open audio file', '', "Audio Files (*.wav)", None,
            QtGui.QFileDialog.DontUseNativeDialog)
        if self.audioFile != "":
            self.featuresTbl.setRowCount(0)
            self.featuresTbl.setColumnCount(0)
            self.audioClassInput.setText("")

            fileName = str(self.audioFile)
            self.audio_signal, self.audio_fs = FileReader.read_audio(fileName)
            self.silenced_signal, self.audio_fs = self.mfcc.remove_silence(
                fileName)

            self.fsValLbl.setText(": " + str(self.audio_fs) + " Hz")
            self.sampleValLbl.setText(": " + str(len(self.audio_signal)) +
                                      " | " + str(len(self.silenced_signal)) +
                                      " (silenced)")
            self.audioFilenameLbl.setText(": " + fileName[fileName.rfind('/') +
                                                          1:len(fileName)])
            self.audioClassInput.setText(FileReader.get_output_class(fileName))

            self.audioPlayBtn.setDisabled(False)

            self.extractSaveBtn.setDisabled(False)
            self.player.set_audio_source(self.audioFile)
 def include_word(self):
     if self.inclWordCheck.isChecked():
         for i in xrange(self.featuresTbl.rowCount()):
             text = str(self.featuresTbl.item(i, 0).text())
             self.featuresTbl.setItem(i, 1, QtGui.QTableWidgetItem(str(FileReader.get_output_class(str(text)))))
     else:
         for i in xrange(self.featuresTbl.rowCount()):
             text = str(self.featuresTbl.item(i, 1).text())
             self.featuresTbl.setItem(i, 1, QtGui.QTableWidgetItem(str(text[:text.rfind("-")])))
 def shuffle_files(self):
     self.audio_files = sample(self.audio_files, len(self.audio_files))
     for i in xrange(self.featuresTbl.rowCount()):
         self.featuresTbl.setItem(
             i, 0, QtGui.QTableWidgetItem(str(self.audio_files[i])))
         self.featuresTbl.setItem(
             i, 1,
             QtGui.QTableWidgetItem(
                 str(FileReader.get_output_class(str(
                     self.audio_files[i])))))
    def run(self):
        self.emit(QtCore.SIGNAL("update()"))
        self.mfcc.frame_size = int(self.par.frameSizeVal.currentText())
        self.mfcc.overlap = self.mfcc.frame_size / 2
        for index, file_audio in enumerate(self.audio_files):
            file_audio = str(file_audio)
            self.audio_signal, self.audio_fs = FileReader.read_audio(
                file_audio)
            self.silenced_signal, self.audio_fs = self.mfcc.remove_silence(
                file_audio)
            self.num_frames, self.framed_signal = self.mfcc.frame_blocking(
                self.silenced_signal)
            self.windowed_signal = self.mfcc.hamm_window(self.framed_signal)
            self.fft_signal = self.mfcc.calc_fft(self.windowed_signal)
            self.log_energy, self.fbank = self.mfcc.fbank(
                self.fft_signal, self.audio_fs)
            self.features = self.mfcc.features(self.log_energy)
            # var = [st.variance(self.features[:,i]) for i in xrange(self.mfcc.num_filter)]
            # [self.all_features.append(self.features[i,:]) for i in xrange(self.features.shape[0])]
            # self.variances.append(var)
            features = []

            if TYPE == 1:
                file_id = self.db.insert("files", {"file_path": file_audio})
                for i in xrange(self.features.shape[0]):
                    # [31, 28, 29, 30, 27, 26, 25, 24, 23, 22, 20, 21, 19
                    # features.append([file_id, i, self.features[i, 1:14], str(self.par.featuresTbl.item(index,1).text())])
                    features.append([
                        file_id, i, self.features[
                            i, [1, 2, 3, 4, 5, 7, 6, 9, 8, 10, 11, 12, 13]],
                        str(self.par.featuresTbl.item(index, 1).text())
                    ])

                self.db.insert_features(features)

            else:
                output_class_id = self.db.insert(
                    "output_classes", {
                        "file_path": file_audio,
                        "class": str(FileReader.get_output_class(file_audio))
                    })
                for i in xrange(self.features.shape[0]):
                    features.append(
                        [output_class_id, i, self.features[i, 1:14]])
                self.db.insert_features(features)

            self.emit(QtCore.SIGNAL("update()"))

        # self.variances = np.asarray(self.variances)
        # rata2 = [st.mean(self.variances[:,i]) for i in xrange(self.mfcc.num_filter)]
        # self.write_excel(rata2)
        # print str(np.sort(rata2))
        # print str(np.argsort(rata2))
        self.emit(QtCore.SIGNAL("finish()"))
 def include_word(self):
     if self.inclWordCheck.isChecked():
         for i in xrange(self.featuresTbl.rowCount()):
             text = str(self.featuresTbl.item(i, 0).text())
             self.featuresTbl.setItem(
                 i, 1,
                 QtGui.QTableWidgetItem(
                     str(FileReader.get_output_class(str(text)))))
     else:
         for i in xrange(self.featuresTbl.rowCount()):
             text = str(self.featuresTbl.item(i, 1).text())
             self.featuresTbl.setItem(
                 i, 1, QtGui.QTableWidgetItem(str(text[:text.rfind("-")])))
    def show_open_dialog(self):
        audioFiles = QtGui.QFileDialog.getOpenFileNames(self, 'Open audio file',
                                                        '',
                                                        "Audio Files (*.wav)",
                                                        None, QtGui.QFileDialog.DontUseNativeDialog)
        self.featuresTbl.setColumnWidth(0, 300)

        for file in audioFiles:
            self.audio_files.append(file)
            currentRow = self.featuresTbl.rowCount()
            self.featuresTbl.insertRow(currentRow)
            self.featuresTbl.setItem(currentRow, 0, QtGui.QTableWidgetItem(str(file)))
            self.featuresTbl.setItem(currentRow, 1, QtGui.QTableWidgetItem(str(FileReader.get_output_class(str(file)))))

        self.audioFilenameLbl.setText(": " + str(len(self.audio_files)))
    def run(self):
        self.emit(QtCore.SIGNAL("update()"))
        self.mfcc.frame_size = int(self.par.frameSizeVal.currentText())
        self.mfcc.overlap = self.mfcc.frame_size / 2
        for index, file_audio in enumerate(self.audio_files):
            file_audio = str(file_audio)
            self.audio_signal, self.audio_fs = FileReader.read_audio(file_audio)
            self.silenced_signal, self.audio_fs = self.mfcc.remove_silence(file_audio)
            self.num_frames, self.framed_signal = self.mfcc.frame_blocking(self.silenced_signal)
            self.windowed_signal = self.mfcc.hamm_window(self.framed_signal)
            self.fft_signal = self.mfcc.calc_fft(self.windowed_signal)
            self.log_energy, self.fbank = self.mfcc.fbank(self.fft_signal, self.audio_fs)
            self.features = self.mfcc.features(self.log_energy)
            # var = [st.variance(self.features[:,i]) for i in xrange(self.mfcc.num_filter)]
            # [self.all_features.append(self.features[i,:]) for i in xrange(self.features.shape[0])]
            # self.variances.append(var)
            features = []


            if TYPE == 1:
                file_id = self.db.insert("files", {"file_path": file_audio})
                for i in xrange(self.features.shape[0]):
                    # [31, 28, 29, 30, 27, 26, 25, 24, 23, 22, 20, 21, 19
                    # features.append([file_id, i, self.features[i, 1:14], str(self.par.featuresTbl.item(index,1).text())])
                    features.append([file_id, i, self.features[i, [1, 2, 3, 4, 5, 7, 6, 9, 8, 10, 11, 12, 13]],
                                     str(self.par.featuresTbl.item(index, 1).text())])

                self.db.insert_features(features)

            else:
                output_class_id = self.db.insert("output_classes",
                                                 {"file_path": file_audio,
                                                  "class": str(FileReader.get_output_class(file_audio))})
                for i in xrange(self.features.shape[0]):
                    features.append([output_class_id, i, self.features[i, 1:14]])
                self.db.insert_features(features)

            self.emit(QtCore.SIGNAL("update()"))

        # self.variances = np.asarray(self.variances)
        # rata2 = [st.mean(self.variances[:,i]) for i in xrange(self.mfcc.num_filter)]
        # self.write_excel(rata2)
        # print str(np.sort(rata2))
        # print str(np.argsort(rata2))
        self.emit(QtCore.SIGNAL("finish()"))
    def show_open_dialog(self):
        audioFiles = QtGui.QFileDialog.getOpenFileNames(
            self, 'Open audio file', '', "Audio Files (*.wav)", None,
            QtGui.QFileDialog.DontUseNativeDialog)
        self.featuresTbl.setColumnWidth(0, 300)

        for file in audioFiles:
            self.audio_files.append(file)
            currentRow = self.featuresTbl.rowCount()
            self.featuresTbl.insertRow(currentRow)
            self.featuresTbl.setItem(currentRow, 0,
                                     QtGui.QTableWidgetItem(str(file)))
            self.featuresTbl.setItem(
                currentRow, 1,
                QtGui.QTableWidgetItem(
                    str(FileReader.get_output_class(str(file)))))

        self.audioFilenameLbl.setText(": " + str(len(self.audio_files)))
    def show_open_dialog(self):
        audioFiles = QtGui.QFileDialog.getOpenFileNames(self, 'Open audio file',
                                                        '',
                                                        "Audio Files (*.wav)",
                                                        None, QtGui.QFileDialog.DontUseNativeDialog)

        for file in audioFiles:
            self.indic = 4 if str(file).rfind('4 Detik') != -1 else 8
            speaker = str(FileReader.get_output_class(str(file)))
            word = speaker[speaker.rfind('-')+1:] if speaker.rfind('-') != -1 else ""
            self.audio_files.append(file)
            currentRow = self.featuresTbl.rowCount()
            self.featuresTbl.insertRow(currentRow)
            self.featuresTbl.setItem(currentRow, 0, QtGui.QTableWidgetItem(str(speaker[:speaker.rfind('-')])))
            self.featuresTbl.setItem(currentRow, 1, QtGui.QTableWidgetItem(str(word)))

        self.audioFilenameLbl.setText(": " + str(len(self.audio_files)))
        self.startTestBtn.setDisabled(False)
        self.frameSizeVal.setDisabled(False)
    def show_open_dialog(self):
        audioFiles = QtGui.QFileDialog.getOpenFileNames(
            self, 'Open audio file', '', "Audio Files (*.wav)", None,
            QtGui.QFileDialog.DontUseNativeDialog)

        for file in audioFiles:
            self.indic = 4 if str(file).rfind('4 Detik') != -1 else 8
            speaker = str(FileReader.get_output_class(str(file)))
            word = speaker[speaker.rfind('-') +
                           1:] if speaker.rfind('-') != -1 else ""
            self.audio_files.append(file)
            currentRow = self.featuresTbl.rowCount()
            self.featuresTbl.insertRow(currentRow)
            self.featuresTbl.setItem(
                currentRow, 0,
                QtGui.QTableWidgetItem(str(speaker[:speaker.rfind('-')])))
            self.featuresTbl.setItem(currentRow, 1,
                                     QtGui.QTableWidgetItem(str(word)))

        self.audioFilenameLbl.setText(": " + str(len(self.audio_files)))
        self.startTestBtn.setDisabled(False)
        self.frameSizeVal.setDisabled(False)
 def shuffle_files(self):
     self.audio_files = sample(self.audio_files, len(self.audio_files))
     for i in xrange(self.featuresTbl.rowCount()):
         self.featuresTbl.setItem(i, 0, QtGui.QTableWidgetItem(str(self.audio_files[i])))
         self.featuresTbl.setItem(i, 1, QtGui.QTableWidgetItem(str(FileReader.get_output_class(str(self.audio_files[i])))))