unity3d - 上传音频文件时统一显示音频频谱(波形)

标签 unity3d audio

我正在尝试实现一系列音频文件,这些文件是三星语音记录功能的一部分。

像这样
enter image description here

但是,没有显示实时频谱的信息,但是没有显示上传的音频文件的波形的信息。

最佳答案

您可能需要寻找的是显示所获取音频数据的整体幅度。但是,您使用GetSpectrumData从Unity获得的数据是一个数组,显示了一系列不同频率下的振幅。要找到合适的“总”幅度,您可以取平均值,找到最大值,或对该数组的内容求和,然后使用此新值绘制可视化效果。我可能会去寻找最大值,即数组中的最高/最低值。您可以使用Linq来做到这一点:

using System.Linq;
/*...*/
float loudest = yourSpectrumDataArray.Max();

还要注意,您从GetSpectrumData获得的振幅值是整洁的,您可能需要在使用它们之前将其转换为分贝值。我正在使用这个方程式-不记得我在哪里找到的,但是它对我有用:
public float AmplitudeToDB(float value)
{
    return 20.0f * Mathf.Log10(value / 2.5f + 1.5849e-13f);
}

关于unity3d - 上传音频文件时统一显示音频频谱(波形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947899/

相关文章:

C# 无限生成平台 - 它会造成延迟吗?

c# - 避免角色因胶囊对撞机而跳跃

jquery - 单击另一个DIV时停止播放音频

python - 如何实时读取/写入原始音频数据(使用 python)?

android - 使用 Firebase Google Analytics SDK 构建 Unity 项目失败 : "Could not load file or assembly ' UnityEditor. iOS.Extensions.Xcode”

c# - 在 Unity 中使游戏对象可触摸 - 增强现实

linux - Unity 中的 LGSVL 构建为 Linux 目标而非 Windows 提供了 Pink Sky

android - 有人可以帮我解决这个在Android上产生频率音调的问题吗

sockets - 通过TCP/IP进行音频和视频

javascript - 网络音频 API : how to play and stop audio?