Beispiel #1
0
        public void GetNaturalBreaks_3SecondsWithTwoFixedShortInternalLowsMaxSegment2200Milliseconds_ReturnsTwoInternalBreaksAndOneAtEnd()
        {
            const int totalSamples = 6000;
            var       duration     = TimeSpan.FromSeconds(3);

            _sampleProvider.SetSamples(totalSamples, 1, 0.999f, 0.999f, s =>
            {
                s[1999] = 0;
                s[2000] = 0;
                s[2001] = 0;
                s[3999] = 0;
                s[4000] = 0;
                s[4001] = 0;
            });
            _sampleProvider.TotalTime = duration;

            _settings.Setup(s => s.AutoSegmenterPreferrerdPauseLengthInMilliseconds).Returns(10);
            _settings.Setup(s => s.AutoSegmenterMaximumSegmentLengthInMilliseconds).Returns(2200);

            var segmenter = new AutoSegmenter(_sampleProvider, _settings.Object);
            var breaks    = segmenter.GetNaturalBreaks().ToArray();

            Assert.AreEqual(2, breaks.Length);
            Assert.AreEqual(TimeSpan.FromSeconds(2), breaks[0]);
            Assert.AreEqual(TimeSpan.FromSeconds(3), breaks[1]);
        }
Beispiel #2
0
        public void GetNaturalBreaks_ZeroSamples_ReturnsEmptyEnumeration()
        {
            _sampleProvider.SetSamples(0, 1, 0, 0, null);
            var segmenter = new AutoSegmenter(_sampleProvider, _settings.Object);

            Assert.AreEqual(0, segmenter.GetNaturalBreaks().Count());
        }
Beispiel #3
0
        /// ------------------------------------------------------------------------------------
        private void HandleGetStartedButtonClick(object sender, EventArgs e)
        {
            _buttonGetStarted.Enabled = false;
            ExternalProcess.CleanUpAllProcesses();
            string newAnnotationFile = null;

            if (_radioButtonManual.Checked)
            {
                Settings.Default.DefaultSegmentationMethod = 0;
                newAnnotationFile = ManualSegmenterDlg.ShowDialog(_file, this, -1);
            }
            else if (_radioButtonCarefulSpeech.Checked)
            {
                Settings.Default.DefaultSegmentationMethod = 1;
                newAnnotationFile = (!AudioUtils.GetCanRecordAudio()) ? null :
                                    _file.RecordAnnotations(FindForm(), AudioRecordingType.Careful);
            }
            else if (_radioButtonElan.Checked)
            {
                var caption = LocalizationManager.GetString(
                    "DialogBoxes.Transcription.CreateAnnotationFileDlg.LoadSegmentFileDlgCaption", "Select Segment File");

                var filetype = LocalizationManager.GetString(
                    "DialogBoxes.Transcription.CreateAnnotationFileDlg.ElanFileTypeString",
                    "ELAN File (*.eaf)|*.eaf");

                newAnnotationFile = GetAudacityOrElanFile(caption, filetype);
                Settings.Default.DefaultSegmentationMethod = 2;
            }
            else if (_radioButtonAudacity.Checked)
            {
                var caption = LocalizationManager.GetString(
                    "DialogBoxes.Transcription.CreateAnnotationFileDlg.AudacityLabelOpenFileDlg.Caption",
                    "Select Audacity Label File");

                var filetype = LocalizationManager.GetString(
                    "DialogBoxes.Transcription.CreateAnnotationFileDlg.AudacityLabelOpenFileDlg.FileTypeString",
                    "Audacity Label File (*.txt)|*.txt");

                newAnnotationFile = GetAudacityOrElanFile(caption, filetype);
                Settings.Default.DefaultSegmentationMethod = 3;
            }
            else if (_radioButtonAutoSegmenter.Checked)
            {
                var segmenter = new AutoSegmenter(_file, _project);
                newAnnotationFile = segmenter.Run();
                Settings.Default.DefaultSegmentationMethod = 4;
            }

            if (newAnnotationFile != null && ComponentFileListRefreshAction != null)
            {
                ComponentFileListRefreshAction(newAnnotationFile, null);
            }

            _buttonGetStarted.Enabled = true;
        }
