3

我必须开发一个应用程序,我必须在其中使用麦克风收听声音。并且每当检测到烟雾警报声时,应用程序必须通知用户有火灾警报。为此,我正在考虑两种可能的解决方案

1 :) 使用 Speech To Text 识别器将烟雾警报声音转换为文本并存储该文本。并且在下一次收到烟雾警报声时,相同的 Speech To Text 识别器会将其转换为相关文本,如果该文本与存储的文本匹配,那么我认为它是警报声。

2:)存储报警声音,并通过比较波形将记录的声波与存储的声音匹配。这只是我的假设,因为我不是这些领域的专家。

到目前为止,我已经收集到这种声音匹配技术是通过audio fingerprinting即每个音频都有一个不同的指纹来完成的,如果我们能够匹配两个音频的指纹,那么它们被认为是相同的。

为此,我最近发现了以下链接

http://www.royvanrijn.com/blog/2010/06/creating-shazam-in-java/

http://masl.cis.gvsu.edu/2012/01/25/android-echoprint/

https://code.google.com/p/musicg/

这似乎更接近我的问题的解决方案。我仍在努力掌握所有这些,但大家的任何帮助都将受到广泛赞赏。

4

1 回答 1

1

我建议不要使用语音到文本,因为它不会将警报识别为句子/单词。

我的建议 - 阅读有关DFTFFT的信息。

这是我为images(2d dft)制作的 DFT 的一个小丑示例。您可以看到算法本身非常简单,但在 DFT 情况下它非常慢。对于 1d(声音),它应该足够快。

我有什么建议 - 获取声音数据,通过它运行 DFT/FFT,您将获得信号的频率。也许然后您可以检查高频范围是否足够强大以检测警报。

在您的情况下,我还将检查其他可能性,例如几秒钟的处理频率,看看它们是否与警报频率的近似值相匹配。

很好地阅读有关 FFT 及其背后的内容。

于 2014-05-14T06:37:30.887 回答