我有一堆关于电话交谈的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有点神秘,所以你应该遵循作者在这里发布的指示。
虽然我可能有点晚了。 ;)