Захват звука с микрофона без воспроизведения

Я пытаюсь использовать микрофон и обрабатывать захваченный звук. Мне удалось все это сделать, но у меня есть проблема... Мой захваченный звук автоматически воспроизводится для пользователя, а я этого не хочу.

    audioSrc.clip = Microphone.Start(null, true, 1000, 44100);
    while (!(Microphone.GetPosition(null) > 0)) { }
    audioSrc.Play();

Я попытался отключить прослушиватель звука и уменьшить громкость источника звука, но это не сработало.

Кто-нибудь знает, как я могу записывать звук, не проигрывая его?

РЕДАКТИРОВАТЬ 1:

void Start()
{
    GameObject a = new GameObject("AudioSource");
    audioSrc = a.AddComponent<AudioSource>();
    Instantiate(a);

    string deviceName = Microphone.devices[0];
    audioSrc.clip = Microphone.Start(deviceName, true, 1000, 44100);
    audioSrc.volume = 0;
    while (!(Microphone.GetPosition(null) > 0)) { }

    audioSrc.Play();
}

void Update()
{
    audioSrc.GetSpectrumData(spectrum, 0, FFTWindow.BlackmanHarris);
    frq = findPitch(spectrum);
    txtFreq.text = "Hz: " + frq;
    trigger.update(Time.deltaTime, frq);
}

person lulas    schedule 13.06.2016    source источник
comment
привет, Лулас, ты там? вам нужно ОТМЕТИТЬ ответ.   -  person Fattie    schedule 13.06.2016


Ответы (1)


Кто-нибудь знает, как я могу записывать звук, не проигрывая его?

Есть два способа сделать это:

1. Установите очень низкий уровень громкости. Это не может быть 0. Значение 0.001f совершенно нормально.

audioSrc.volume = 0.001f;

Работает в редакторе. Не тестировалось ни на какой другой платформе, кроме Windows. Используйте метод 2, если есть проблема.


2. Для обработки используйте AudioMixer.

Если установка громкости на 0.001f не привела к полному отключению звука, используйте AudioMixer, чтобы исправить это.

A. Создайте AudioMixer. Ресурсы ---> Создать ---> Аудио микшер с именем "MicMixer".

B. Создайте новую группу под микшером и назовите ее «MuteMic».

C. Измените затухание этой группы "MuteMic" на -80.

D. Перетащите эту группу "MuteMic" в слот Output AudioSource вашего микрофона. Вот и все. GetOutputData работает правильно, из динамика не слышно ни звука.

Анимированная гифка для этого:

person Programmer    schedule 06.02.2018