【问题标题】:Capture audio from Microphone without playing it back从麦克风捕获音频而不播放
【发布时间】:2016-10-13 17:30:57
【问题描述】:

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

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

【问题讨论】:

  • 嗨,卢拉斯,你在吗?你需要勾选一个答案。

标签: c# audio unity3d microphone


【解决方案1】:

有谁知道我如何在不播放的情况下捕获音频?

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

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

audioSrc.volume = 0.001f;

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


2.使用 AudioMixer 处理

如果将音量设置为0.001f 并没有完全静音,请使用AudioMixer 修复它。

A。创建 AudioMixer。 Assets ---> Create ---> Audio Mixer 并且名称是 "MicMixer"

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

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

D。将 “MuteMic” 组拖到麦克风的 AudioSource 的 Output 插槽。而已。 GetOutputData 功能正常,扬声器没有任何声音。

为此的动画 gif:

【讨论】:

  • 在使用OnAudioFilterRead() 方法而不是GetOutputData 函数时,方法2 似乎不起作用,很遗憾。
猜你喜欢
  • 2018-06-18
  • 2018-02-14
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多