1

有什么方法可以在播放之前处理进入扬声器输入的声波?我想更改不同频率的分贝值。谢谢

4

2 回答 2

1

这取决于您要应用什么样的效果。您可以使用SoundPool.setRate 来简单地更改音高。如果您想获得更复杂的效果,请考虑使用AudioEffect

我想更改不同频率的分贝值。

这正是均衡器效果所做的。您可以使用Equalizer.getBand检索所需频率的频段,然后使用Equalizer.setBandLevel更改其级别。

于 2012-10-26T11:58:06.177 回答
0

如果你的意思是在数模转换之前,那么不,你不能从应用程序中做到这一点。您可以做的是在将音频写入您的 AudioTrack 实例之前处理音频,或者按照 Andrei 的建议使用 AudioEffect。在这两种情况下,音频在到达 DAC 之前仍可能会通过平台音频 DSP 中的附加滤波器(例如,多频带压缩、峰值限制、均衡以补偿所使用的特定扬声器组件等)。

在我看来,您想修改频域中的音频信号,因此您可以查看例如FFTW,它具有 C 接口和 Java 包装器,因此您可以从本机代码和 Java 中使用它代码取决于你觉得最舒服的。我自己从未使用过它,所以我无法提供有关如何将其集成到 Android 项目中的任何信息。

于 2012-10-26T14:36:05.520 回答