用于语音检测和鉴别的开源代码

Cro*_*han 24 speech-recognition speech

我有15个录音带,其中一个我认为包含了我祖母和我自己说话的旧录音.寻找合适地点的快速尝试并未将其提升.我不想听20个小时的磁带来找到它.该位置可能不在其中一个磁带的开头.大多数内容似乎分为三类 - 按总长度排列,最长的是:静音,语音广播和音乐.

我计划将所有磁带转换为数字格式,然后再次查看录制内容.显而易见的方法是在我做其他事情时在后台播放它们.这对我来说太简单了,所以:是否有任何开源库或其他代码可以让我找到,以便提高复杂性和实用性:

  1. 非沉默区域
  2. 包含人类语音的区域
  3. 包含我自己演讲的地区(和我祖母的演讲)

我更喜欢Python,Java或C.

由于我对该领域一无所知,因此未能得到答案,关于搜索词的提示将受到赞赏.

据我所知,我可以轻松地花20多个小时.

hru*_*ske 14

你大部分时间可以节省的是演讲者的日记.这可以通过使用扬声器ID注释录音,然后您可以轻松地手动映射到真实的人.错误率通常约为记录长度的10-15%,这听起来很糟糕,但这包括检测太多扬声器并将两个ID映射到同一个人,这并不难以修复.

一个这样的好工具是SHoUT工具包(C++),尽管它对输入格式有点挑剔.请参阅作者对此工具的用法.它输出语音/语音活动检测元数据和扬声器分类,这意味着你得到第一和第二点(VAD/SAD)和一点额外,因为它注释何时在录音中活跃的同一个扬声器.

另一个有用的工具是LIUM spkdiarization(Java),它基本上也是这样做的,除了我还没有花足够的精力来计算如何获取VAD元数据.它具有一个很好的可随时使用的可下载包.

通过一些编译,这应该在一个小时内完成.


Rob*_*ler 5

最好的选择是找到一个开源模块,进行语音识别或说话人识别(不是语音识别).说话者识别用于识别特定说话者,而语音识别用于将说出的音频转换为文本.可能有开源扬声器识别包,您可以尝试搜索SourceForge.net之类的"说话人识别"或"语音和生物识别".由于我自己没有使用过,我不能推荐任何东西.

如果你找不到任何东西,但是你有兴趣推出自己的一个,那么有很多开源FFT库适用于任何流行的语言.该技术将是:

  • 得到一个典型的录音,你正常说话,你的祖母通常以数字形式说话,尽可能少的背景噪音
    • 在目标录音中进行每秒音频的FFT
    • 根据您创建的FFT配置文件阵列,滤除低于某个平均能量阈值的任何值,因为它们很可能是噪声
    • 通过平均未滤波的FFT快照来构建主FFT配置文件
    • 然后在数字化的目标音频上重复上面的FFT采样技术(20小时的东西)
    • 标记目标音频文件中的任何区域,其中任何时间的FFT快照索引与您和您的祖母说话的主FFT配置文件类似.您需要使用相似性设置,这样您就不会得到太多的误报.另请注意,您可能必须将FFT频率仓比较仅限制在主FFT配置文件中具有能量的那些频率仓.否则,如果您和您祖母的目标音频包含明显的背景噪音,它将会失去您的相似功能.
    • 为手动检查列出时间指数列表

请注意,完成此项目的小时数可能很容易超过手动收听录音的20小时.但它比研磨20小时的音频更有趣,你可以使用你将来再次构建的软件.

当然,如果音频从隐私角度来看不敏感,您可以将音频试听任务外包给亚马逊的机械特克.

  • 感谢您的搜索词 - MARF有一个说话人识别模块http://marf.sourceforge.net/ (2认同)

小智 5

您也可以尝试pyAudioAnalysis以:

  1. 静音消除:

from pyAudioAnalysis import audioBasicIO as aIO from pyAudioAnalysis import audioSegmentation as aS [Fs, x] = aIO.readAudioFile("data/recording1.wav") segments = aS.silenceRemoval(x, Fs, 0.020, 0.020, smoothWindow = 1.0, Weight = 0.3, plot = True)

segments 包含非沉默片段的端点。

  1. 分类:语音与音乐辨别:pyAudioAnalysis还包括预训练的分类器,可用于将未知片段分类为语音或音乐。


And*_*ahl 2

两个想法:

  • 查看“语音识别”字段,例如CMUSphinx
  • Audacity有一个可能有用的“截断沉默”工具。