声音样本识别库/代码

14
我不想要声音转文字的软件。我需要以下内容:
  • 我将记录多个(比如50个以上)音频流(广播电台的录音)
  • 从这些记录中,我会标记有趣的音频片段——它们的长度从2到60秒不等——会有几千个这样的音频片段
  • 库应该能够从记录的声音流中找到同一音频片段的其他实例
  • 置信因子应该向用户报告,并提供额外的输入,以便下次识别表现更好

您知道有这种软件库吗?LGPL对我最有价值,但我也可以选择商业许可证。

音频剪辑将包含音乐、文本、效果或其任何组合。所以,文本识别是不可能的。

架构:c ++,C#用于粘合剂,如果可能的话使用CUDA。


1
音频片段中是否包含语音、声音、音乐或者它们的组合? - mdma
2
你有特定的编程语言或处理器架构吗? - Tim Kryger
顺便说一下,经过两年的开发,我创建了自己的实现,并可用于商业开发 :) http://www.videophill.com/index.php?page=playkontrol - Daniel Mošmondor
数据库连接失败,位于videophill.com/index.php?page=playkontrol @DanielMošmondor。 - StockB
MIT 许可的 Python 库在这里:https://github.com/worldveil/dejavu - lollercoaster
6个回答

9

你的第一个建议看起来很有前途,我知道Picard,但我不确定它是否适用于“从流中采样检测”。 - Daniel Mošmondor

7
你所描述的是一种匹配滤波器,你只需要一个互相关函数,这应该是任何合理的DSP库的一部分。根据你选择的处理器架构和语言,你甚至可以找到一个向量化的库,可以更有效地执行此操作。
如果你不真正关心性能,你可以使用Python...
$ python
Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import scipy
>>> interesting_clip = [ 5, 7, 2, 1]
>>> full_stream = [ 1, 5, 7, 2, 1, 4, 3, 2, 4, 7, 1, 2, 2, 5, 1]
>>> correlation = scipy.correlate (full_stream, interesting_clip)
>>> print correlation
[56 79 55 28 41 49 44 53 73 48 28 35]
>>> for offset, value in enumerate(correlation) :
...     if (value > 60) :
...         print "match at position", offset, "with value of", value
... 
match at position 1 with value of 79
match at position 8 with value of 73

我的阈值是随意设定的,你需要通过实验来确定适合你的阈值。

请记住,你的“有趣片段”越长,计算相关性所需的时间就越长。虽然较长的片段可以更好地突出实际匹配与非匹配,但你可能不需要超过几秒钟。


1
好的,相关性似乎足够好了,但是在什么特征空间中?你有什么建议吗? - Daniel Mošmondor

4
AudioDB是一个开源的C++项目,用于搜索相似的音频片段,处理嘈杂的流,并可以给出相似度的度量。它可以作为客户端/服务器运行,但我相信您也可以运行独立程序。
其他关于dsp相关性的答案有点正确,但通常这些dsp算法希望比较两个长度相同、具有相似重叠部分的流。
而你需要的是对流的任意片段进行处理;这就是AudioDB的用途之一。其中一个应用是查找隐藏的引用/采样或明显的版权侵犯。我使用它来查找倒放播放的声音,它还可以找到引入了某些噪声或语音变化的情况。
请注意,即使主页上的日期似乎不对,它仍在开发中。我建议您订阅邮件列表并询问当前状态以及如何将其纳入您的工作中。

3

您可能想查看Li-Chun Wang的这篇论文,其中涉及到www.shazam.com

虽然它不是一个API,但它确实提供了有关其算法开发的详细信息。


0

请看一下 Microsoft Speech API (SAPI):
http://msdn.microsoft.com/en-us/library/ee125077%28VS.85%29.aspx

你列出的所有其他要求基本上都是你自己要实现的实现细节。例如,当软件解释音频流时,它可以将其存储在带有全文索引的 SQL Server 中...从那里你可以进行搜索以找到类似/相同的音频剪辑。

当然还有其他实现方式,这只是其中的一个想法 :-)


既然我的问题明确表示我不需要声音-文本识别,因为我对查找铃声或其他类型的声音没有用处,所以我必须在这个问题上给你-1分。 - Daniel Mošmondor

0

我会倾向于 Tim Kryger 的回答,使用简单的统计相关函数,因为您希望保持内容不可知。

至于特征,我肯定会尝试使用 MFCC,因为它既用于语音处理又用于音乐识别(流派、歌曲)。您可以在优秀的开源 Vamp 插件(或其更高级的捆绑软件,名为 Sonic Annotator)或者 Marsyas 框架中找到 MFCC 和大量其他音频特征。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接