public void WaveFileAudioSourceConstructorTest()
        {
            string fileName = Path.Combine(TestContext.CurrentContext.TestDirectory, "Resources", "a.wav");

            WaveFileAudioSource target = new WaveFileAudioSource(fileName);

            Signal s = null;

            target.NewFrame += delegate(object sender, NewFrameEventArgs e)
            {
                if (s == null)
                {
                    s = e.Signal;
                }

                Assert.AreEqual(s.SampleRate, 44100);
                Assert.AreEqual(s.Channels, 2);
                Assert.AreEqual(s.Length, 8192);
                Assert.AreEqual(s.Channels * s.Length, s.Samples);
            };


            target.Start();

            target.WaitForStop();

            Assert.AreEqual(180224, target.FramesReceived);
            Assert.AreEqual(705600, target.BytesReceived);
        }
Ejemplo n.º 2
0
        public void WaveFileAudioSourceConstructorTest()
        {
            string fileName = @"..\..\..\..\Unit Tests\Accord.Tests.Audio\Resources\Grand Piano - Fazioli - major A middle.wav";

            WaveFileAudioSource target = new WaveFileAudioSource(fileName);

            Signal s = null;

            target.NewFrame += delegate(object sender, NewFrameEventArgs e)
            {
                if (s == null)
                {
                    s = e.Signal;
                }

                Assert.AreEqual(s.SampleRate, 44100);
                Assert.AreEqual(s.Channels, 2);
                Assert.AreEqual(s.Length, 8192);
                Assert.AreEqual(s.Channels * s.Length, s.Samples);
            };


            target.Start();

            target.WaitForStop();

            Assert.AreEqual(180224, target.FramesReceived);
            Assert.AreEqual(705600, target.BytesReceived);
        }
        public void VoiceActivity_DetectFromFile()
        {
            // Initialize components and wire up pipeline.
            using (var pipeline = Pipeline.Create(nameof(this.VoiceActivity_DetectFromFile)))
            {
                var vad        = new SimpleVoiceActivityDetector(pipeline, new SimpleVoiceActivityDetectorConfiguration());
                var audioInput = new WaveFileAudioSource(pipeline, "16kHz1chan.wav", null, 20);
                audioInput.PipeTo(vad);

                // Add results from outputs.
                var results = new List <bool>();
                vad.Out.Do(r => results.Add(r));

                // Run pipeline and wait for completion.
                pipeline.Run(null, false);

                Assert.IsTrue(results.Count > 0, "No results!");
                CollectionAssert.AreEqual(Enumerable.Repeat(false, 29).ToList(), results.GetRange(0, 29), "Initial silence detection failed!");
                CollectionAssert.AreEqual(Enumerable.Repeat(true, 182).ToList(), results.GetRange(29, 182), "Voice activity detection failed!");
                CollectionAssert.AreEqual(Enumerable.Repeat(false, 62).ToList(), results.GetRange(211, 62), "Trailing silence detection failed!");
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Tests speech recognition from any Wave file containing PCM audio in a format that the
        /// speech recognizer component accepts.
        /// </summary>
        /// <param name="filename">The Wave file containing the audio data.</param>
        /// <param name="expectedText">The expected recognized text.</param>
        /// <param name="srgsXmlGrammar">The grammar to use when decoding.</param>
        private void RecognizeSpeechFromWaveFile(string filename, string expectedText, string srgsXmlGrammar = null)
        {
            if (SpeechRecognitionEngine.InstalledRecognizers().Count == 0)
            {
                // Skip test if no installed recognizers on system.
                return;
            }

            // Read the WaveFormat from the file header so we can set the recognizer configuaration.
            WaveFormat format = WaveFileHelper.ReadWaveFileHeader(filename);

            // Initialize components and wire up pipeline.
            using (var pipeline = Pipeline.Create(nameof(this.RecognizeSpeechFromWaveFile)))
            {
                var recognizer = new SystemSpeechRecognizer(pipeline, new SystemSpeechRecognizerConfiguration()
                {
                    BufferLengthInMs = 10000, InputFormat = format
                });
                var audioInput = new WaveFileAudioSource(pipeline, filename);
                audioInput.Out.PipeTo(recognizer.In);

                // Test dynamic update of speech recognition grammar
                if (srgsXmlGrammar != null)
                {
                    var grammarUpdater = Generators.Return <IEnumerable <string> >(pipeline, new string[] { srgsXmlGrammar });
                    grammarUpdater.PipeTo(recognizer.ReceiveGrammars);
                }

                // Add results from outputs. Note that we need to call DeepClone on each result as we
                // do not want them to be resused by the runtime.
                var results = new List <IStreamingSpeechRecognitionResult>();
                recognizer.Out.Do(r => results.Add(r.DeepClone()));
                recognizer.PartialRecognitionResults.Do(r => results.Add(r.DeepClone()));

                // Run pipeline and wait for completion.
                pipeline.Run();

                Assert.IsTrue(results.Count > 0, "No recognition results!");
                Assert.IsTrue(results.Count > 1, "No partial hypotheses!");

                // Verify partial results.
                for (int i = 0; i < results.Count - 1; ++i)
                {
                    var partialResult = results[i];
                    Assert.IsFalse(partialResult.IsFinal);
                    Assert.IsTrue(partialResult.Confidence.HasValue);
                    Assert.IsTrue(partialResult.Confidence.Value > 0);
                    Assert.IsFalse(string.IsNullOrEmpty(partialResult.Text));
                }

                // Verify final results.
                var finalResult = results.Last();
                Assert.IsTrue(finalResult.IsFinal);
                Assert.IsTrue(finalResult.Confidence.HasValue);
                Assert.IsTrue(finalResult.Confidence.Value > 0);
                Assert.AreEqual(expectedText, finalResult.Text, true);
                Assert.IsTrue(finalResult.Alternates.Length > 0);
                Assert.AreEqual(expectedText, finalResult.Alternates[0].Text, true);
                Assert.AreEqual(finalResult.Alternates[0].Confidence.Value, finalResult.Confidence.Value);
                Assert.IsTrue(finalResult.Audio.Length > 0);
            }
        }