Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用TarsosDSP获得MFCC?_Android_Mfcc_Tarsosdsp - Fatal编程技术网

Android 如何使用TarsosDSP获得MFCC?

Android 如何使用TarsosDSP获得MFCC?,android,mfcc,tarsosdsp,Android,Mfcc,Tarsosdsp,我到处都在搜索,但我不知道如何在Android上使用TarsosDSP提取MFCC特性。我知道如何从文件中提取FFT。 有什么帮助吗?请参见官方网站 MFCC测试文件 public class MFCCTest { // private static int counter = 0; @Test public void MFCCForSineTest() throws UnsupportedAudioFileException{ int sampleRate

我到处都在搜索,但我不知道如何在Android上使用TarsosDSP提取MFCC特性。我知道如何从文件中提取FFT。 有什么帮助吗?

请参见官方网站

MFCC测试文件

public class MFCCTest {

//  private static int counter = 0;

    @Test
    public void MFCCForSineTest() throws UnsupportedAudioFileException{
        int sampleRate = 44100;
        int bufferSize = 1024;
        int bufferOverlap = 128;
        final float[] floatBuffer = TestUtilities.audioBufferSine();
        final AudioDispatcher dispatcher = AudioDispatcherFactory.fromFloatArray(floatBuffer, 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) {
                return true;
            }
        });
        dispatcher.run();
    }

}
和TestUtilities audioBufferSine()

公共类测试实用程序{
/**
*构造并返回一个两秒长的440Hz纯正弦缓冲区
*采样频率为44.1kHz。
* 
*@返回两秒长的纯正弦(440Hz)缓冲区,在
*44.1kHz。
*/
公共静态浮点[]audioBufferSine(){
最终双采样器=44100.0;
最终双f0=440.0;
最终双振幅EF0=0.5;
最后两秒=4.0;
最终浮点数[]缓冲区=新浮点数[(整数)(秒*取样器)];
for(int sample=0;sample
您可以在process事件下获得mfcc,我认为它适用于每一帧

    int sampleRate = 16000;
    int bufferSize = 512;
    int bufferOverlap = 128;
    new AndroidFFMPEGLocator(this);
    final List<float[]>mfccList = new ArrayList<>(200);
    InputStream inStream = new FileInputStream(audioFilePath);
   AudioDispatcher dispatcher = new AudioDispatcher(new UniversalAudioInputStream(inStream, new TarsosDSPAudioFormat(sampleRate, bufferSize, 1, true, true)), bufferSize, bufferOverlap);
    final MFCC mfcc = new MFCC(bufferSize, sampleRate, 20, 50, 300, 3000);
    dispatcher.addAudioProcessor(mfcc);
    dispatcher.addAudioProcessor(new AudioProcessor() {

        @Override
        public void processingFinished() {
        }

        @Override
        public boolean process(AudioEvent audioEvent) {
            mfccList.add( mfcc.getMFCC());
            return true;
        }
    });
    dispatcher.run();
int sampleRate=16000;
int bufferSize=512;
int-bufferOverlap=128;
新的AndroidFmPegLocator(本);
最终列表MFCCLIST=新的ArrayList(200);
InputStream inStream=新文件InputStream(音频文件路径);
AudioDispatcher dispatcher=新的AudioDispatcher(新的UniversalAudioInputStream(流内,新的TarsosDSPAudioFormat(sampleRate,bufferSize,1,true,true)),bufferSize,bufferOverlap);
最终MFCC MFCC=新的MFCC(缓冲区大小,取样器,20,50,300,3000);
dispatcher.addAudioProcessor(mfcc);
dispatcher.addAudioProcessor(新的AudioProcessor(){
@凌驾
public void processingFinished(){
}
@凌驾
公共布尔进程(AudioEvent AudioEvent){
添加(mfcc.getMFCC());
返回true;
}
});
dispatcher.run();
    int sampleRate = 16000;
    int bufferSize = 512;
    int bufferOverlap = 128;
    new AndroidFFMPEGLocator(this);
    final List<float[]>mfccList = new ArrayList<>(200);
    InputStream inStream = new FileInputStream(audioFilePath);
   AudioDispatcher dispatcher = new AudioDispatcher(new UniversalAudioInputStream(inStream, new TarsosDSPAudioFormat(sampleRate, bufferSize, 1, true, true)), bufferSize, bufferOverlap);
    final MFCC mfcc = new MFCC(bufferSize, sampleRate, 20, 50, 300, 3000);
    dispatcher.addAudioProcessor(mfcc);
    dispatcher.addAudioProcessor(new AudioProcessor() {

        @Override
        public void processingFinished() {
        }

        @Override
        public boolean process(AudioEvent audioEvent) {
            mfccList.add( mfcc.getMFCC());
            return true;
        }
    });
    dispatcher.run();