NAudio, замер громкости сигнала с микрофона - C#

Узнай цену своей работы

Формулировка задачи:

Привет. Использую такой код(немного переработанный, с интернетов взял) для определения уровня сигнала(громче-тише) с микрофона, но есть несколько проблем - 1)Чем громче сигнал в микро - тем ниже выводимое число. Как пофиксить? 2) Как сделать замер уровня микро раз в 500 миллисекунд?(Сейчас он как-то хаотично замеряет, я не пойму от чего зависит время)
using System;
using NAudio.Wave;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var waveIn = new WaveInEvent();
            waveIn.DataAvailable += WaveOnDataAvailable;
            waveIn.WaveFormat = new WaveFormat(8000, 1);
            waveIn.StartRecording();
 
            Console.ReadLine();
        }
 
        private static void WaveOnDataAvailable(object sender, WaveInEventArgs e)
        {
                short sample = (short)((e.Buffer[0] << 8) | e.Buffer[0]);
 
                float amplitude = sample / 32768f;
                float level = Math.Abs(amplitude); // от 0 до 1
 
                Console.WriteLine("Уровень: {0}.", Math.Round(level * 100));
        }
    }
}

Решение задачи: «NAudio, замер громкости сигнала с микрофона»

textual
Листинг программы
for ( int i = 0; i < e.BytesRecorded; i += 2 ) {
    //convert pairs of byte into
    short sample = (short)((e.Buffer[i + 1] << 8) | e.Buffer[i + 0]);
    //normalization
    float amplitude = sample / 32768f;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5