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]); }
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()); }
/// ------------------------------------------------------------------------------------ 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; }
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]); }
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]); }
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]); }