エナジーディテクター
音声アクティビティ検出には、ALIZE ライブラリに基づく MISTRAL (以前は LIA_RAL) 話者認識ツールキットの EnergyDetector プログラムを使用しています。
オーディオ ファイルではなく機能ファイルで機能するため、信号のエネルギーを抽出する必要があります。私は通常、対数エネルギー パラメーターを使用してケプストラム機能 (MFCC) を抽出し、このパラメーターを VAD に使用します。 SPro 信号処理ツールキットのユーティリティ部分である sfbcep` は、次の方法で使用できます:
sfbcep -F PCM16 -p 19 -e -D -A input.wav output.prm
19 MFCC + 対数エネルギー係数 + 1 次および 2 次のデルタ係数を抽出します。エネルギー係数は 19 番目で、EnergyDetector 構成ファイルで指定します。
次に、次のように EnergyDetector を実行します。
EnergyDetector --config cfg/EnergyDetector.cfg --inputFeatureFilename output
回答の最後にある構成ファイルを使用する場合は、 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
CMU スフィンクス
CMU Sphinx 音声認識ソフトウェアには、VAD が組み込まれています。これは C で書かれており、それをハックしてラベル ファイルを作成できるかもしれません。
最近追加されたのは、GStreamer のサポートです。これは、GStreamer メディア パイプラインでその VAD を使用できることを意味します。 GStreamer および Python での PocketSphinx の使用を参照してください -> 'vader' 要素
その他の VAD
また、音声/非音声分類を含むファイルを出力する AMR1 コーデックの修正版を使用していますが、そのソースがオンラインで見つかりません。申し訳ありません。
webrtcvad は、Google の優れた WebRTC Voice Activity Detection コードの Python ラッパーです。
探していることを正確に実行するファイル example.py が付属しています。.wav ファイルを指定すると、誰かが話している各インスタンスを見つけて、新しい別の .wav ファイルに書き出します。
webrtcvad API は、example.py が希望どおりに動作しない場合に備えて、非常にシンプルです:
import webrtcvad
vad = webrtcvad.Vad()
# sample must be 16-bit PCM audio data, either 8KHz, 16KHz or 32Khz,
# and 10, 20, or 30 milliseconds long.
print vad.is_voiced(sample)
こんにちは pyAudioAnalysis には無音除去機能があります。
このライブラリでは、無音部分の削除は次のように簡単です:
from pyAudioAnalysis import audioBasicIO as aIO
from pyAudioAnalysis import audioSegmentation as aS
[Fs, x] = aIO.readAudioFile("data/recording1.wav")
segments = aS.silenceRemoval(x, Fs, 0.020, 0.020, smoothWindow = 1.0, Weight = 0.3, plot = True)
removal()
を内部的に沈黙させます 半教師付きアプローチに従います。最初に、SVM モデルは、高エネルギーと低エネルギーの短期フレームを区別するようにトレーニングされます。この目的のために、最高エネルギー フレームの 10% と最低エネルギー フレームの 10% が使用されます。次に、SVM が記録全体に (確率論的出力で) 適用され、アクティブなセグメントを検出するために動的しきい値が使用されます。