从任意音频文件中提取语音部分的好方法是什么?

ste*_*tef 16 linux audio voice signal-processing voice-detection

我有一组由用户上传的音频文件,并且不知道它们包含什么.

我想获取一个任意的音频文件,并将每个人正在讲话的实例提取到单独的音频文件中.我不想检测实际的单词,只是"开始说话","停止说话"点并在这些点生成新文件.

(我的目标是Linux环境,并在Mac上进行开发)

我找到了看起来很有前途的Sox,它有一个'vad'模式(Voice Activity Detection).然而,这似乎找到了第一个语音实例,并在此之前剥离音频,因此它很接近,但不是很正确.

我也看过Python的'wave'库,但后来我需要编写自己的Sox'vad'实现.

是否有任何命令行工具可以实现我想要的现成产品?如果没有,任何好的Python或Ruby方法?

And*_*ini 22

EnergyDetector

对于语音活动检测,我一直在使用基于ALIZE库的MISTRAL(是LIA_RAL)说话人识别工具包的EnergyDetector程序.

它适用于功能文件,而不适用于音频文件,因此您需要提取信号的能量.我通常使用log-energy参数提取倒谱特征(MFCC),我将此参数用于VAD.您可以使用sfbcep`的的效用部分SPRO通过以下方式信号处理工具包:

sfbcep -F PCM16 -p 19 -e -D -A input.wav output.prm
Run Code Online (Sandbox Code Playgroud)

它将提取19个MFCC +对数能量系数+一阶和二阶delta系数.能量系数是19,您将在EnergyDetector配置文件中指定.

然后,您将以这种方式运行EnergyDetector:

EnergyDetector --config cfg/EnergyDetector.cfg --inputFeatureFilename output 
Run Code Online (Sandbox Code Playgroud)

如果您使用在答案末尾找到的配置文件,则需要output.prm输入prm/,然后您将在其中找到分段lbl/.

作为参考,我附上了我的EnergyDetector配置文件:

*** EnergyDetector Config File
***

loadFeatureFileExtension        .prm
minLLK                          -200
maxLLK                          1000
bigEndian                       false
loadFeatureFileFormat           SPRO4
saveFeatureFileFormat           SPRO4
saveFeatureFileSPro3DataKind    FBCEPSTRA
featureServerBufferSize         ALL_FEATURES
featureServerMemAlloc           50000000
featureFilesPath                prm/
mixtureFilesPath                gmm/
lstPath                         lst/
labelOutputFrames               speech
labelSelectedFrames             all
addDefaultLabel                 true
defaultLabel                    all
saveLabelFileExtension          .lbl
labelFilesPath                  lbl/    
frameLength                     0.01
segmentalMode                   file
nbTrainIt                       8       
varianceFlooring                0.0001
varianceCeiling                 1.5     
alpha                           0.25
mixtureDistribCount             3
featureServerMask               19      
vectSize                        1
baggedFrameProbabilityInit      0.1
thresholdMode                   weight
Run Code Online (Sandbox Code Playgroud)

CMU Sphinx

CMU Sphinx的语音识别软件包含一个内置的VAD.它是用C语言编写的,您可以通过它来破解它来为您生成标签文件.

最近增加的是GStreamer支持.这意味着您可以在GStreamer媒体管道中使用其VAD.请参阅将PocketSphinx与GStreamer和Python一起使用 - >'vader'元素

其他VAD

我也一直在使用AMR1编解码器的修改版本,输出一个带语音/非语音分类的文件,但我无法在线找到它的来源,抱歉.