gpt4 book ai didi

c# - GetOutputData 返回 0

转载 作者:太空宇宙 更新时间:2023-11-03 22:48:43 25 4
gpt4 key购买 nike

我的目的只是获取语音输入电平

我搜索并找到了这段代码 - 但无论我的语音输入级别如何,它总是返回 0 - 我一直在喊,但总是返回 0

这是代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class mic : MonoBehaviour {
public float sens = 100;
public float loud = 0;
AudioSource audio;

void Start()
{
audio = GetComponent<AudioSource> ();
audio.clip = Microphone.Start (null, true, 10, 44100);
audio.loop = true;
audio.mute = true;
while (!(Microphone.GetPosition (null) > 0)) {}
audio.Play ();
}

void Update()
{
loud = GetAvgVol () * sens;
Debug.Log (loud); //always debug 0
}

float GetAvgVol()
{
float [] data = new float[256];
float a = 0;
audio.GetOutputData (data, 0);
foreach(float s in data)
{
a += Mathf.Abs (s);
}
return a / 256;
}
}

如何在 unity 中实现我的目的?

  • 如果有任何库/插件可以促进这个过程,那会很好

最佳答案

假设 Unity 在编辑器中没有抛出任何错误,这些是 AudioSource.GetOutputData 可能返回 0 的原因:

1AudioSource 音量设置为 0

例如,AudioSourceInstance.volume = 0

2AudioSource 静音设置为 true

例如,AudioSourceInstance.mute = true;

3.AudioSource没有播放音频

例如AudioSourceInstance.Play()没有被调用,AudioSourceInstance.Pause()被调用或者AudioSourceInstance.Stop()有在那个 AudioSource 上被调用。

4.音频文件或麦克风静音。


在您的情况下,原因是#2

如果您只想从麦克风中捕获数据而不是现场回放,请参阅 this回答提到了两种方法

此外,我建议您在 GetAvgVol 函数中将 return a/256; 替换为 return a/256f;

关于c# - GetOutputData 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48644154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com