/// <summary>Creates a new instance of DtmfOccurence.</summary> /// <param name="dtmfTone">The DTMF tone.</param> /// <param name="channel">The audio channel where the DTMF tone occured.</param> /// <param name="position">The estimated position in the file or stream where the DTMF tone occured.</param> /// <param name="duration">The estimated duration of the DTMF tone.</param> public DtmfOccurence(DtmfTone dtmfTone, int channel, TimeSpan position, TimeSpan duration) { DtmfTone = dtmfTone; Channel = channel; Position = position; Duration = duration; }
private void GenerateToneWaveFile(string path, DtmfTone tone, int sampleRate, double duration, ISampleProvider noise = null) { var tone1 = new SignalGenerator(sampleRate, 1) { Gain = 0.5, Frequency = tone.LowTone, Type = SignalGeneratorType.Sin } .Take(TimeSpan.FromMilliseconds(duration)); var tone2 = new SignalGenerator(sampleRate, 1) { Gain = 0.5, Frequency = tone.HighTone, Type = SignalGeneratorType.Sin } .Take(TimeSpan.FromMilliseconds(duration)); var list = new List <ISampleProvider>(new[] { tone1, tone2 }); if (noise != null) { list.Add(noise.Take(TimeSpan.FromMilliseconds(duration))); } var mix = new MixingSampleProvider(list); WaveFileWriter.CreateWaveFile16(path, mix); }
private DtmfTone AddTone(int frequency) { PureTones.TryAddHighTone(frequency); var tone = _dtmfTone.FirstOrDefault(x => x.HighTone == frequency); if (tone == null || tone == DtmfTone.None) { tone = new DtmfTone(frequency, 0, (PhoneKey)(_dtmfTone.Count() + (int)PhoneKey.Custom1)); DtmfClassification.AddCustomTone(tone); _dtmfTone.Add(tone); } return(tone); }
/// <summary>Creates a new instance of DtmfToneStart.</summary> /// <param name="dtmfTone">The DTMF tone.</param> /// <param name="channel">The audio channel where the DTMF tone occured.</param> /// <param name="position">The estimated time when the DTMF tone occured.</param> public DtmfToneStart(DtmfTone dtmfTone, int channel, DateTime position) { DtmfTone = dtmfTone; Channel = channel; Position = position; }
private static void AnalyzeWaveFile(string path) { using (var log = new Log("waveFile.log")) { PureTones.ClearTones(); //PureTones.AddLowTone(0); //PureTones.AddHighTone(645); //PureTones.AddTonePair(794, 524); // Station 2 //PureTones.AddTonePair(1084, 794); // Station 3 //PureTones.AddTonePair(716, 645); // Station 6 PureTones.TryAddHighTone(794); PureTones.TryAddHighTone(881); PureTones.TryAddHighTone(524); PureTones.TryAddHighTone(1084); //PureTones.AddHighTone(881); PureTones.TryAddHighTone(645); PureTones.TryAddHighTone(716); PureTones.TryAddHighTone(384); PureTones.TryAddHighTone(547); PureTones.TryAddHighTone(802); PureTones.TryAddHighTone(346); PureTones.TryAddHighTone(426); PureTones.TryAddHighTone(582); PureTones.TryAddHighTone(757); PureTones.TryAddHighTone(592); PureTones.TryAddHighTone(473); DtmfClassification.ClearAllTones(); DtmfTone custom1 = new DtmfTone(794, 0, PhoneKey.Custom1); DtmfTone custom2 = new DtmfTone(881, 0, PhoneKey.Custom2); DtmfTone custom3 = new DtmfTone(524, 0, PhoneKey.Custom3); DtmfTone custom4 = new DtmfTone(1084, 0, PhoneKey.Custom4); //DtmfTone custom5 = new DtmfTone(881, 0, PhoneKey.Custom5); DtmfTone custom6 = new DtmfTone(645, 0, PhoneKey.Custom6); DtmfTone custom7 = new DtmfTone(716, 0, PhoneKey.Custom7); DtmfTone custom8 = new DtmfTone(384, 0, PhoneKey.Custom8); DtmfTone custom9 = new DtmfTone(547, 0, PhoneKey.Custom9); DtmfTone custom10 = new DtmfTone(802, 0, PhoneKey.Custom10); DtmfTone custom11 = new DtmfTone(346, 0, PhoneKey.Custom11); DtmfTone custom12 = new DtmfTone(426, 0, PhoneKey.Custom12); DtmfTone custom13 = new DtmfTone(582, 0, PhoneKey.Custom13); DtmfTone custom14 = new DtmfTone(757, 0, PhoneKey.Custom14); DtmfTone custom15 = new DtmfTone(592, 0, PhoneKey.Custom15); DtmfTone custom16 = new DtmfTone(473, 0, PhoneKey.Custom16); DtmfClassification.AddCustomTone(custom1); DtmfClassification.AddCustomTone(custom2); DtmfClassification.AddCustomTone(custom3); DtmfClassification.AddCustomTone(custom4); //DtmfClassification.AddCustomTone(custom5); DtmfClassification.AddCustomTone(custom6); DtmfClassification.AddCustomTone(custom7); DtmfClassification.AddCustomTone(custom8); DtmfClassification.AddCustomTone(custom9); DtmfClassification.AddCustomTone(custom10); DtmfClassification.AddCustomTone(custom11); DtmfClassification.AddCustomTone(custom12); DtmfClassification.AddCustomTone(custom13); DtmfClassification.AddCustomTone(custom14); DtmfClassification.AddCustomTone(custom15); DtmfClassification.AddCustomTone(custom16); using (var audioFile = new AudioFileReader(path)) { foreach (var occurence in audioFile.DtmfTones()) { if (occurence.Duration.TotalSeconds >= .5) { log.Add( $"{occurence.Position.TotalSeconds:00.000} s " + $"({occurence.Channel}): " + $"{occurence.DtmfTone.Key} key " + $"(duration: {occurence.Duration.TotalSeconds:00.000} s)"); } } } } }
/// <summary>Creates a new instance of DtmfToneEnd.</summary> /// <param name="dtmfTone">The DTMF tone.</param> /// <param name="channel">The audio channel where the DTMF tone occured.</param> /// <param name="duration">The estimated duration of the DTMF tone.</param> public DtmfToneEnd(DtmfTone dtmfTone, int channel, TimeSpan duration) { DtmfTone = dtmfTone; Channel = channel; Duration = duration; }