Я пытаюсь получить входную громкость микрофона через функцию 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;
}
}
Это очень противоречиво. Обычно это не работает вообще, и всегда дает то же самое, маленькое значение. Иногда это работает за секунду до взлома. Я также попытался сделать более длинную запись и не зацикливаться, но получил те же результаты. Как я могу сделать это более надежным?