如何根据不同的扬声器分开音频文件

how to separate an audio file based on different speakers

本文关键字:音频 文件 扬声器 何根      更新时间:2023-10-16

我有很多有关电话对话的音频文件。我想尝试将一个音频文件分为两个,每个文件只包含一个扬声器的演讲。也许我需要使用语音诊断。但是我该怎么做?有人可以给我一些线索吗?谢谢。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


根据我的经验,使用压缩和归一化对音频进行预处理,可以提供更好的结果,并且需要更少的朱利叶斯参数调整。建议这些初始步骤,但不需要。

此方法需要开源Sox音频工具包。这也可以在许多Linux软件包存储库中获得。我使用Ubuntu Universe存储库。

这是网站: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 平衡,并将音频归一化为给定的水平

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

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

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


尽管这不会让您识别每个说话者,但它将大大简化通过耳朵执行操作的任务,这可能是一段时间以来唯一的选择。但是我确实希望您找到实用的解决方案,如果它已经可用。

是的,诊断是您想要的。

您可以看几个工具,都是GPL。一个是lium spkdiarization(java),另一个是喊叫工具包(C )。lium有充分的文献记载,旁边有一个脚本,喊叫声更加隐秘,因此您应该按照作者在此处发布的说明。

尽管我可能为时已晚。;)