public async Task <HttpResponseMessage> GetSongGenre(Guid id) { BlobPathModel blobModel = new BlobPathModel { blob_path = String.Format("{0}/music.mp3", id) }; var json = new JavaScriptSerializer().Serialize(blobModel); var response = GetMLParameterFromBlobPath(json); if (!string.IsNullOrEmpty(response)) { AzureSongModel model = MapResponseToAzureSongModel(response, id); var songGenre = await GetSongGenreFromAzureML(model); if (!string.IsNullOrEmpty(songGenre)) { return(Request.CreateResponse(HttpStatusCode.OK, songGenre)); } else { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } }
private async Task <string> GetSongGenreFromAzureML(AzureSongModel model) { var scoreRequest = new { Inputs = new Dictionary <string, StringTable>() { { "input1", new StringTable() { ColumnNames = new string[] { "song_name", "song_length", "tempo", "total_beats", "average_beats", "zcr_mean", "zcr_var", "zcr_std", "cent_mean", "cent_var", "cent_std", "rolloff_mean", "rolloff_var", "rolloff_std", "chroma_mean", "chroma_var", "chroma_std", "chroma_cqt_mean", "chroma_cqt_var", "chroma_cqt_std", "chroma_cens_mean", "chroma_cens_var", "chroma_cens_std", "mfccs_mean", "mfccs_var", "mfccs_std", "mfcc_delta_mean", "mfcc_delta_var", "mfcc_delta_std", "mel_mean", "mel_var", "mel_std", "tonnetz_mean", "tonnetz_var", "tonnetz_std", "spec_bw_mean", "spec_bw_var", "spec_bw_std", "spec_con_mean", "spec_con_var", "spec_con_std", "harmonic_mean", "harmonic_var", "harmonic_std", "percussive_mean", "percussive_var", "percussive_std", "genre" }, Values = new string[, ] { { model.Song_name, model.Song_length.ToString(), model.Tempo.ToString(), model.Total_beats.ToString(), model.Average_beats.ToString(), model.Zcr_mean.ToString(), model.Zcr_var.ToString(), model.Zcr_std.ToString(), model.Cent_mean.ToString(), model.Cent_var.ToString(), model.Cent_std.ToString(), model.Rolloff_mean.ToString(), model.Rolloff_var.ToString(), model.Rolloff_std.ToString(), model.Chroma_mean.ToString(), model.Chroma_var.ToString(), model.Chroma_std.ToString(), model.Chroma_cqt_mean.ToString(), model.Chroma_cqt_var.ToString(), model.Chroma_cqt_std.ToString(), model.Chroma_cens_mean.ToString(), model.Chroma_cens_var.ToString(), model.Chroma_cens_std.ToString(), model.Mfccs_mean.ToString(), model.Mfccs_var.ToString(), model.Mfccs_std.ToString(), model.Mfcc_delta_mean.ToString(), model.Mfcc_delta_var.ToString(), model.Mfcc_delta_std.ToString(), model.Mel_mean.ToString(), model.Mel_var.ToString(), model.Mel_std.ToString(), model.Tonnetz_mean.ToString(), model.Tonnetz_var.ToString(), model.Tonnetz_std.ToString(), model.Spec_bw_mean.ToString(), model.Spec_bw_var.ToString(), model.Spec_bw_std.ToString(), model.Spec_con_mean.ToString(), model.Spec_con_var.ToString(), model.Spec_con_std.ToString(), model.Harmonic_mean.ToString(), model.Harmonic_var.ToString(), model.Harmonic_std.ToString(), model.Percussive_mean.ToString(), model.Percussive_var.ToString(), model.Percussive_std.ToString(), "" }, { model.Song_name, model.Song_length.ToString(), model.Tempo.ToString(), model.Total_beats.ToString(), model.Average_beats.ToString(), model.Zcr_mean.ToString(), model.Zcr_var.ToString(), model.Zcr_std.ToString(), model.Cent_mean.ToString(), model.Cent_var.ToString(), model.Cent_std.ToString(), model.Rolloff_mean.ToString(), model.Rolloff_var.ToString(), model.Rolloff_std.ToString(), model.Chroma_mean.ToString(), model.Chroma_var.ToString(), model.Chroma_std.ToString(), model.Chroma_cqt_mean.ToString(), model.Chroma_cqt_var.ToString(), model.Chroma_cqt_std.ToString(), model.Chroma_cens_mean.ToString(), model.Chroma_cens_var.ToString(), model.Chroma_cens_std.ToString(), model.Mfccs_mean.ToString(), model.Mfccs_var.ToString(), model.Mfccs_std.ToString(), model.Mfcc_delta_mean.ToString(), model.Mfcc_delta_var.ToString(), model.Mfcc_delta_std.ToString(), model.Mel_mean.ToString(), model.Mel_var.ToString(), model.Mel_std.ToString(), model.Tonnetz_mean.ToString(), model.Tonnetz_var.ToString(), model.Tonnetz_std.ToString(), model.Spec_bw_mean.ToString(), model.Spec_bw_var.ToString(), model.Spec_bw_std.ToString(), model.Spec_con_mean.ToString(), model.Spec_con_var.ToString(), model.Spec_con_std.ToString(), model.Harmonic_mean.ToString(), model.Harmonic_var.ToString(), model.Harmonic_std.ToString(), model.Percussive_mean.ToString(), model.Percussive_var.ToString(), model.Percussive_std.ToString(), "" }, } } }, }, GlobalParameters = new Dictionary <string, string>() { } }; SetClient(); HttpResponseMessage response = await client.PostAsJsonAsync("", scoreRequest); if (response.IsSuccessStatusCode) { string result = await response.Content.ReadAsStringAsync(); JObject jObject = JObject.Parse(result); JToken jUser = jObject["Results"]["output1"]["value"]["Values"][0].Last; return(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(jUser.ToString())); } else { return(String.Empty); } }
private AzureSongModel MapResponseToAzureSongModel(string message, Guid id) { AzureSongModel songModel = new AzureSongModel(); string[] stringValues = message.Split(','); decimal[] decimalValues = new decimal[46]; if (stringValues.Length == 46) { int i = 0; foreach (var value in stringValues) { decimalValues[i] = decimal.Parse(value, NumberStyles.Float, CultureInfo.InvariantCulture); i++; } songModel.Song_name = id.ToString(); songModel.Song_length = decimalValues[0]; songModel.Tempo = decimalValues[1]; songModel.Total_beats = decimalValues[2]; songModel.Average_beats = decimalValues[3]; songModel.Zcr_mean = decimalValues[4]; songModel.Zcr_var = decimalValues[5]; songModel.Zcr_std = decimalValues[6]; songModel.Cent_mean = decimalValues[7]; songModel.Cent_var = decimalValues[8]; songModel.Cent_std = decimalValues[9]; songModel.Rolloff_mean = decimalValues[10]; songModel.Rolloff_var = decimalValues[11]; songModel.Rolloff_std = decimalValues[12]; songModel.Chroma_mean = decimalValues[13]; songModel.Chroma_var = decimalValues[14]; songModel.Chroma_std = decimalValues[15]; songModel.Chroma_cqt_mean = decimalValues[16]; songModel.Chroma_cqt_var = decimalValues[17]; songModel.Chroma_cqt_std = decimalValues[18]; songModel.Chroma_cens_mean = decimalValues[19]; songModel.Chroma_cens_var = decimalValues[20]; songModel.Chroma_cens_std = decimalValues[21]; songModel.Mfccs_mean = decimalValues[22]; songModel.Mfccs_var = decimalValues[23]; songModel.Mfccs_std = decimalValues[24]; songModel.Mfcc_delta_mean = decimalValues[25]; songModel.Mfcc_delta_var = decimalValues[26]; songModel.Mfcc_delta_std = decimalValues[27]; songModel.Mel_mean = decimalValues[28]; songModel.Mel_var = decimalValues[29]; songModel.Mel_std = decimalValues[30]; songModel.Tonnetz_mean = decimalValues[31]; songModel.Tonnetz_var = decimalValues[32]; songModel.Tonnetz_std = decimalValues[33]; songModel.Spec_bw_mean = decimalValues[34]; songModel.Spec_bw_var = decimalValues[35]; songModel.Spec_bw_std = decimalValues[36]; songModel.Spec_con_mean = decimalValues[37]; songModel.Spec_con_var = decimalValues[38]; songModel.Spec_con_std = decimalValues[39]; songModel.Harmonic_mean = decimalValues[40]; songModel.Harmonic_var = decimalValues[41]; songModel.Harmonic_std = decimalValues[42]; songModel.Percussive_mean = decimalValues[43]; songModel.Percussive_var = decimalValues[44]; songModel.Percussive_std = decimalValues[45]; } return(songModel); }