示例#1
0
 /// ----------------------------------------------------------------------------------------
 public static OralAnnotationRecorderDlgViewModel Create(ComponentFile file,
                                                         AudioRecordingType annotationType)
 {
     return(annotationType == AudioRecordingType.Careful ?
            new CarefulSpeechAnnotationRecorderDlgViewModel(file) as OralAnnotationRecorderDlgViewModel :
            new OralTranslationAnnotationRecorderDlgViewModel(file));
 }
示例#2
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// If user clicks OK and recordings were made or changed, the full path to the EAF
        /// file is returned. Otherwise null is returned.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        public string RecordAnnotations(Form frm, AudioRecordingType annotationType)
        {
            try
            {
                Program.SuspendBackgroundProcesses();

                using (var viewModel = OralAnnotationRecorderDlgViewModel.Create(this, annotationType))
                    using (var dlg = OralAnnotationRecorderBaseDlg.Create(viewModel, annotationType))
                    {
                        if (dlg.ShowDialog(frm) != DialogResult.OK || !viewModel.WereChangesMade)
                        {
                            viewModel.DiscardChanges();
                            return(null);
                        }

                        Analytics.Track("Changes made using Oral Annotation Recorder");

                        var eafFileName = viewModel.Tiers.Save(PathToAnnotatedFile);
                        GenerateOralAnnotationFile(viewModel.Tiers, frm, GenerateOption.ClearAndRegenerateOnDemand);
                        return(eafFileName);
                    }
            }
            finally
            {
                Program.ResumeBackgroundProcesses(true);
            }
        }
        /// ------------------------------------------------------------------------------------
        private WaveStreamProvider GetWaveStreamForOralAnnotationSegment(string filename,
                                                                         AudioRecordingType annotationType)
        {
            var provider = WaveStreamProvider.Create(_output1ChannelAudioFormat, filename);

            if (provider.Error != null && !(provider.Error is FileNotFoundException))
            {
                var msg = LocalizationManager.GetString(
                    "SessionsView.Transcription.GeneratedOralAnnotationView.ProcessingAnnotationFileErrorMsg",
                    "There was an error processing a {0} annotation file.",
                    "The parameter is the annotation type (i.e. careful, translation).");

                var type = annotationType.ToString().ToLower();
                if (_synchInvoke.InvokeRequired)
                {
                    _synchInvoke.Invoke((Action)(() => ErrorReport.NotifyUserOfProblem(_srcRecStreamProvider.Error, msg, type)), null);
                }
                else
                {
                    ErrorReport.NotifyUserOfProblem(_srcRecStreamProvider.Error, msg, type);
                }
            }

            return(provider);
        }
示例#4
0
        /// ------------------------------------------------------------------------------------
        protected virtual void HandlePlaybackTypeMenuItemClicked(object sender, EventArgs e)
        {
            var menuItem = sender as ToolStripMenuItem;

            if (menuItem != null)
            {
                PlaybackType = (AudioRecordingType)menuItem.Tag;
            }
            _grid.Play();
        }
        /// ------------------------------------------------------------------------------------
        private void CreateAnnotationFile(AudioRecordingType fileType, float start, float end)
        {
            if (!Directory.Exists(_model.OralAnnotationsFolder))
            {
                Directory.CreateDirectory(_model.OralAnnotationsFolder);
            }

            if (fileType == AudioRecordingType.Careful)
            {
                File.OpenWrite(Path.Combine(_model.OralAnnotationsFolder,
                                            TimeTier.ComputeFileNameForCarefulSpeechSegment(start, end))).Close();
            }
            else
            {
                File.OpenWrite(Path.Combine(_model.OralAnnotationsFolder,
                                            TimeTier.ComputeFileNameForOralTranslationSegment(start, end))).Close();
            }
        }
示例#6
0
        /// ------------------------------------------------------------------------------------
        private IEnumerable <AnnotationPlaybackInfo> GetAnnotationMediaInfo(AudioRecordingType playbackType)
        {
            var carefulSpeechFile   = GetCurrentSegment().GetFullPathToCarefulSpeechFile();
            var oralTranslationFile = GetCurrentSegment().GetFullPathToOralTranslationFile();

            if ((playbackType & AudioRecordingType.Source) == AudioRecordingType.Source)
            {
                yield return(GetOriginalAnnotationPlaybackInfo());
            }

            if ((playbackType & AudioRecordingType.Careful) == AudioRecordingType.Careful)
            {
                if (File.Exists(carefulSpeechFile))
                {
                    yield return new AnnotationPlaybackInfo {
                               MediaFile = carefulSpeechFile
                    }
                }
                ;
                else if (playbackType == AudioRecordingType.Careful)
                {
                    yield return(GetOriginalAnnotationPlaybackInfo());
                }
            }

            if ((playbackType & AudioRecordingType.Translation) == AudioRecordingType.Translation)
            {
                if (File.Exists(oralTranslationFile))
                {
                    yield return new AnnotationPlaybackInfo {
                               MediaFile = oralTranslationFile
                    }
                }
                ;
                else if (playbackType == AudioRecordingType.Translation)
                {
                    yield return(GetOriginalAnnotationPlaybackInfo());
                }
            }
        }
        /// ------------------------------------------------------------------------------------
        private void CreateModelAndAnnotationFileForType(AudioRecordingType modelType,
                                                         AudioRecordingType fileType, float start, float end)
        {
            if (Directory.Exists(_model.OralAnnotationsFolder))
            {
                Directory.Delete(_model.OralAnnotationsFolder, true);
            }

            _model.Dispose();
            _model = OralAnnotationRecorderDlgViewModel.Create(_componentFile.Object, modelType);

            Directory.CreateDirectory(_model.OralAnnotationsFolder);

            if (fileType == AudioRecordingType.Careful)
            {
                WriteWavFile(Path.Combine(_model.OralAnnotationsFolder,
                                          TimeTier.ComputeFileNameForCarefulSpeechSegment(start, end)));
            }
            else
            {
                WriteWavFile(Path.Combine(_model.OralAnnotationsFolder,
                                          TimeTier.ComputeFileNameForOralTranslationSegment(start, end)));
            }
        }
        /// ------------------------------------------------------------------------------------
        private void CreateModelAndAnnotationFileForType(AudioRecordingType modelType,
                                                         AudioRecordingType fileType)
        {
            CreateModelAndAnnotationFileForType(modelType, fileType, 25f, 30f);
// REVIEW			_model.SelectSegmentFromTime(TimeSpan.FromSeconds(30f));
        }