17

ユーザーがアップロードしたオーディオファイルのセットがありますが、それらに何が含まれているのかわかりません。

任意の音声ファイルを取得し、誰かが話している各インスタンスを個別の音声ファイルに抽出したいと思います。実際の単語を検出したくはありません。「話し始めた」、「話しなくなった」ポイントだけを検出し、これらのポイントで新しいファイルを生成します。

(私はLinux環境をターゲットにしており、Macで開発しています)

有望に見えるSoxを見つけました。これには、「vad」モード(音声アクティビティ検出)があります。しかし、これはスピーチの最初のインスタンスを見つけ、その時点までオーディオを取り除くように見えるので、それは近いですが、完全には正しくありません。

Pythonの「wave」ライブラリも調べましたが、Soxの「vad」の独自の実装を作成する必要があります。

既成のものを実行するコマンドラインツールはありますか?そうでない場合、PythonまたはRubyの優れたアプローチはありますか?

4

4 に答える 4

22

EnergyDetector

音声アクティビティの検出には、ALIZEライブラリに基づくMISTRAL (以前はLIA_RAL)話者認識ツールキットのEnergyDetectorプログラムを使用していました。

オーディオファイルではなく機能ファイルで機能するため、信号のエネルギーを抽出する必要があります。私は通常、log-energyパラメーターを使用してケプストラム機能(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コーデックの修正バージョンを使用していますが、そのソースをオンラインで見つけることができません。申し訳ありません。

于 2011-03-31T10:34:04.823 に答える
3

webrtcvadは、Googleの優れたWebRTC音声アクティビティ検出コードの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)
于 2016-04-24T17:02:40.010 に答える
2

こんにちは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)

silenceRemoval()実装リファレンス:https ://github.com/tyiannak/pyAudioAnalysis/blob/944f1d777bc96717d2793f257c3b36b1acf1713a/pyAudioAnalysis/audioSegmentation.py#L670

内部沈黙removal()は半教師ありアプローチに従います。最初に、SVMモデルは、高エネルギーと低エネルギーの短期フレームを区別するようにトレーニングされます。この目的に向けて、最高エネルギーフレームの10%と最低エネルギーフレームの10%が使用されます。次に、SVMが(確率的出力で)記録全体に適用され、動的しきい値処理を使用してアクティブなセグメントが検出されます。

リファレンスペーパー:https ://journals.plos.org/plosone/article?id = 10.1371 / journal.pone.0144610

于 2015-04-17T23:31:21.603 に答える
0

SProとHTKは、必要なツールキットです。AlizeToolkitのドキュメントを使用して実装を確認することもできます。

http://alize.univ-avignon.fr/doc.html

于 2014-07-21T18:13:06.270 に答える