Пример #1
0
        public void HasSpeech1_ThrowsOnInvalidHandle([Frozen] Mock <IWebRtcDll> libraryMock, short[] audio)
        {
            libraryMock.Setup(l => l.Create()).Returns(IntPtr.Zero);
            libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <short[]>(), It.IsAny <long>())).Returns(-1);
            var vad = new WebRtcVad(libraryMock.Object);

            Assert.That(() => vad.HasSpeech(audio), Throws.InstanceOf <ObjectDisposedException>());
        }
Пример #2
0
        public void OperatingMode_ThrowsOnInvalidHandle([Frozen] Mock <IWebRtcDll> libraryMock, int mode)
        {
            libraryMock.Setup(l => l.Create()).Returns(IntPtr.Zero);
            libraryMock.Setup(l => l.SetMode(It.IsAny <IntPtr>(), It.IsAny <int>())).Returns(-1);
            var vad = new WebRtcVad(libraryMock.Object);

            Assert.That(() => vad.OperatingMode = (OperatingMode)mode, Throws.InstanceOf <ObjectDisposedException>());
        }
Пример #3
0
        public void HasSpeech2_ThrowsOnInvalidHandle([Frozen] Mock <IWebRtcDll> libraryMock, IntPtr audio, SampleRate rate, FrameLength length)
        {
            libraryMock.Setup(l => l.Create()).Returns(IntPtr.Zero);
            libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <IntPtr>(), It.IsAny <ulong>())).Returns(-1);
            var vad = new WebRtcVad(libraryMock.Object);

            Assert.That(() => vad.HasSpeech(audio, rate, length), Throws.InstanceOf <ObjectDisposedException>());
        }
Пример #4
0
        public void HasSpeech2_ReturnsResult([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, IntPtr audio, SampleRate rate, FrameLength length, bool result)
        {
            var returnCode = Convert.ToInt32(result);

            libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <IntPtr>(), It.IsAny <ulong>())).Returns(returnCode);
            var hasSpeech = vad.HasSpeech(audio, rate, length);

            Assert.That(hasSpeech, Is.EqualTo(result));
        }
Пример #5
0
        public void HasSpeech1_ReturnsResult([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, short[] audio, bool result)
        {
            var returnCode = Convert.ToInt32(result);

            libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <short[]>(), It.IsAny <ulong>())).Returns(returnCode);
            var hasSpeech = vad.HasSpeech(audio);

            Assert.That(hasSpeech, Is.EqualTo(result));
        }
Пример #6
0
 void ReadAllFrames(byte[] allBytes, byte[] buffer)
 {
     using var vad = new WebRtcVad()
           {
               OperatingMode = OperatingMode.VeryAggressive
           };
     for (int i = 0; i < allBytes.Length - buffer.Length; i += buffer.Length)
     {
         Array.Copy(allBytes, i, buffer, 0, buffer.Length);
         vad.HasSpeech(buffer);
     }
 }
Пример #7
0
        IEnumerable <bool> DetectAllFrames(WebRtcVad vad, string filename)
        {
            var frameSize = (int)vad.SampleRate / 1000 * 2 * (int)vad.FrameLength;
            var buffer    = new byte[frameSize];

            using var audio = OpenTestFile(filename);
            for (int i = 0; i < audio.Length - frameSize; i += frameSize)
            {
                audio.Read(buffer, 0, buffer.Length);
                yield return(vad.HasSpeech(buffer));
            }
        }
Пример #8
0
        public void Silence(OperatingMode mode, string expectedMap)
        {
            using var vad = new WebRtcVad()
                  {
                      OperatingMode = mode,
                      FrameLength   = FrameLength.Is30ms,
                  };

            var results   = DetectAllFrames(vad, "silence.raw");
            var resultMap = results.Aggregate("", (map, r) => map += (r ? "1" : "0"));

            Assert.That(resultMap.ToString(), Is.EqualTo(expectedMap));
        }
Пример #9
0
        public void FrameLengths(FrameLength length, string expectedMap)
        {
            using var vad = new WebRtcVad()
                  {
                      OperatingMode = OperatingMode.Aggressive,
                      FrameLength   = length
                  };

            var results   = DetectAllFrames(vad, "8k-speech.raw");
            var resultMap = results.Aggregate("", (map, r) => map += (r ? "1" : "0"));

            Console.WriteLine(resultMap);

            Assert.That(resultMap.ToString(), Is.EqualTo(expectedMap));
        }
