gpt4 book ai didi

android - 为什么我的白噪声有跳动/爆音/咩咩声?

转载 作者:行者123 更新时间:2023-11-29 18:17:53 30 4
gpt4 key购买 nike

我的 Android 应用程序正在尝试生成白噪声以在 Android 设备上播放。目前,我正在生成一个随机数数组,它是 AudioTrack.getMinBufferSize(...) 短裤,并在计时器中循环。它看起来像这样:

    INTERVAL_MILLISECONDS = (int)((double)(bufSize) / (double)(nativeSampleRate * 2) * 1000);

timer.scheduleAtFixedRate( new TimerTask() {

public void run() {
synchronized(this){
//System.out.println("playing. Sample rate is + " + nativeSampleRate + ", buffer is " + data.length + " shorts long, interval is " + INTERVAL_MILLISECONDS);
track.write(data, 0, bufSize);
track.play();
}
}

}, 0, INTERVAL_MILLISECONDS);

但是当我在我的 android 模拟器上收听它时,我听到了白噪声以及一种很难描述的非常快速的“跳动”或“咩咩”节奏。我不是音响工程师,有人可以为我指明正确的方向,说明为什么会这样吗?

********* ***** 更新 ********* ***我只是做了几个变体,一个是我确保我的样本量是整数毫秒长,另一个是我将我的样本量设为整整一秒长。

样本大小为 8820(5 毫秒长,但仍超过最小值 8192),跳动没有变化。

但是,样本量为 44100(整秒)时,跳动消失了。有没有可能我使用的计时器在小间隔内不准确?

最佳答案

问题似乎出在您产生白噪声的方式上。我不知道关于在 android 上编程的第一件事,但如果我正确理解这个问题,你正在创建一个缓冲区的随机数据值(value),然后一遍又一遍地循环。

问题(正如您的更新指出的那样)是这个单个缓冲区每秒重复几次。这意味着它不再是“白”(即完全随机的)噪声。变成周期性的了

您的大脑非常擅长识别周期性波形,因此您会听到这种跳动。这是你的大脑告诉你除了白噪声之外还有其他事情正在发生。在这里,您在 5.38Hz 附近引入了一个强大的分量,在调制其余音频时,您将其解释为“跳动”效果。

当您增加缓冲区长度时,跳动消失(或降低到可感知以下),因为在 44100 个样本时您的大脑不再有足够的空间来锁定,因此无法识别序列是周期性的。低频信息仍然存在。

生成完美的白噪声 isn't as straightforward as you might think! .在您的情况下,我认为最好使噪声缓冲区尽可能长 - 当然取决于您正在构建的应用程序的上下文。

关于android - 为什么我的白噪声有跳动/爆音/咩咩声?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194189/

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