/**
   * @param file
   * @return
   * @throws MalformedURLException
   */
  private WordSpotResult doWordspot(File aWavFile) throws MalformedURLException {
    WordSpotResult result = new WordSpotResult();
    URL aWavUrl = aWavFile.toURI().toURL();
    Collection<Marker> keywordMarkers =
        findKeywordSegment(SEARCH_KEY_WORD, aWavFile, KEY_WORD_SEQUENCE_ARR);
    SignalSegment keySegment = new SignalSegment(keywordMarkers.iterator().next());
    Assert.assertNotNull("keyword not found", keySegment);
    Long length = AudioManagerFactory.createAudioManager().findLengthInMils(aWavUrl);
    result.setAudioLength(length);
    result.getOriginalMarker().addAll(keywordMarkers);
    result.setFileName(aWavFile.getName());
    result.setExperimentStarted(System.currentTimeMillis());
    final Map<RecognitionResult, SignalSegment> segments = new LinkedHashMap<>();
    if (getSpottingService().getKeySegmentList() != null) {
      getSpottingService().getKeySegmentList().clear();
    }
    getSpottingService().addKeySegment(keySegment);

    final SignalSegment foundSegment = new SignalSegment();
    // when
    getSpottingService()
        .wordSpotting(
            aWavUrl,
            new SpottingListener() {
              @Override
              public String foundSegment(
                  String sourceId,
                  SignalSegment newSegment,
                  List<RecognitionResult> recognitionResults) {
                foundSegment.setMarker(newSegment.getMarker());
                newSegment.getMarker().setId(Long.valueOf(segments.size()));
                segments.put(recognitionResults.get(0), newSegment);
                return newSegment.getMarker().getLabel();
              }
            });

    result.setExperimentEnded(System.currentTimeMillis());
    result.setSegments(segments);

    return result;
  }