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

    for (Region r : (List<Region>) regions) {
      String speaker_id = r.getAttribute(speaker_id_feature).toString();
      if (!snp_map.containsKey(speaker_id)) {
        snp_map.put(speaker_id, new SpeakerNormalizationParameter(speaker_id));
      }
      SpeakerNormalizationParameter snp = snp_map.get(speaker_id);

      if (r.hasAttribute("f0")) {
        snp.insertPitch((Contour) r.getAttribute("f0"));
      }
      if (r.hasAttribute("I")) {
        snp.insertIntensity((Contour) r.getAttribute("I"));
      }
    }

    for (Region r : (List<Region>) regions) {
      String speaker_id = r.getAttribute(speaker_id_feature).toString();
      if (!snp_map.containsKey(speaker_id)) {
        snp_map.put(speaker_id, new SpeakerNormalizationParameter(speaker_id));
      }
      SpeakerNormalizationParameter snp = snp_map.get(speaker_id);

      r.setAttribute(dest_feature, snp);
    }
  }