25

我有 15 盘录音带,我相信其中的一盘是我祖母和我谈话的旧录音。快速尝试找到合适的地方并没有成功。我不想听 20 个小时的磁带才能找到它。该位置可能不在其中一个磁带的开头。大多数内容似乎分为三类——按总长度、最长的顺序排列:静音、语音广播和音乐。

我打算把所有的磁带都转换成数字格式,然后再找录音。显而易见的方法是在我做其他事情时在后台播放它们。这对我来说太简单了,所以:是否有任何开源库或其他代码可以让我找到,以增加复杂性和实用性:

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

我的偏好是 Python、Java 或 C。

失败的答案,关于搜索词的提示将不胜感激,因为我对该领域一无所知。

我知道我可以轻松地在这上面花费 20 多个小时。

4

8 回答 8

14

您可能大部分时间为您节省的是扬声器分类。这是通过使用扬声器 ID 对录音进行注释来实现的,然后您可以轻松地将其手动映射到真实的人。错误率通常在记录长度的 10-15% 左右,这听起来很糟糕,但这包括检测到过多的说话者并将两个 ID 映射到同一个人,这并不难修复。

SHoUT toolkit (C++)就是这样一个很好的工具,尽管它对输入格式有点挑剔。请参阅作者的此工具的用法。它输出语音/语音活动检测元数据和说话者分类,这意味着您可以获得第 1 点和第 2 点 (VAD/SAD) 以及一些额外的信息,因为它会注释同一说话者何时在录音中处于活动状态。

另一个有用的工具是LIUM spkdiarization (Java),它的作用基本相同,只是我还没有投入足够的精力来弄清楚如何获取 VAD 元数据。它具有一个很好的即用型可下载包

通过一点点编译,这应该会在一个小时内完成。

于 2013-06-09T14:08:15.287 回答
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还包括预训练分类器,可用于将未知片段分类为语音或音乐。
于 2015-04-22T16:31:11.837 回答
5

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

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

  • 以数字形式获取您正常说话和祖母正常说话的典型录音,背景噪音尽可能少
    • 对目标录音中每秒左右的音频进行 FFT
    • 从您创建的 FFT 配置文件数组中,过滤掉低于某个平均能量阈值的任何内容,因为它们很可能是噪声
    • 通过平均未过滤的 FFT 快照来构建主 FFT 配置文件
    • 然后在数字化的目标音频上重复上面的 FFT 采样技术(20 小时的东西)
    • 标记目标音频文件中任何时间 FFT 快照索引与您和您的祖母交谈的主 FFT 配置文件相似的区域。您将需要使用相似性设置,以免出现太多误报。另请注意,您可能必须将 FFT 频率箱比较限制为仅在您的主 FFT 配置文件中具有能量的那些频率箱。否则,如果你和你祖母谈话的目标音频包含明显的背景噪音,它会甩掉你的相似度函数。
    • 列出时间索引以供人工检查

请注意,完成此项目的小时数很容易超过手动收听录音的 20 小时。但这将比磨练 20 小时的音频有趣得多,并且您可以在将来再次使用您构建的软件。

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

于 2011-04-22T18:40:11.030 回答
3

如果您熟悉 java,您可以尝试通过 minim 输入音频文件并计算一些 FFT 频谱。可以通过定义样本幅度的最小级别来检测静音(以排除噪声)。为了将语音与音乐分开,可以使用时间窗的 FFT 频谱。语音使用一些非常不同的频带,称为共振峰 - 特别是对于元音 - 音乐在频谱中分布更均匀。

您可能不会得到 100% 的语音/音乐块分离,但它应该足以标记文件并只听有趣的部分。

http://code.compartmental.net/tools/minim/

http://en.wikipedia.org/wiki/Formant

于 2011-04-22T18:39:30.000 回答
2

我之前写了一篇关于使用 Windows 语音识别的博客文章。我有一个关于在 C# 中将音频文件转换为文本的基本教程。你可以在这里查看

于 2011-04-22T18:42:20.870 回答
2

两个想法:

  • 查看“语音识别”字段,例如CMUSphinx
  • Audacity有一个可能有用的“截断沉默”工具。
于 2011-04-22T18:25:35.670 回答
0

我会从这里开始,

http://alize.univ-avignon.fr/

http://www-lium.univ-lemans.fr/diarization/doku.php/quick_start

codeblocks:: 对 gcc 有好处

于 2017-11-15T09:10:25.493 回答
-2

尝试大胆 + 以频谱图(logf)的形式查看轨道 + 训练你的眼睛(!)以识别语音。您将需要调整时间尺度和 FFT 窗口。

于 2013-02-18T20:13:58.557 回答