戴尔Streak被发现有一个调频收音机,它有非常粗略的控制。默认情况下“扫描”不可用,所以我的问题是有没有人知道如何使用Android上的Java,当我们在检测白噪声(或良好信号)的频率范围内迭代时,可能会“收听”FM收音机,以便像普通无线电的寻找功能一样行动吗?
答案 0 :(得分:16)
我已经在这个特定区域做了一些实际的工作,我建议(如果你有一点时间的话)在尝试fft'ing之前尝试一些实验。 pcm流可以非常复杂和巧妙地解释(根据高质量的过滤和重新采样),但实际上也可以作为摆动线的路径用于许多目的。
白噪声是不可预测的线条震动,它在强度上永远不会相当连续(rms,绝对平均值......)声学内容是反复出现的扭曲和偶尔的惊喜(跳跃,跳跃):]
可以通过在pcm流的运行窗口上执行快速计算来估计信号内容之类的非噪声。
例如,与非噪声相比,噪声对其导数的绝对积分的强烈倾向性更大。我认为这是说这个的学术方式:
loop(n+1 to n.length)
{ sumd0+= abs(pcm[n]);
sumd1+= abs(pcm[n]-pcm[n-1]);
}
wNoiseRatio = ?0.8; //quite easily discovered, bit tricky to calculate.
if((sumd1/sumd0)<wNoiseRatio)
{ /*not like noise*/ }
此外,超过~16到30个白噪声样本的运行绝对平均值往往比白噪声变化小于声学信号:
loop(n+24 to n.length-16)
{ runAbsAve1 += abs(pcm[n]) - abs(pcm[n-24]); }
loop(n+24+16 to n.length)
{ runAbsAve2 += abs(pcm[n]) - abs(pcm[n-24]); }
unusualDif= 5; //a factor. tighter values for longer measures.
if(abs(runAbsAve1-runAbsAve2)>(runAbsAve1+runAbsAve2)/(2*unusualDif))
{ /*not like noise*/ }
这涉及白噪声如何在足够大的跨度上非零散地平均其熵。声学内容是零星的(局部功率)和重复的(重复功率)。 简单测试对较低频率的声学内容作出反应,并可能被高频内容淹没。有一些简单的应用低通滤波器可以提供帮助(毫无疑问是其他适应)。
此外,均方根可以除以平均绝对和,提供另一个应该特别适用于白噪声的比率,尽管我现在无法计算它是什么。信号导数的比率也会有所不同。
我认为这些是噪音的简单公式签名。我相信还有更多...... 对不起,不是更具体,它是模糊和不精确的建议,但对fft的输出执行简单测试也是如此。为了更好地解释和更多的想法,也许可以查看维基百科等上的熵和随机性的统计和随机(?)测量。
答案 1 :(得分:15)
使用快速傅立叶变换。
这是你可以使用快速傅立叶变换的方法。它分析信号并确定各种频率的信号强度。如果FFT曲线完全出现尖峰,则表明该信号不仅仅是白噪声。
答案 2 :(得分:7)
如果你没有可用的FFT工具,那就是一个疯狂的建议:
尝试压缩几毫秒的音频。
噪声的一个典型特征是压缩比信号清晰得多。
答案 3 :(得分:5)
据我所知,Android SDK中的FM收音机没有API甚至驱动程序,除非戴尔发布一个,否则你将不得不推出自己的。实际上甚至比这更糟糕。所有(?)新chipsets都有FM广播,但not all phones有FM Radio application。
旧的Windows Mobile具有相同的problem。
答案 4 :(得分:3)
对于白噪声检测,您需要进行FFT并发现它具有或多或少连续的频谱。但是从FM录制可能是个问题。
答案 5 :(得分:2)
只需高通滤波就可以提供一个好主意,并且有时会用于静音fm无线电。
请注意,这与衍生建议的结果相当 - 采用衍生工具是一种简单形式的高通滤波器,并采用粗略的测量功率方法的绝对值。
答案 6 :(得分:1)
您是否订阅了IEEE Xplore库?在这个主题上有无数的论文(one随机挑选)。
一种非常简单的方法是观察力量spectral density的“平坦度”。人们可以通过在时域中使用Fast Fourier Transform信号来找到频谱密度的standard deviation。如果低于某个阈值,则会产生白噪声。
答案 7 :(得分:0)
这里的主要问题是:您可以访问哪种类型的信号?
我敢打赌,你无法直接访问模拟EM信号。因此,不可能在此信号上使用FFT。您也不能尝试构建phased-lock loop,这是您的标准旧收音机调谐器的工作方式(在您的情况下为“扫描”)。
你唯一的选择确实是选择一个频率并听它(并尝试用声音上的FFT检测它的噪音)。您甚至可能只能访问FFTed信号。
此处出现问题:如果您想使用白噪声检测潜在频率,您将很容易接收信号。
无论如何,我将尝试使用此策略:
双倍整合autocorrelation的spectral density超过一秒的音频。这适用于每个频率。
然后查找此频率最大的FM频率。
这里的解释很少:
同样要小心归一化积分:大声的白噪声信号不应该得到比清晰但低音频信号更高的分数。
答案 8 :(得分:0)
有些人提到了你想要做的FFT,但是要检测白噪声,你需要确保音频在音频范围内相对恒定。你只想看看震级,你可以扔掉各个阶段。您可以计算O(N)时间内的幅度的平均值和标准差。对于白噪声,您应该发现标准偏差是平均值的一小部分。如果我记得我的统计数据是正确的,它应该是平均值的1 / sqrt(N)。