Audio 实时声音路由…用另一个声音触发一个声音

Audio 实时声音路由…用另一个声音触发一个声音,audio,wav,sampling,dictation,Audio,Wav,Sampling,Dictation,我正在寻找一个程序,能够识别个人音频样本从我的电脑,并重新路由他们触发WAV文件从图书馆。在我的项目中,它需要是实时的,因为延迟不是期望的结果。我试着用听写软件来识别单词来触发打开一个文件,这就是我想去的方向,但我希望它不是单词而是声音,而且是实时发生的。我不知道该去哪里,我只是想寻求一些指导。有人对我应该做什么有什么建议吗?这是一个相当广泛的问题,但我可以告诉你我将如何做。(这不是唯一的办法,但我会从那里开始。) 如果您正在寻找实时输入,Java声音库(优秀教程)允许您这样做。(请注意,由于主

我正在寻找一个程序,能够识别个人音频样本从我的电脑,并重新路由他们触发WAV文件从图书馆。在我的项目中,它需要是实时的,因为延迟不是期望的结果。我试着用听写软件来识别单词来触发打开一个文件,这就是我想去的方向,但我希望它不是单词而是声音,而且是实时发生的。我不知道该去哪里,我只是想寻求一些指导。有人对我应该做什么有什么建议吗?

这是一个相当广泛的问题,但我可以告诉你我将如何做。(这不是唯一的办法,但我会从那里开始。)

如果您正在寻找实时输入,Java声音库(优秀教程)允许您这样做。(请注意,由于主要的安全问题,从网页输入麦克风在任何情况下都很困难,因此这将是一个桌面应用程序。)

如果它需要实时,我建议的第一件事就是流和多线程。我建议使用Java8流API,但由于您正在寻找与特定模式匹配的子样本,因此每个数据点都必须了解其相邻数据点的状态,这对于流来说并不容易

您可能想知道声音是否大致类似于音频配置文件,因此,我会选择一个公差,以确定您希望匹配的距离(请记住,样本可能不会100%对齐,因此“精确”不是选项),然后查找。我之所以推荐这些,是因为它们是语音识别软件通常使用的,虽然你的声音可能不是声音,但它会让你了解已经做了什么

您还需要在内存中维护有限的音频样本列表。具体来说,您可能需要最新的数据,因为音频信号是时变信号,您无法从一个点获得匹配。我不会让它比你想要识别的最长的样本长太多,因为音频占用了大量内存

最后(对于音频),我建议选择一种标准格式进行比较。让它尽可能好地为你带来好的结果,并从高起点开始。在比较之前,您需要将所有内容转换为该格式

一旦你识别出一个特定的声音,它基本上就是一个命令模式。即使使用
java.util.HashMap
,也可以将特定的声音映射到特定的文件,这些文件(如果足够少的话)甚至可以预先加载

最后,值得一看。它不是JDK的一部分,而且已经过时了,但是您可能会从它的实现中得到一些好的建议

这当然是一个喜欢Java的程序员的建议,但我想Python和Ruby中可能也有一些不错的库可以帮助您;当然,C语言中的某些东西。这听起来可能很多,但大部分内容已经实现并准备就绪

希望这有帮助,让我们期待其他答案