Exemplo n.º 1
0
        public SoundRecorder(int sampleRate, VoiceActivityDetector vad)
        {
            this.vad = vad;

            if (!AVAudioSession.SharedInstance().Category == AVAudioSession.CategoryRecord &&
                !AVAudioSession.SharedInstance().Category == AVAudioSession.CategoryPlayAndRecord)
            {
                throw new AIServiceException("AVAudioCategory not set to RECORD or PLAY_AND_RECORD. Please set it using AVAudioSession class.");
            }

            audioStreamDescription = new AudioStreamBasicDescription
            {
                Format      = AudioFormatType.LinearPCM,
                FormatFlags =
                    AudioFormatFlags.LinearPCMIsSignedInteger |
                    AudioFormatFlags.LinearPCMIsPacked,

                SampleRate       = sampleRate,
                BitsPerChannel   = BitsPerChannel,
                ChannelsPerFrame = Channels,
                BytesPerFrame    = (BitsPerChannel / 8) * Channels,
                FramesPerPacket  = 1,
                Reserved         = 0,
            };

            audioStreamDescription.BytesPerPacket = audioStreamDescription.BytesPerFrame * audioStreamDescription.FramesPerPacket;

            inputQueue = CreateInputQueue(audioStreamDescription);
        }
        static void ProcessStream(VoiceActivityDetector vad, Stream inputStream)
        {
            var bufferSize = 3000 + new Random().Next(200);
            var buffer     = new byte[bufferSize];
            int bytesRead  = 0;

            bytesRead = inputStream.Read(buffer, 0, bufferSize);
            while (bytesRead > 0)
            {
                vad.ProcessBufferEx(buffer, bytesRead);

                bufferSize = 3000 + new Random().Next(200);
                buffer     = new byte[bufferSize];
                bytesRead  = inputStream.Read(buffer, 0, bufferSize);
            }
        }
Exemplo n.º 3
0
        private void buttonStartTest_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                // speexPreprocessor = new SpeexPreprocessFilter(AudioConstants.SamplesPerFrame, sampleRate, new MediaConfig(), null, "VAD test page Speex Preprocessor");
                voiceActivityDetector = new VoiceActivityDetector(AudioFormat.Default, VoiceActivityDetector.Aggressiveness.Normal);

                // DataContext = voiceActivityDetector. speexPreprocessor.GetVadViewModel(this.Dispatcher);
                InitializeCaptureSource();
                //buttonStartTest.IsEnabled = false;
            }
            catch (Exception ex)
            {
                ClientLogger.Debug(ex.ToString());
                MessageBox.Show(ex.ToString());
            }
        }
        public void TestEnabled()
        {
            var vad = new VoiceActivityDetector(SAMPLE_RATE);

            vad.Enabled = false;

            var inputStream = ReadFileFromResource("speech.raw");

            speechEnd   = false;
            speechBegin = false;

            vad.SpeechBegin += () => { speechBegin = true; };
            vad.SpeechEnd   += () => { speechEnd = true; };

            ProcessStream(vad, inputStream);

            Assert.IsTrue(speechBegin);
            Assert.IsFalse(speechEnd);
        }
        public void TestSpeechDetect()
        {
            var vad = new VoiceActivityDetector(SAMPLE_RATE);

            var inputStream = ReadFileFromResource("speech.raw");

            speechEnd         = false;
            speechBegin       = false;
            speechNotDetected = false;

            vad.SpeechBegin       += () => { speechBegin = true; };
            vad.SpeechEnd         += () => { speechEnd = true; };
            vad.SpeechNotDetected += () => { speechNotDetected = true; };

            ProcessStream(vad, inputStream);

            Assert.IsTrue(speechBegin);
            Assert.IsTrue(speechEnd);
            Assert.IsFalse(speechNotDetected);

            Assert.IsTrue(vad.SpeechBeginTime > 800 && vad.SpeechBeginTime < 950, "vad.SpeechBeginTime " + vad.SpeechBeginTime);
            Assert.IsTrue(vad.SpeechEndTime > 2400 && vad.SpeechEndTime < 2900, "vad.SpeechEndTime " + vad.SpeechEndTime);
        }
Exemplo n.º 6
0
 public DtxFilter(AudioFormat audioFormat)
 {
     _audioFormat = audioFormat;
     _vad         = new VoiceActivityDetector(audioFormat, VoiceActivityDetector.Aggressiveness.Normal);
 }
 internal AudioStream(AudioRecord record, VoiceActivityDetector vad)
 {
     this.vad    = vad;
     audioRecord = record;
 }