无需播放即可捕获音频

我正在尝试使用麦克风并处理捕获的音频。 我设法做到了这一切,但我遇到了问题……我拍摄的音频会自动播放给用户,我不希望这样。

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(); 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.将音量设置为非常低的数字。 这不能是00.001f的值完全没问题。

 audioSrc.volume = 0.001f; 

在编辑器中工作。 除了Windows之外,未在任何其他平台上进行测试。 如果出现问题,请使用方法2。


2.使用 AudioMixer处理它

如果将音量设置为0.001f并未完全静音音频,请使用AudioMixer进行修复。

A .。创建AudioMixer。 资产 —> 创建 —> 音频混音器 ,名称为“MicMixer”

B.在混音器下创建新组,并将其命名为“MuteMic”。

C .。“MuteMic”组的衰减更改-80

D。“MuteMic”组拖到Mic的AudioSource的输出插槽中。 而已。 GetOutputDatafunction正常,扬声器没有任何声音。

为此动画gif:

从您的代码中只需注释或删除audioSrc.Play(); 。 这将停止播放录制的音频片段。 Unity手动参考