Как использовать MFCC TarsosDSP с микрофоном в Android

в этом примере (ответ): Как получить MFCC с помощью TarsosDSP?

они показывают, как использовать MFCC в Android @Test из массива с плавающей запятой, я пытаюсь использовать его с данными с микрофона:

    int sampleRate = 44100;
    int bufferSize = 8192;
    int bufferOverlap = 128;
    final AudioDispatcher dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(sampleRate, bufferSize, bufferOverlap);
    final MFCC mfcc = new MFCC(bufferSize, sampleRate, 40, 50, 300, 3000);
    dispatcher.addAudioProcessor(mfcc);
    dispatcher.addAudioProcessor(new AudioProcessor() {

        @Override
        public void processingFinished() {
        }

        @Override
        public boolean process(AudioEvent audioEvent) {
            float[] audioBuffer = audioEvent.getFloatBuffer();
            textView.setText(Arrays.toString(audioBuffer));
            return true;
        }
    });
    dispatcher.run();

Я хочу распечатать вывод, но это ничего не печатает, и я не могу его отладить! Мне нужна помощь.

РЕДАКТИРОВАТЬ:

после некоторой борьбы я изменил код на: (но все еще не работает)

    int sampleRate = 44100;
    int bufferSize = 8192;
    int bufferOverlap = 128;
    final AudioDispatcher dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(sampleRate, bufferSize, bufferOverlap);
    final MFCC mfcc = new MFCC(bufferSize, sampleRate, 40, 50, 300, 3000);
    dispatcher.addAudioProcessor(mfcc);
    dispatcher.addAudioProcessor(new AudioProcessor() {

        @Override
        public void processingFinished() {
            float audio_float[] = mfcc.getMFCC();
            textView.setText(Arrays.toString(audio_float));

        }

        @Override
        public boolean process(AudioEvent audioEvent) {
            mfcc.process(audioEvent);
            final float audio_float[] = mfcc.getMFCC();
            //textView.setText(Arrays.toString(audio_float));
            textView.setText("TESTING");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    textView.setText(Arrays.toString(audio_float));

                }
            });
            return true;
        }
    });
    new Thread(dispatcher,"Audio MFCC").start();

РЕДАКТИРОВАТЬ: сделано:

    dispatcher.addAudioProcessor(new AudioProcessor() {

        @Override
        public void processingFinished() {
            textView.setText("Finish");
        }

        @Override
        public boolean process(AudioEvent audioEvent) {

            mfcc.process(audioEvent);
            final float audio_float[] = mfcc.getMFCC();
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    textView.setText(Arrays.toString(audio_float));
                    textView.invalidate();
                }
            });
            return true;
        }
    });
    new Thread(dispatcher,"Audio MFCC").start();
}

person Atheel Massalha    schedule 24.04.2018    source источник
comment
Я думаю, что эта ссылка включает в себя каждый ответ, связанный с Audio_Processing, будь то предварительная обработка или постобработка: Android_Audio_Processing_Using_WebRTC. Вы также можете посетить эту ссылку: stackoverflow.com/a/58546599/10413749   -  person Muhammad Usman    schedule 07.04.2020