public void MultipleKeywords() { var modelFilePath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, "porcupine_params.pv")); Assert.IsTrue(File.Exists(modelFilePath), $"File.Exists(modelFilePath) --> {modelFilePath}"); paths.ForEach(keywordFilePath => Assert.IsTrue(File.Exists(keywordFilePath), $"File.Exists(keywordFilePath) --> {keywordFilePath}")); Porcupine p = new Porcupine(modelFilePath, keywordFilePaths: paths, sensitivities: senses); Assert.AreEqual(PicoVoiceStatus.SUCCESS, p.Status, "the status of the creation of the recognition system has failed"); WAVFile file = new WAVFile(); file.Open("multiple_keywords.wav", WAVFile.WAVFileMode.READ); Assert.AreEqual(p.SampleRate(), file.AudioFormat.SampleRateHz, "The samplerate is not equal!!!"); List <short> data = new List <short>(); while (file.NumSamplesRemaining > 0) { data.Add(BitConverter.ToInt16(file.GetNextSample_ByteArray())); } int framecount = (int)Math.Floor((decimal)(data.Count / p.FrameLength())); var results = new List <int>(); for (int i = 0; i < framecount; i++) { int start = i * p.FrameLength(); int count = p.FrameLength(); List <short> frame = data.GetRange(start, count); PicoVoiceStatus status = p.ProcessMultipleKeywords(frame.ToArray(), out int result); if (result >= 0) { results.Add(result); } Assert.AreEqual(PicoVoiceStatus.SUCCESS, status, "The status is not as expected"); } var requiredRes = new[] { 8, 0, 1, 2, 3, 4, 5, 7, 8, 9 }; Assert.AreEqual(requiredRes.Length, results.Count, $"expected results length are different expected {requiredRes.Length} got {results.Count}"); for (var i = 0; i < results.Count; i++) { Assert.AreEqual(requiredRes[i], results[i], $"The result is not as expected, expected {requiredRes[i]} got {results[i]}"); } p.Dispose(); }