Добавление звукового сигнала или тишины на определенный промежуток времени в аудиофайле ||NAudio ||C # - PullRequest
0 голосов
/ 24 мая 2018

Я использую NAudio для записи и воспроизведения аудиофайла.Теперь я хочу добавить тишину или звуковой сигнал в аудиофайл для заданной продолжительности.Не могли бы вы предложить имя провайдера NAudio для его достижения?

1 Ответ

0 голосов
/ 26 июня 2018

Чтобы сгенерировать звуковой сигнал, взгляните на SignalGenerator, который может генерировать синусоидальную волну.Существует способ расширения Take для ограничения продолжительности звукового сигнала.Для тишины вы можете использовать ту же технику, кроме SilenceProvider.

Вот простой пример двух звуковых сигналов с молчанием между ними:

var beep1 = (new SignalGenerator(){ Frequency = 1000, Gain = 0.2}).Take(TimeSpan.FromSeconds(2));
var silence = new SilenceProvider(beep1.WaveFormat).ToSampleProvider().Take(TimeSpan.FromSeconds(2));
var beep2 = (new SignalGenerator() { Frequency = 1500, Gain = 0.2 }).Take(TimeSpan.FromSeconds(2));
var concat = beep1.FollowedBy(silence).FollowedBy(beep2);
using (var wo = new WaveOutEvent())
{
    wo.Init(concat);
    wo.Play();
    while(wo.PlaybackState == PlaybackState.Playing)
    {
        Thread.Sleep(500);
    }
}
...