Несовместимый микрофон в Unity3D - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь получить входную громкость микрофона через функцию my GetVolume (). Единицы измерения не важны, поэтому я просто добавляю примеры значений, чтобы использовать их для сравнения.
У меня есть GameObject с AudioSource и этот скрипт:

using UnityEngine;

public class CurrentVolume : MonoBehaviour
{

    AudioSource audioSource;
    public float[] samples = new float[512];

    private void Start()
    {
        audioSource = GetComponent<AudioSource>();
        audioSource.clip = Microphone.Start(Microphone.devices[0], true, 10, AudioSettings.outputSampleRate);
        audioSource.Play();
    }

    void Update()
    {
        GetSpectrum();
        Debug.Log(GetVolume());
    }

    void GetSpectrum()
    {
        audioSource.GetSpectrumData(samples, 0, FFTWindow.Blackman);
    }

    public float GetVolume()
    {
        float temp = 0;
        foreach (var sample in samples)
        {
            temp += sample;
        }
        return temp;
    }

}

Это очень противоречиво. Обычно это не работает вообще, и всегда дает то же самое, маленькое значение. Иногда это работает за секунду до взлома. Я также попытался сделать более длинную запись и не зацикливаться, но получил те же результаты. Как я могу сделать это более надежным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...