我正在寻找能够从我的计算机中识别单个音频样本并重新路由它们从库中触发WAV文件的程序。在我的项目中,这将是实时的,因为延迟不是理想的结果。我尝试使用可以识别单词来触发单词的命令软件,这就是我想去的方向,但是我希望它是听起来的,而是实时发生。我不确定要去哪里,只是在寻找一些指导。有人对我该怎么办有任何建议吗?
这是一个相当广泛的问题,但是我可以告诉您我将如何做。(几乎不是唯一的方法,但是我会从哪里开始。)
如果您正在寻找实时输入,则Java声音库(在此处出色的教程)允许这样做。(请注意,由于主要的安全问题,网页上的麦克风输入很困难,因此这将是一个桌面应用程序。)
如果需要实时,我建议的第一件事是流和多线程。我建议使用Java 8流API,但是由于您正在寻找与特定模式匹配的子样本,因此每个数据点必须意识到其邻居的状态,而对于流的情况,这并不容易。p>您可能想知道听起来是否大致类似于音频配置文件,因此,我会选择耐心的耐心(请记住,记住样品可能不会排成100%。,因此"精确"不是一个选择),然后查找隐藏的马尔可夫模型。我建议这些是因为它们通常使用语音识别软件,而您的声音可能不是声音,但它会使您了解已经完成的事情。
您还需要在内存中维护有限的音频示例列表。具体来说,您可能需要最新的数据,因为音频信号是一个时间变化的信号,并且您无法从一分点获得匹配。我不会比您想要识别的最长样本更长的时间,因为音频占用了一系列记忆。
最后(对于音频),我建议选择一种标准格式进行比较。使其与获得体面的结果一样好,然后开始高。在比较之前,您将需要将所有内容转换为该格式。
一旦识别出特定的声音,它基本上就是命令模式。即使使用java.util.HashMap
,也可以将特定的声音映射到特定文件,该文件(如果有足够的话)您甚至可以预先加载。
最后,值得一看的是Java演讲API。它不是JDK的一部分,而且已经过时了,但是您可能会从其实施中获得一些很好的建议。
这当然是Java偏爱程序员的建议,但我想,Python和Ruby中可能会有一些不错的图书馆来帮助您;当然,在某个地方有一些东西。这听起来可能很多,但是大多数材料已经实现和即可。
希望这会有所帮助,让我们期待其他答案。