从麦克风捕获音频而不播放

时间:2016-06-13 10:27:41

标签: c# audio unity3d microphone

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

    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 :(得分:4)

  

任何人都知道如何在不回放的情况下捕获音频?

有两种方法可以做到这一点:

1 。将音量设置为一个非常低的数字。 这不能为0 0.001f的值完全没问题。

audioSrc.volume = 0.001f;

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

2 。使用AudioMixer来处理它

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

A 。创建AudioMixer。 资产 ---&gt; 创建 ---&gt; 音频混音器和名称是“MicMixer”

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

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

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

GIF动画: