c# - 从麦克风捕获音频而不回放

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

最佳答案

Anyone knows how I can capture audio without playing it back?

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

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

audioSrc.volume = 0.001f;

在编辑器中工作。未在 Windows 以外的任何其他平台上测试。有问题就用方法2。


2.使用AudioMixer来处理

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

A.Create AudioMixer。 Assets ---> Create ---> Audio Mixer 名称为 “MicMixer”

B.在Mixer下新建一个Group,命名为“MuteMic”。

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

D。将“MuteMic” 组拖到麦克风的 AudioSource 的Output 插槽中。就是这样。 GetOutputData 功能正常,扬声器没有发出任何声音。

gif 动画:

关于c# - 从麦克风捕获音频而不回放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37787343/

相关文章:

c# - 给定 4 个世界点,我如何计算相机位置?

unity3d - 在运行时导入 FBX

c# - MVC 防止图像文件的 URL 操作攻击

c# - Asp.net core架构开发中我心目中的一些问题

c# - 为什么我的类(class)不符合 CLS?

c# - 在没有类的情况下,C# 中可以有独立的函数吗?

c# - GetComponent 要求请求的组件 'Button' 派生自 MonoBehaviour 或 Component 或者是一个接口(interface)

audio - 如何以编程方式处理文件夹系统中的音频文件?

audio - SpeechRecognizer WinRT不需要的音频输出

java - 在android中录制声音时是否可以静音通话