static void Main(string[] args) { String path = @"C:\Users\PauloRenato\Documents\base_balanceada_14-02-2019"; double[][] data = AudioFeatures.getDataFromBase(path, ""); //double[][] data; //AudioFeatures.LoadData(@"C:\Projeto\autoleitura\paulorenato\AudioCSharp\Caracteristicas\4125_mfcc.txt", out data, 4125, 101); ; //AudioFeatures.scaleData(data); //double[][] trainData, testData; //AudioFeatures.MakeTrainTestByRef(data, 42,out trainData,out testData); //Train(trainData, @"C:\Projeto\autoleitura\paulorenato\AudioCSharp\Modelo\audioSVMTrain.xml"); //Test(testData, @"C:\Projeto\autoleitura\paulorenato\AudioCSharp\Modelo\audioSVMTrain.xml"); //Console.WriteLine(RecognizeAudio(@"C:\Users\PauloRenato\Documents\base_balanceada_14-02-2019\5\5_F_14-01-2019_21_22_23.wav", @"C:\Projeto\autoleitura\paulorenato\AudioCSharp\Modelo\audioSVMTrain.xml")); //Console.ReadKey(); }
static double[] FeaturesFromMFCC(double[,] mfcc_mass) { int count_frames = mfcc_mass.Length / 20; int features_size = 100; double[] features = new double[features_size]; int feature_index = 0; for (int i = 0; i < 20; i++) { double media = 0.0; double max = Double.MinValue; double min = Double.MaxValue; double[] values = new double[count_frames]; for (int k = 0; k < count_frames; k++) { if (mfcc_mass[k, i] < min) { min = mfcc_mass[k, i]; } if (mfcc_mass[k, i] > max) { max = mfcc_mass[k, i]; } media += mfcc_mass[k, i]; values[k] = mfcc_mass[k, i]; } media = media / count_frames; double variance = AudioFeatures.Variance(values, media); double mediana = AudioFeatures.GetMedian(values); features[feature_index++] = (float)mediana; features[feature_index++] = (float)media; features[feature_index++] = (float)variance; features[feature_index++] = (float)min; features[feature_index++] = (float)max; } return(features); }
static float RecognizeAudio(string path, string svmModel) { SVMAudio mySVM = new SVMAudio(); mySVM.LoadSVMFromFile(svmModel); double[] y = AudioFeatures.load2(path); double[,] mfcc_mass = MFCC_calculating.MFCC_20_calculation(y); double[] features_vector = FeaturesFromMFCC(mfcc_mass); int features_size = 100; Image <Gray, float> features = new Image <Gray, float>(features_size, 1); Image <Gray, float> results = new Image <Gray, float>(1, 1); AudioFeatures.NormalizeFromFile(@"C:\Projeto\autoleitura\paulorenato\AudioCSharp\Modelo\scaleSVMTrain.txt", features_vector); for (int i = 0; i < features_size; i++) { features.Data[0, i, 0] = (float)features_vector[i]; } mySVM.Predict(features, results); return(results.Data[0, 0, 0]); }