Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Чем можно консольно проверять уровень в микрофоне?  (Прочитано 865 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн BSB

  • Автор темы
  • Участник
  • *
  • Сообщений: 239
  • Сама Справедливость
    • Просмотр профиля
Пытаюсь реализовать голосовое управление. Есть мысль использовать распознавание голоса в Google. Но для начала нужно узнать, когда начать записывать звук, поскольку невозможно постоянно гонять трафик в Google. Не нашел никакого софта, который бы только мониторил уровень звука на микрофоне. Где-то откопал вот такой код:
using System;
using System.Threading;
using NAudio.Wave;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var micManager = new MicManager();

            while (true)
            {
                Console.WriteLine("Уровень сигнала микрофона: {0}%", micManager.GetMicVolume());

                Thread.Sleep(1000);
            }
        }
    }

    class MicManager
    {
        private int _currentLevel;

        public MicManager()
        {
            var waveIn = new WaveInEvent();
            waveIn.DataAvailable += WaveOnDataAvailable;
            waveIn.WaveFormat = new WaveFormat(8000, 1);
            waveIn.StartRecording();
        }

        public int GetMicVolume()
        {
            return _currentLevel;
        }

        private void WaveOnDataAvailable(object sender, WaveInEventArgs e)
        {
            for (int index = 0; index < e.BytesRecorded; index += 2)
            {
                short sample = (short)((e.Buffer[index + 1] << 8) | e.Buffer[index + 0]);

                float amplitude = sample / 32768f;
                _currentLevel = (int)(Math.Abs(amplitude) * 100);
            }
        }
    }
}
но у меня нет навыка программирования в Linux.

 

Страница сгенерирована за 0.034 секунд. Запросов: 26.