Beispiel #4
0
        public void GetNaturalBreaks_ShortWavFileWith1000IdenticalNonZeroSamples_ReturnsSingleBreakAtEnd()
        {
            _sampleProvider.SetSamples(1000, 1, 0.999f, 0.999f, null);
            var duration = TimeSpan.FromSeconds(3);

            _sampleProvider.TotalTime = duration;

            _settings.Setup(s => s.AutoSegmenterMaximumSegmentLengthInMilliseconds).Returns(6000);

            var segmenter = new AutoSegmenter(_sampleProvider, _settings.Object);
            var breaks    = segmenter.GetNaturalBreaks().ToList();

            Assert.AreEqual(1, breaks.Count());
            Assert.AreEqual(duration, breaks[0]);
        }
Beispiel #5
0
        public void GetNaturalBreaks_12SecondsWithTwoVariableMultiSampleInternalLows_ReturnsTwoInternalBreaksAndOneAtEnd()
        {
            const int totalSamples = 12000;
            var       duration     = TimeSpan.FromSeconds(12);

            _sampleProvider.SetSamples(totalSamples, 1, 0.999f, 0.2f, s =>
            {
                s[4995] = 0.001f;
                s[4996] = 0.09f;
                s[4997] = 0.03f;
                s[4998] = 0.02f;
                s[4999] = 0.009f;
                s[5000] = 0.08f;
                s[5001] = 0.15f;
                s[5002] = 0.09f;
                s[5003] = 0.04f;
                s[5004] = 0.007f;
                s[5005] = 0.03f;

                s[8995] = 0.003f;
                s[8996] = 0.07f;
                s[8997] = 0.04f;
                s[8998] = 0.08f;
                s[8999] = 0.09f;
                s[9000] = 0.01f;
                s[9001] = 0.01f;
                s[9002] = 0.09f;
                s[9003] = 0.009f;
                s[9004] = 0.007f;
                s[9005] = 0.006f;
            });

            _sampleProvider.TotalTime = duration;

            _settings.Setup(s => s.AutoSegmenterPreferrerdPauseLengthInMilliseconds).Returns(10);
            _settings.Setup(s => s.AutoSegmenterMaximumSegmentLengthInMilliseconds).Returns(6000);

            var segmenter = new AutoSegmenter(_sampleProvider, _settings.Object);
            var breaks    = segmenter.GetNaturalBreaks().ToArray();

            Assert.AreEqual(3, breaks.Length);
            Assert.IsTrue(TimeSpan.FromMilliseconds(4998) <= breaks[0]);
            Assert.IsTrue(TimeSpan.FromMilliseconds(5002) >= breaks[0]);
            Assert.IsTrue(TimeSpan.FromMilliseconds(8998) <= breaks[1]);
            Assert.IsTrue(TimeSpan.FromMilliseconds(9002) >= breaks[1]);
            Assert.AreEqual(TimeSpan.FromSeconds(12), breaks[2]);
        }
Beispiel #6
0
        public void GetNaturalBreaks_12SecondsMultiChannelWithFixedMultiSampleLowsEvery500MillisecondsMaxSegment6Seconds_ReturnsThreeInternalBreaksAndOneAtEnd()
        {
            const int totalSamples = 6000;
            var       duration     = TimeSpan.FromSeconds(12);

            _sampleProvider.SetSamples(totalSamples, 2, 0.999f, 0.999f, s =>
            {
                for (int i = 0; i < 22; i++)
                {
                    s[i] = 0;
                }

                for (int b = 1; b < 23; b++)
                {
                    for (int i = 0; i < 22; i++)
                    {
                        s[b * 500 - 10 + i] = 0;
                        s[b * 500 - 10 + i] = 0;
                    }
                }

                for (int i = 11980; i < 12000; i++)
                {
                    s[i] = 0;
                }
            });

            _sampleProvider.TotalTime = duration;

            _settings.Setup(s => s.AutoSegmenterMaximumSegmentLengthInMilliseconds).Returns(6000);

            var segmenter = new AutoSegmenter(_sampleProvider, _settings.Object);
            var breaks    = segmenter.GetNaturalBreaks().ToArray();

            Assert.AreEqual(3, breaks.Length, "Breaks are expected roughly halfway between the min and max segment lengths, not at every pause");
            Assert.IsTrue(TimeSpan.FromMilliseconds(3498) <= breaks[0]);
            Assert.IsTrue(TimeSpan.FromMilliseconds(3502) >= breaks[0]);
            Assert.IsTrue(TimeSpan.FromMilliseconds(6998) <= breaks[1]);
            Assert.IsTrue(TimeSpan.FromMilliseconds(7002) >= breaks[1]);
            Assert.IsTrue(TimeSpan.FromMilliseconds(11998) <= breaks[2]);
            Assert.IsTrue(TimeSpan.FromMilliseconds(12002) >= breaks[2]);
        }