如何分离基于不同扬声器的audio文件

我有一堆关于电话交谈的audio文件。 我想尝试将audio文件分成两个,每个只包含一个发言者的发言。 也许我需要使用言语diarization。 但是我怎么能这样做呢? 任何人都可以给我一些线索? 谢谢。 ps:Linux OS.C / C ++

虽然分离个别扬声器是一个相当困难的问题,您可以自动分割音频暂停。 这将产生一系列可能更容易管理的文件,因为演讲者经常在暂停之间切换。

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

这里是网站: 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 
  • 获得-b -n平衡并将音频规格化到给定的水平

  • compand压缩(在这种情况下)基于参数的音频

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

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


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

是的,diarization是你想要的。

有几个工具你可以看,都是GPL。 一个是LIUM spkdiarization (Java),另一个是SHUTUTkit (C ++)。 LIUM是有据可查的,旁边有一个脚本,SHOUT有点神秘,所以你应该遵循作者在这里发布的指示。

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