/// <summary> /// FFTの結果を格納させ、検査を実施させる /// </summary> /// <param name="result">WAVEファイルをFFT処理したデータ</param> public void Add(FFTresult result) { //for (int i = 0; i < this._coreUnit.Count; i++) Parallel.For(0, this._coreUnit.Count, i => // 可能なら並列で処理 { this._coreUnit[i].Set(result); // 発声検出器にデータを格納して発声部分の認識を行う if (this._coreUnit[i].Ready) { Monitor.Enter(this._generatedFeatures); Result feature = this._coreUnit[i].GetFeature(); // 生成された特徴ベクトルを取得 if (this.PcaAnalysis) // 主成分分析を使ったベクトルのスリム化が必要なら処理する { var copyVector = feature.FeatureVector; double[] neoVector = PCA.Convert(copyVector.ToArray()); var neoFeature = new Result(feature.FilterName, feature.Time, feature.TimeWidth, feature.SN, new PatternRecognition.Feature(neoVector)); this._generatedFeatures.Add(neoFeature); // 特徴データを取得可能ならもらって登録する } else { this._generatedFeatures.Add(feature); // 特徴データを取得可能ならもらって登録する } Monitor.Exit(this._generatedFeatures); } if (this.Log) { this._coreUnit[i].SaveConditionOfDetector("sound detection log " + this._coreUnit[i].FileterName + ".csv"); // 必要ならファイルへ検出器のコンディションを出力 } }); return; }