void processVoiceRecord() {
    voiceDispatcher = AudioDispatcherFactory.fromDefaultMicrophone(sampleRate, bufferSize, overlap);
    score = 0;
    counter = 0;
    PitchDetectionHandler pdh =
        new PitchDetectionHandler() {
          @Override
          public void handlePitch(PitchDetectionResult result, AudioEvent e) {
            float voicePitch = result.getPitch();

            if (counter >= listSourcePitch.size()) return;
            if ((Math.abs(voicePitch - Math.round(listSourcePitch.get(counter))) < 20
                || Math.abs(Math.round(listSourcePitch.get(counter)) - voicePitch) < 20)) {
              score = score + 1;
              Log.d("-----", counter + "_" + voicePitch + "_" + listSourcePitch.get(counter));
              runOnUiThread(
                  new Runnable() {
                    @Override
                    public void run() {}
                  });
            }
            counter++;
          }
        };
    AudioProcessor p =
        new PitchProcessor(PitchEstimationAlgorithm.FFT_YIN, sampleRate, bufferSize, pdh);
    voiceDispatcher.addAudioProcessor(p);
    new Thread(voiceDispatcher, "Voice Audio Dispatcher").start();
  }
  void processSourceRecord() {

    new AndroidFFMPEGLocator(this);
    sourceDispatcher =
        AudioDispatcherFactory.fromPipe(
            "http://media.karaokecuatui.vn/audio/AnhVanYeuEmNhuNgayDauTien_CaoThaiSon.mp3",
            (int) sampleRate,
            bufferSize,
            overlap);

    sourceDispatcher.addAudioProcessor(
        new PitchProcessor(PitchEstimationAlgorithm.FFT_YIN, sampleRate, bufferSize, this));
    sourceDispatcher.addAudioProcessor(
        new AudioProcessor() {
          FFT fft = new FFT(bufferSize);
          float[] amplitudes = new float[bufferSize / 2];

          @Override
          public void processingFinished() {
            // TODO Auto-generated method stub
          }

          @Override
          public boolean process(AudioEvent audioEvent) {
            try {
              float[] audioFloatBuffer = audioEvent.getFloatBuffer();
              float[] transformbuffer = new float[bufferSize * 2];
              System.arraycopy(audioFloatBuffer, 0, transformbuffer, 0, audioFloatBuffer.length);
              fft.forwardTransform(transformbuffer);
              fft.modulus(transformbuffer, amplitudes);

              return true;
            } catch (Exception exp) {
              return false;
            }
          }
        });

    new Thread(sourceDispatcher, "Audio dispatching").start();
  }