问题标签 [sampling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
478 浏览

audio - 低频声音采样

这个问题其实我之前也发过,但是没有人回答。可能我说的不够清楚,我换个说法:

如您所知,当您以特定采样率对信号进行采样时,任何高于采样率一半的频率都会出现混叠。为了避免这种情况,您需要将信号(以模拟形式,或以更高速率采样的数字形式)通过适当的低通滤波器。

现在,就我而言,我正在使用 Windows 的 waveIn 函数以一定的速率收集麦克风输入。由于 waveIn 函数似乎在我提供给它的任何采样率下工作,而不是在任意预定义的速率下工作,我真的不知道声卡是否实际上以该速率采样,或者它是否以预定义的速率采样并且系统“转换“按照我要求的价格。我也不在乎,其实...

我关心的是,当我以 8kHz 采样时,声卡或系统是否执行低通滤波(声卡上的模拟滤波器或数字滤波器,然后限制在某个最大采样率支持声卡),所以我的输入不会出现混叠频率。

或者,我应该以尽可能高的采样率进行采样并自己过滤掉频率?

0 投票
4 回答
7079 浏览

java - 如何将 .WAV 音频数据样本转换为双精度类型?

我正在开发一个处理音频数据的应用程序。我正在使用 java(我添加了 MP3SPI、Jlayer 和 Tritonus)。我将音频数据从 .wav 文件提取到字节数组。我正在使用的音频数据样本是 16 位立体声。

根据我读过的一个样本的格式是:

AABBCCDD

其中 AABB 表示左通道和 CCDD 右通道(每个通道 2 个字节)。我需要将此示例转换为双值类型。我已经阅读了有关数据格式的信息。Java 使用大端,.wav 文件使用小端。我有点困惑。你能帮我完成转换过程吗?谢谢大家

0 投票
3 回答
3753 浏览

c# - C# 实时音频分析中的时序

我正在尝试从 C# 中的实时音频中确定“每分钟节拍数”。不过,我检测到的不是音乐,只是持续不断的敲击声。我的问题是确定这些抽头之间的时间,因此我可以确定“每分钟抽头”我曾尝试使用 WaveIn.cs 类,但我并不真正了解它的采样方式。我一秒钟没有得到一定数量的样本来分析。我想我真的只是不知道如何在一秒钟内读取确切数量的样本来了解样本之间的时间。

任何帮助我朝着正确的方向前进将不胜感激。

0 投票
1 回答
2561 浏览

c# - C# DirectSound - 捕获缓冲区不连续

我正在尝试使用 DirectSound 从我的线路中捕获原始数据。

我的问题是,从一个缓冲区到另一个缓冲区的数据只是不一致的,例如,如果我捕获一个正弦波,我会看到我的上一个缓冲区和新缓冲区的跳跃。为了检测到这一点,我使用图形小部件来绘制最后一个缓冲区的前 500 个元素和新缓冲区的 500 个元素:

快照 http://img199.imageshack.us/img199/206/demodsnap.jpg

我以这种方式初始化了我的缓冲区:

我将通知设置为缓冲区的一半和末尾的通知:

这就是我处理事件的方式。

有什么建议吗?我确定我在事件处理的某个地方失败了,但我找不到哪里。

我使用 WaveIn API 开发了相同的应用程序,它运行良好。

非常感谢...

0 投票
1 回答
819 浏览

c++ - 选择概率与信任成正比的节点

有谁知道与选择项目相关的算法或数据结构,它们被选择的概率与某些附加值成正比?换句话说:http ://en.wikipedia.org/wiki/Sampling_%28statistics%29#Probability_proportional_to_size_sampling

这里的上下文是一个去中心化的信誉系统,因此附加价值是一个用户对另一个用户的信任价值。在这个系统中,所有节点要么作为完全信任的朋友开始,要么作为完全不信任的未知节点开始。这在大型 P2P 网络中本身并没有用,因为节点数量会比您拥有的朋友多得多,并且您需要知道在不是您直接朋友的大量用户中信任谁,所以我实现了一个动态信任系统,其中未知数可以通过朋友的朋友关系获得信任。

每隔一段时间,每个用户都会选择一个固定数量的目标节点(为了速度和带宽),以根据另一个选定的固定数量的中间节点对他们的信任程度来重新计算他​​们的信任。选择目标节点进行重新计算的概率将与其当前信任成反比,因此未知数很有可能变得更好。中间节点将以相同的方式被选择,除了中间节点的选择概率与其当前信任成正比。

我自己编写了一个简单的解决方案,但是速度很慢,我想找到一个 C++ 库来为我处理这方面的问题。我当然已经完成了自己的搜索,并且我设法找到了我现在正在挖掘的 TRSL。由于这似乎是一个相当简单且可能很常见的问题,我希望有更多的 C++ 库可供我使用,所以我提出这个问题是希望这里有人可以对此有所了解。

0 投票
1 回答
440 浏览

image - 从图像中获取良好的像素样本

假设我有一个大图像,大约 90% 的绿色像素、9% 的蓝色像素和 1% 的棕色像素。我想从大约 2000,000 像素的整个图像中获取只有 100 个像素的样本。

我不希望样本包含相对于它们在原始图像中的频率的像素,而是它应该具有相同数量的绿色、蓝色和棕色像素。

我在每种颜色之后都使用 -ish,因为像素具有不同的值,如果我知道每个图像的颜色,这也很容易做到,每个图像都有不同的颜色组,所以我需要想出一个通用的方法来做到这一点不取决于我指定图像的颜色。

0 投票
4 回答
130 浏览

python - 根据值对键进行采样

我在 python 中有一个字典,key->value as str->int。如果我必须根据自己的值选择一个键,那么随着值变大,该键被选择的可能性就会降低。

例如,如果key1=2key2->1,那么 的态度key1应该是2:1

我怎样才能做到这一点?

0 投票
4 回答
1573 浏览

c++ - 将大型多样本音频文件加载到内存中进行播放 - 如何避免临时冻结

我正在编写一个需要使用大型音频多样本的应用程序,通常大小约为 50 mb。一个文件包含大约 80 个单独的短录音,我的应用程序可以随时播放这些录音。出于这个原因,所有的音频数据都被加载到内存中以便快速访问。

但是,当加载其中一个文件时,可能需要几秒钟才能放入内存,这意味着我的程序如果暂时冻结。有什么好的方法可以避免这种情况发生?它必须与 Windows 和 OS X 兼容。它冻结在此:myMultiSampleClass->open();必须执行大量动态内存分配并使用 ifstream 从文件中读取。

我想到了两种可能的选择:

  1. 打开文件并将其加载到另一个线程的内存中,这样我的应用程序进程就不会冻结。我已经研究了 Boost 库来做到这一点,但在我准备好实施之前需要做很多阅读。我需要做的就是在线程中调用 open() 函数,然后销毁线程。

  2. 想出一个方案来确保我不会在任何时候将整个文件加载到内存中,我只是动态加载可以这么说。问题是任何样本都可能随时被触发。我知道其他一些软件有这种系统,但我不确定它是如何工作的。这在很大程度上取决于个人计算机的规格,它可以在我的计算机上运行良好,但硬盘/内存速度较慢的人可能会得到非常糟糕的结果。我的一个想法是将每个音频记录的 x 个样本加载到内存中,然后如果我需要播放,开始播放已经存在的样本,同时将其余音频加载到内存中。

有什么想法或批评吗?提前致谢 :-)

