UBM.EM_Split()関数を実行しようとしています。24 個のオーディオ ファイルの機能を格納する機能ファイルfeat.h5 (3.8 MB) を作成しました。この機能ファイルを関数の feature_list 引数の入力として使用しようとしました。ただし、コードは 72 時間以上実行されており、出力も応答もありません。よく調べてみると、コードが凍結されているコード行は次のとおりです。
# Wait for all the tasks to finish
queue_in.join()
私が使用したコードは次のとおりです (サイドキット Web サイトの UBM チュートリアルに基づいています)。
import sidekit
import os
#Read all the files in the directory
all_files = os.listdir("D:/DatabaseFiles/Sidekit/")
extractor = sidekit.FeaturesExtractor(audio_filename_structure="D:/DatabaseFiles/Sidekit/{}",
feature_filename_structure="D:/Sidekit/Trial/feat.h5",
sampling_frequency=16000,
lower_frequency=200,
higher_frequency=3800,
filter_bank="log",
filter_bank_size=24,
window_size=0.04,
shift=0.01,
ceps_number=20,
vad="snr",
snr=40,
pre_emphasis=0.97,
save_param=["vad", "energy", "cep", "fb"],
keep_all_features=True)
#To iterate through a whole list
for x in all_files:
extractor.save(x)
server = sidekit.FeaturesServer(feature_filename_structure="D:/Sidekit/Trial/feat.h5",
sources=None,
dataset_list=["vad", "energy", "cep", "fb"],
feat_norm="cmvn",
global_cmvn=None,
dct_pca=False,
dct_pca_config=None,
sdc=False,
sdc_config=None,
delta=True,
double_delta=True,
delta_filter=None,
context=None,
traps_dct_nb=None,
rasta=True,
keep_all_features=True)
ubm = sidekit.Mixture()
ubm.EM_split(features_server=server,
feature_list="D:/Sidekit/Trial/feat.h5",
distrib_nb=32,
iterations=(1, 2, 2, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8),
num_thread=10,
save_partial=True,
ceil_cov=10,
floor_cov=1e-2
)
経験豊富なユーザー ( feature_list = all_files )から受け取った提案に基づいて、次の関数呼び出しも試しました。しかし、それでも問題は解決しませんでした。
ubm.EM_split(features_server=server,
feature_list=all_files,
distrib_nb=32,
iterations=(1, 2, 2, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8),
num_thread=10,
save_partial=True,
ceil_cov=10,
floor_cov=1e-2
)
Windows 環境と Linux 環境の両方で同じ問題が発生しました。どちらのシステムにも 32 GB の RAM があり、mpi は true に設定されています。
私が間違っていることを知っていますか?24 のオーディオ ファイル (feat.h5 は 3.8 MB) の機能を備えた h5 ファイルに、これほどの時間がかかるでしょうか?