7

我有一堆关于电话交谈的音频文件。我想尝试将一个音频文件分成两个,每个只包含一个演讲者的讲话。也许我需要使用语音分类。但我该怎么做呢?有人可以给我一些线索吗?谢谢你。ps:Linux OS.C/C++

4

2 回答 2

3

虽然分离单个扬声器是一个相当困难的问题,但您可以在有停顿的地方自动分割音频。这将产生一系列可能更容易管理的文件,因为发言者经常在停顿之间交替。

这种方法需要开源 Julius 语音识别解码器包。这在许多 Linux 软件包存储库中都可用。我使用 Ubuntu 多元宇宙存储库。

这是网站:http: //julius.sourceforge.jp/en_index.php


第 0 步:安装 Julius

sudo apt-get install julius

第 1 步:分段音频

adintool -in file -out file -filename myRecording.wav -startid 0 -freq 44100 -lv 2048 -zc 30 -headmargin 600 -tailmargin 600
  • -startid是将附加到文件名的起始段号

  • -freq是源音频文件的采样率

  • -lv是语音检测将处于活动状态的音频级别

  • -zc是语音检测将处于活动状态的零交叉

  • -headmargin-tailmargin是每个音频段之前和之后的静音量

请注意 -lv 和 -zc 必须针对您的特定录音属性进行调整,而 -headmargin 和 -tailmargin 必须针对您特定扬声器的风格进行调整。但是上面给出的值对于我过去的录音效果很好。

这是文档:http: //julius.sourceforge.jp/juliusbook/en/adintool.html


根据我的经验,使用压缩和标准化对音频进行预处理可以提供更好的结果,并且需要较少的 Julius 参数调整。这些初始步骤是推荐的,但不是必需的。

这种方法需要开源 SoX 音频工具包。这在许多 Linux 软件包存储库中也可用。我使用 Ubuntu 宇宙存储库。

这是网站:http ://sox.sourceforge.net


步骤-2:安装 SoX

sudo apt-get install sox

步骤-1:预处理音频

sox myOriginalRecording.wav myRecording.wav gain -b -n -8 compand 0.2,0.6 4:-48,-32,-24 0 -64 0.2 gain -b -n -2
  • gain -b -n平衡音频并将其标准化到给定级别

  • compand根据参数压缩(在这种情况下)音频

请注意,compand 可能需要一些时间才能完全理解参数。但是上面给出的值对于我过去的录音效果很好。

这是文档:http ://sox.sourceforge.net/sox.html


虽然这不会让您识别每个扬声器,但它将大大简化通过耳朵进行的任务,这可能最终成为一段时间内的唯一选择。但我确实希望你能找到实用的解决方案,如果它已经可用的话。

于 2012-10-18T21:42:07.900 回答
3

是的,日记是你想要的。

您可以查看几个工具,它们都是 GPL。一个是LIUM spkdiarization (Java),另一个是SHoUT toolkit (C++)。LIUM 有很好的文档,旁边有一个脚本,ShOUT 有点神秘,所以你应该按照作者在此处发布的说明进行操作。

虽然我可能有点晚了。;)

于 2013-06-09T09:18:20.747 回答