0 投票
1 回答
5923 浏览

android - 在 Android 上实时更改曲目的播放速率

我想知道是否有人知道实时更改曲目播放速率的库。我的想法是加载曲目并将其播放速率更改为一半或两倍。首先,我尝试了 MusicPlayer,但根本不可能,然后我尝试了 SoundPool。问题是使用 SoundPool 加载曲目后,我无法更改速率。这是我正在使用的代码(概念证明):

当我按下按钮时,播放速率应该会增加,但不会发生。知道如何实时更改费率吗?

提前致谢。

0 投票
2 回答
465 浏览

python - 估计任意分布数据的边界

我有二维离散空间数据。我想对这些数据的空间边界进行近似,这样我就可以生成一个带有另一个数据集的图。

理想情况下,这将是 matplotlib 可以使用 plt.Polygon() 补丁绘制的一组有序 (x,y) 点。

我最初的尝试非常不优雅:我在数据上放置了一个精细的网格,并且在单元格中找到数据的地方,从该单元格创建了一个方形 matplotlib 补丁。因此,边界的分辨率取决于网格的采样频率。这是一个示例,其中灰色区域是包含数据的单元格,黑色区域是不存在数据的单元格。

第一次尝试 http://astro.dur.ac.uk/~dmurphy/data_limits.png

好的,问题解决了——为什么我还在这里?嗯....我想要一个更“优雅”的解决方案,或者至少一个更快的解决方案(即。我不想继续“真正的”工作,我想从中获得一些乐趣!)。我能想到的最好方法是光线追踪方法 - 例如:

  1. 从 xmin 到 xmax,在 y=ymin,检查数据边界是否在间隔 dx 中交叉
  2. y=ymin+dy,做 1
  3. 做 1-2,但现在在 y 中采样

另一种方法是定义一个中心,并在 r-theta 空间中采样 - 即 dtheta 增量中的径向辐条。

两者都会产生一组(x,y)点,但是我如何排序/链接相邻点以创建边界?

最近邻方法是不合适的,例如(借用地理),地峡(想想连接 N&S America 的巴拿马)然后可以关闭和隔离区域。这也可能无法很好地处理数据中看到的漏洞,我想将其表示为不同的 plt.Polygon。

解决方案可能来自解决面积最大化问题。对于定义数据限制的一组点,这些点中包含的最大连续区域是多少为了形成封闭区域,第 n 个点的相邻点是多少?在这个方案中将如何处理这些漏洞 - 现在这是否会导致拓扑错误?

抱歉,这大部分是我大声思考的。对于一些提示、建议或解决方案,我将不胜感激。我怀疑这是许多解决方案技术经常研究的问题,但我正在寻找一些简单的代码和快速运行的东西......我想每个人都是,真的!

~~~~~~~~~~~~~~~~~~~~~~~~~

好的,这是使用 Mark 的凸包概念的尝试 #2: 替代文本 http://astro.dur.ac.uk/~dmurphy/data_limitsv2.png

为此,我使用了 qhull 包中的 qconvex,让它返回极端顶点。对于那些感兴趣的人:

猫 [数据] | qconvex Fx > out

周边的采样似乎很低,虽然我没有玩太多设置,但我不相信我可以提高保真度。