Громкость микрофона не соответствует - PullRequest
2 голосов
/ 02 июля 2019

Я создаю игру, в которой игрок перемещается на определенное расстояние по сравнению с объемом игроков.Например.Если игрок шепчет в реальной жизни, персонаж в игре немного двигается, и если игрок кричит, персонаж будет много двигаться.У меня работает код, но он дает много противоречивых результатов.

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

private void Awake()
{
    //init microphone input
    if (Microphone.devices.Length > 0)
    {
        microphoneInput = Microphone.Start(Microphone.devices[0], true, 999, 44100);

        microphoneInitialized = true;
    }
    else
    {
        print("There is no mic availiable");
    }
}

private void Update()
{
    if (microphoneInitialized == true)
    {
        // get mic volume
        int dec = 128;
        float[] waveData = new float[dec];
        int micPosition = Microphone.GetPosition(null) - (dec + 1); // null means the first microphone
        microphoneInput.GetData(waveData, micPosition);


        //Getting a peak on the last 128 samples
        float levelMax = 0;
        for (int i = 0; i < dec; i++)
        {
            float wavePeak = waveData[i] * waveData[i];
            if (levelMax < wavePeak)
            {
                levelMax = wavePeak;
            }
        }

        float db =  Mathf.Abs(levelMax) ;
        micInputVolume = db;// Mathf.Sqrt(Mathf.Sqrt(levelMax) * 100);           
    }

    //print("Mic volume = " + micInputVolume);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...