麦克风输入音量不一致

时间:2019-07-02 12:22:52

标签: c# unity3d

我正在创建一个游戏,其中玩家与游戏者数量相比移动一定距离。例如。如果玩家在现实生活中窃窃私语,游戏中的角色会稍微移动,而如果玩家大喊,角色也会移动很多。我的代码可以工作,但是会产生很多不一致的结果。

有时候,窃窃私语显然比大喊大声,反之亦然。我使用了我在网上找到的这段代码,但是我不明白其中的数学原理。有人可以帮我吗?

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);
}

0 个答案:

没有答案