[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

关于音频效果

感谢您的辛勤工作。
我是系统开发室的松山。

我突然想到有音频过滤器,但我只将它们用于混响,所以
我决定检查其他过滤器(效果)。

音频滤波器

首先,让我们检查一下您拥有哪种类型的过滤器。
点击这里查看官方文档

低通滤波器

由于这是一个低通滤波器,因此它会削减高频。
这就是当高频衰减时您听到的声音,例如在墙壁或其他障碍物的另一侧,或在扬声器后面。

高通滤波器

这与低通相反,低通是削减低频的滤波器。
作为一种物理现象,它应该从高频开始衰减,因此听起来廉价耳机无法再现低频。
它会发出咔哒声。

回声滤波器

这是一个回声。它重复减弱了相同的声音。
就像在卡拉 OK 里唱歌一样有回声。
如果拉大间距,它可能看起来像山彦。

失真滤波器

无论音量如何,都使声音更大。
由于音质低,声音失真,听起来像爆裂声。

混响滤波器

就我个人而言,这是我最常用的过滤器。
听起来就像是在一个封闭的空间里回荡,比如大厅或者地下通道。
另外,听起来像通过麦克风发出的声音吗?
它可以设置的参数最多,作为一个业余爱好者,我感觉我无法进行所有的调整。

合唱过滤器

这是一个播放调制音频以及类似合唱的声音的滤波器。
我尝试了一个示例,但似乎不起作用。
如果有人知道请告诉我...

要求

与往常一样,我们将在 Unity 中创建一个示例来进行尝试。
① 在音频监听器上设置各种滤波器
② 可以使用复选框打开/关闭每个滤波器
③ 使用滑块指定低通和高通滤波器的频率
④ 可以单独播放 BGM、SE 和 jingle
⑤ 尝试显示类似音频频谱的内容

是这样的。
每个过滤器的参数均处于默认状态。
我需要做的就是创建一个播放一些音频的用户界面。
如果音频频谱表现得像这样,那就没问题。

在音频监听器上设置过滤器

MainCamera的组件中有一个Audio Listener,因此我们将在其下面添加每个过滤器。
除低/高通滤波器之外的所有设置都可以使用复选框进行切换,因此默认情况下将其保留为关闭状态。

允许使用复选框打开/关闭每个过滤器

使用 UI.Toggle 创建。 (像这样↓)

为触发器准备一个方法,

// 切换过滤器 public void OnClickToggleFilter(int no) { switch ((FilterNo)no) { case FilterNo.Chorus: fltChorus.enabled = tglChorus.isOn; case FilterNo.Distortion: fltDistortion.enabled = tglDistotion.isOn; ; case FilterNo.Echo: fltEcho.enabled = tglEcho.isOn 中断; case FilterNo.Reverv: fltReverb.enabled = tglReverv.isOn 中断;

在OnValueChanged中设置就可以了。

低通和高通滤波器使用滑块指定频率

可以使用滑块设置低通和高通滤波器。
同时,我还创造音量和音调。

滑块的 j 反射看起来像这样。

① 设置事件监听器

// 低音传递 sldLoPass.onValueChanged.AddListener((value) => { setLoPass(value); });

② 设置值进行过滤

// 低通滤波器设置 private void setLoPass(float val) { var loPassHz = ExpHz(val); fltLoPass.cutoffFrequency = loPassHz; txtLoPass.text = string.Format("{0:#}", loPassHz);

* ExpHz 将值从 0.0 到 1.0 转换为 10 到 22000 Hz

float ExpHz(float logHz) { var t = Mathf.Log(LowHz) - Mathf.Log(HighHz); return Mathf.Exp(logHz * t) * 10f }

可以分别播放bgm、se、jingle

使用 UI.Button 能够播放音频。

设置事件监听器来切换播放/停止。
使用 AudioSource.Play()、Stop()。

// BGM 播放/停止 btnBgmPlay.onClick.AddListener(() => { if (!bgmSource.isPlaying) bgmSource.Play(); else bgmSource.Stop(); });

尝试显示类似音频频谱的内容

最后,让我们显示波形数据。
就是标题图片中出现的那个。

使用AudioListener 的GetSpectrumData()

我以此作为实现的参考。 (谢谢)
我想在实际的智能手机上看到声音的频谱分析。

将通过GetSpectrumData()获取的音频样本分为512个频段用于UI显示。

AudioListener.GetSpectrumData(spectrumData, 0, FFTWindow.Hanning); var outputF = AudioSettings.outputSampleRate; // 初始化所有 bin for (int i=0; i <bins.Length; i++) { bins[i] = 0f; } var logMaxF = Mathf.Log(graphMaxFrequency); // 上のbinの周波数のlog var logMinF = Mathf.Log(graphMinFrequency); var logRange = logMaxF - logMinF; if (logRange <= 0f) { logRange = 8f; } // まず周波数分類 for (int i=0; i<spectrumData.Length; i++) { var f = outputF * 0.5f * (float)i / (float)spectrumData.Length; if (f == 0f) { f = float.Epsilon; } // 対数を取ってどのビンに入るか確定 float binValue = (float)bins.Length * (Mathf.Log(f) - logMinF) / logRange; int binIndex = Mathf.FloorToInt(binValue); if ((binIndex > = 0) && (binIndex < bins.Length)) { // 将数据添加到该 bin bins[binIndex] += SpectrumData[i] } }

创建一个基础预制件以显示在每个块中。
UI.Image 宽度:3,高度:0。
从屏幕左侧按顺序排列它们,并根据值的大小设置高度。

// 反映在柱上 for(int i=0; i

现在,当您播放音频时,波形数据将像这样显示。

概括

我尝试了一堆音频过滤器。
合唱效果不太好(泪)
我觉得除了混响和低通之外很难使用其他东西。
Unity一个Audio Mixer ,所以如果你想进行更详细的设置,你可能需要使用它。
说实话,我认为这不是一个适合业余爱好者涉足的领域,
但今天的故事就到此为止。

这次,我将其上传到Git。
我希望这会对您有所帮助。
统一示例

此外,使用的音频数据来自以下来源。
OtoLogic 佐本
之森

最后

我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
SEKARAKU 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

谢谢。

如果您觉得这篇文章有帮助,请点赞!
1
加载中...
1 票,平均:1.00 / 11
864
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

松山贤章

他长期在一家游戏开发公司工作,从事程序和项目管理工作。
2019年加入超越株式会社。
在横滨办事处工作。 主要负责服务器端开发工作的项目管理。
(有时编程)我的爱好是骑自行车(公路赛车)和观看赛马。