в этом примере (ответ): Как получить 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();
}
Audio_Processing
, будь то предварительная обработка или постобработка: Android_Audio_Processing_Using_WebRTC. Вы также можете посетить эту ссылку: stackoverflow.com/a/58546599/10413749 - person Muhammad Usman   schedule 07.04.2020