lul*_*las 1 c# audio microphone unity-game-engine
我正在尝试使用麦克风并处理捕获的音频。我设法做到了这一切,但我有一个问题......我捕获的音频会自动播放给用户,但我不希望这样。
    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);
}
有人知道如何捕获音频而不播放它吗?
有两种方法可以做到这一点:
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”组拖到麦克风的音频源的输出插槽中。就是这样。功能GetOutputData正常,扬声器中没有任何声音。
动画 gif:
