我有一堆关于电话交谈的音频文件。我想试着把一个音频文件分成两份,每份只包含一个说话人的讲话。也许我需要使用语音日记。但是我该怎么做呢?有人能给予我一些线索吗?谢谢。ps:Linux操作系统.C/C++
x4shl7ld1#
虽然分离单个扬声器是一个相当困难的问题,但你可以自动分割有停顿的音频。这将产生一系列文件,这可能更容易管理,因为扬声器经常在停顿之间交替。这种方法需要开源的Julius语音识别解码器包,这在许多Linux包库中都有,我使用的是Ubuntu multiverse库。这里是网站:http://julius.sourceforge.jp/en_index.php
sudo apt-get install julius
adintool -in file -out file -filename myRecording.wav -startid 0 -freq 44100 -lv 2048 -zc 30 -headmargin 600 -tailmargin 600
请注意,-lv和-zc必须根据您的特定音频记录的属性进行调整,而-headmargin和-tailmargin必须根据您的特定扬声器的风格进行调整。以下是文档:http://julius.sourceforge.jp/juliusbook/en/adintool.html根据我的经验,使用压缩和标准化预处理音频可以得到更好的结果,并且需要较少的Julius参数调整。这种方法需要开源的SoX音频工具包,这在很多Linux软件包库中都有,我使用的是Ubuntu universe库。这里是网站:http://sox.sourceforge.net
sudo apt-get install sox
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
注意compand可能需要一些时间来完全理解参数。但是上面给出的值在过去对我的语音录音效果很好。以下是文档:http://sox.sourceforge.net/sox.html虽然这不会让你识别出每一个说话者,但它会大大简化用耳朵听的任务,这可能在一段时间内是唯一的选择。但我希望你能找到切实可行的解决方案,如果它已经可用。
5jvtdoz22#
是的,日记化是你想要的。有几个工具可以参考,都是GPL的。一个是LIUM spkdiarization(Java),另一个是SHoUT toolkit(C++)。LIUM有很好的文档,旁边有一个脚本,SHoUT有点神秘,所以你应该按照作者发布的here的说明操作。虽然我可能来得有点晚。)
2条答案
按热度按时间x4shl7ld1#
虽然分离单个扬声器是一个相当困难的问题,但你可以自动分割有停顿的音频。这将产生一系列文件,这可能更容易管理,因为扬声器经常在停顿之间交替。
这种方法需要开源的Julius语音识别解码器包,这在许多Linux包库中都有,我使用的是Ubuntu multiverse库。
这里是网站:http://julius.sourceforge.jp/en_index.php
请注意,-lv和-zc必须根据您的特定音频记录的属性进行调整,而-headmargin和-tailmargin必须根据您的特定扬声器的风格进行调整。
以下是文档:http://julius.sourceforge.jp/juliusbook/en/adintool.html
根据我的经验,使用压缩和标准化预处理音频可以得到更好的结果,并且需要较少的Julius参数调整。
这种方法需要开源的SoX音频工具包,这在很多Linux软件包库中都有,我使用的是Ubuntu universe库。
这里是网站:http://sox.sourceforge.net
注意compand可能需要一些时间来完全理解参数。但是上面给出的值在过去对我的语音录音效果很好。
以下是文档:http://sox.sourceforge.net/sox.html
虽然这不会让你识别出每一个说话者,但它会大大简化用耳朵听的任务,这可能在一段时间内是唯一的选择。但我希望你能找到切实可行的解决方案,如果它已经可用。
5jvtdoz22#
是的,日记化是你想要的。
有几个工具可以参考,都是GPL的。一个是LIUM spkdiarization(Java),另一个是SHoUT toolkit(C++)。LIUM有很好的文档,旁边有一个脚本,SHoUT有点神秘,所以你应该按照作者发布的here的说明操作。
虽然我可能来得有点晚。)