Пример #10
0
        public void SampleRates(SampleRate rate, string filename, string expectedMap)
        {
            using var vad = new WebRtcVad()
                  {
                      OperatingMode = OperatingMode.Aggressive,
                      FrameLength   = FrameLength.Is30ms,
                      SampleRate    = rate,
                  };

            var results   = DetectAllFrames(vad, filename);
            var resultMap = results.Aggregate("", (map, r) => map += (r ? "1" : "0"));

            Console.WriteLine(filename + ": " + resultMap);

            Assert.That(resultMap.ToString(), Is.EqualTo(expectedMap));
        }
Пример #11
0
        public void FrameTypeShort()
        {
            using var vad = new WebRtcVad()
                  {
                      FrameLength = FrameLength.Is30ms,
                  };

            var results = DetectAllFrames(vad, "8k-speech.raw", buf =>
            {
                short[] shortbuf = new short[buf.Length / 2];
                Buffer.BlockCopy(buf, 0, shortbuf, 0, buf.Length);
                return(vad.HasSpeech(shortbuf));
            });

            var resultMap = results.Aggregate("", (map, r) => map += (r ? "1" : "0"));

            Assert.That(resultMap.ToString(), Is.EqualTo("011110111111111111111111111100"));
        }
Пример #12
0
        public void FrameTypeIntPtr()
        {
            using var vad = new WebRtcVad()
                  {
                      FrameLength = FrameLength.Is30ms,
                  };

            var results = DetectAllFrames(vad, "8k-speech.raw", buf =>
            {
                IntPtr ptrbuf = Marshal.AllocHGlobal(buf.Length);
                Marshal.Copy(buf, 0, ptrbuf, buf.Length);
                var result = vad.HasSpeech(ptrbuf);
                Marshal.FreeHGlobal(ptrbuf);
                return(result);
            });

            var resultMap = results.Aggregate("", (map, r) => map += (r ? "1" : "0"));

            Assert.That(resultMap.ToString(), Is.EqualTo("011110111111111111111111111100"));
        }
Пример #13
0
 public void SampleRate_ThrowsOnInvalidRate([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, int rate)
 {
     libraryMock.Setup(l => l.ValidRateAndFrameLength(It.IsAny <int>(), It.IsAny <ulong>())).Returns(-1);
     Assert.That(() => vad.SampleRate = (SampleRate)rate, Throws.ArgumentException.With.Message.Contains(nameof(SampleRate)));
 }
Пример #14
0
 public void SampleRate_CanSetNewValue(SampleRate rate, WebRtcVad vad)
 {
     vad.SampleRate = rate;
     Assert.That(vad.SampleRate, Is.EqualTo(rate));
 }
Пример #15
0
        public void SampleRate_ValidatesNewValue([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, SampleRate rate)
        {
            vad.SampleRate = rate;
            var expectedLength = ExpectedFrameLength(rate, vad.FrameLength);

            libraryMock.Verify(l => l.ValidRateAndFrameLength((int)rate, expectedLength));
        }
Пример #16
0
 public void Dispose_InvalidatesHandle([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, byte[] audio)
 {
     Assume.That(() => vad.HasSpeech(audio), Throws.Nothing);
     vad.Dispose();
     libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <byte[]>(), It.IsAny <ulong>())).Returns(-1);
     Assert.That(() => vad.HasSpeech(audio), Throws.InstanceOf <ObjectDisposedException>());
 }
Пример #17
0
 public void Constructor_InitializesCreatedHandle([Frozen] Mock <IWebRtcDll> libraryMock, [Frozen] IntPtr handle, WebRtcVad _)
 {
     libraryMock.Verify(l => l.Init(handle));
 }
Пример #18
0
 public void Constructor_SetsFrameLengthDefault(WebRtcVad vad)
 {
     Assert.That(vad.FrameLength, Is.EqualTo(FrameLength.Is10ms));
 }
Пример #19
0
 public void Dispose_OnlyCallsFreeOnce([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad)
 {
     vad.Dispose();
     vad.Dispose();
     libraryMock.Verify(l => l.Free(It.IsAny <IntPtr>()), Times.Once);
 }
Пример #20
0
 public void Constructor_SetsSampleRateDefault(WebRtcVad vad)
 {
     Assert.That(vad.SampleRate, Is.EqualTo(SampleRate.Is8kHz));
 }
Пример #21
0
        public void HasSpeech2_PassesAllParametersToProcess([Frozen] Mock <IWebRtcDll> libraryMock, [Frozen] IntPtr handle, WebRtcVad vad, IntPtr audio, SampleRate rate, FrameLength length)
        {
            vad.HasSpeech(audio, rate, length);
            var expectedLength = ExpectedFrameLength(rate, length);

            libraryMock.Verify(l => l.Process(handle, (int)rate, audio, expectedLength));
        }
Пример #22
0
 public void HasSpeech2_ThrowsOnInvalidFrameLength([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, IntPtr audio, SampleRate rate)
 {
     libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <IntPtr>(), It.IsAny <ulong>())).Returns(-1);
     Assert.That(() => vad.HasSpeech(audio, rate, (FrameLength)12), Throws.ArgumentException.With.Message.Contains(nameof(FrameLength)));
 }
Пример #23
0
 public void HasSpeech2_ThrowsOnOtherError([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, IntPtr audio, SampleRate rate, FrameLength length)
 {
     libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <IntPtr>(), It.IsAny <ulong>())).Returns(-1);
     Assert.That(() => vad.HasSpeech(audio, rate, length), Throws.InvalidOperationException);
 }
