@Override
  public void extractFeatures(List regions) throws FeatureExtractorException {
    HashMap<String, SpeakerNormalizationParameter> params = new HashMap<String, SpeakerNormalizationParameter>();

    for (Region r : (List<Region>) regions) {
      SpeakerNormalizationParameter norm_params;
      if (!params.containsKey(r.getAttribute(speaker_id_feature))) {
        params.put((String) r.getAttribute(speaker_id_feature),
            new SpeakerNormalizationParameter(r.getAttribute(speaker_id_feature).toString()));
      }
      norm_params = params.get(r.getAttribute(speaker_id_feature));
      if (r.hasAttribute("f0")) {
        norm_params.insertPitch((Contour) r.getAttribute("f0"));
      }
      if (r.hasAttribute("I")) {
        norm_params.insertIntensity((Contour) r.getAttribute("I"));
      }
    }

    for (Region r : (List<Region>) regions) {
      r.setAttribute(destination_feature, params.get(r.getAttribute(speaker_id_feature)));
    }
  }