Пример #24
0
 public void HasSpeech1_ThrowsOnInvalidSampleRate([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, IntPtr audio)
 {
     vad.SampleRate = (SampleRate)42;
     libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <IntPtr>(), It.IsAny <ulong>())).Returns(-1);
     Assert.That(() => vad.HasSpeech(audio), Throws.ArgumentException.With.Message.Contains(nameof(SampleRate)));
 }
Пример #25
0
 public void HasSpeech1_ThrowsOnInvalidFrameLength([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, short[] audio)
 {
     vad.FrameLength = (FrameLength)42;
     libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <short[]>(), It.IsAny <ulong>())).Returns(-1);
     Assert.That(() => vad.HasSpeech(audio), Throws.ArgumentException.With.Message.Contains(nameof(FrameLength)));
 }
Пример #26
0
        public void HasSpeech1_PassesAllParametersToProcess([Frozen] Mock <IWebRtcDll> libraryMock, [Frozen] IntPtr handle, WebRtcVad vad, short[] audio)
        {
            vad.HasSpeech(audio);
            var expectedLength = ExpectedFrameLength(vad.SampleRate, vad.FrameLength);

            libraryMock.Verify(l => l.Process(handle, (int)vad.SampleRate, audio, expectedLength));
        }
Пример #27
0
 public void FrameLength_CanSetNewValue(FrameLength length, WebRtcVad vad)
 {
     vad.FrameLength = length;
     Assert.That(vad.FrameLength, Is.EqualTo(length));
 }
Пример #28
0
 public void Dispose_PassesHandleToFree([Frozen] Mock <IWebRtcDll> libraryMock, [Frozen] IntPtr handle, WebRtcVad vad)
 {
     vad.Dispose();
     libraryMock.Verify(l => l.Free(handle));
 }
Пример #29
0
        public void FrameLength_ValidatesNewValue([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, FrameLength length)
        {
            vad.FrameLength = length;
            var expectedLength = ExpectedFrameLength(vad.SampleRate, length);

            libraryMock.Verify(l => l.ValidRateAndFrameLength((int)vad.SampleRate, expectedLength));
        }
Пример #30
0
 public void HasSpeech1_ThrowsOnOtherError([Frozen] Mock <IWebRtcDll> libraryMock, WebRtcVad vad, short[] audio)
 {
     libraryMock.Setup(l => l.Process(It.IsAny <IntPtr>(), It.IsAny <int>(), It.IsAny <short[]>(), It.IsAny <ulong>())).Returns(-1);
     Assert.That(() => vad.HasSpeech(audio), Throws.InvalidOperationException);
 }