Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Java jAudio功能提取器:Null异常_Java_Eclipse_Nullpointerexception_Feature Extraction_Arff - Fatal编程技术网

Java jAudio功能提取器:Null异常

Java jAudio功能提取器:Null异常,java,eclipse,nullpointerexception,feature-extraction,arff,Java,Eclipse,Nullpointerexception,Feature Extraction,Arff,我的项目是创建一个Android应用程序,可以对音频文件进行特征提取和分类。首先,我创建一个Java应用程序作为测试运行 我正在尝试使用jAudio的功能提取器包从音频文件中提取音频功能 作为初学者,我想输入一个.wav文件并对该文件运行特征提取操作,然后将结果存储为一个.ARFF文件 但是,我从项目中的一个包中得到以下NullPointer异常错误: Exception in thread "main" java.lang.NullPointerException at java.io

我的项目是创建一个Android应用程序,可以对音频文件进行特征提取和分类。首先,我创建一个Java应用程序作为测试运行

我正在尝试使用jAudio的功能提取器包从音频文件中提取音频功能

作为初学者,我想输入一个.wav文件并对该文件运行特征提取操作,然后将结果存储为一个.ARFF文件

但是,我从项目中的一个包中得到以下NullPointer异常错误:

Exception in thread "main" java.lang.NullPointerException
    at java.io.DataOutputStream.writeBytes(Unknown Source)
    at jAudioFeatureExtractor.jAudioTools.FeatureProcessor.writeValuesARFFHeader(FeatureProcessor.java:853)
    at jAudioFeatureExtractor.jAudioTools.FeatureProcessor.<init>(FeatureProcessor.java:258)
    at jAudioFeatureExtractor.DataModel.extract(DataModel.java:308)
    at Mfccarffwriter.main(Mfccarffwriter.java:70)

您可以下载整个项目(到目前为止已完成)。

这可能有点晚了,但我也遇到了同样的问题,我一直跟踪到featureKey和featureValue从未在数据模型中设置。没有为这些设置方法,但它们是公共字段。这是我的密码:

    package Sound;

import jAudioFeatureExtractor.ACE.DataTypes.Batch;
import jAudioFeatureExtractor.DataModel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class Analysis {

    private static String musicFile = "/home/chris/IdeaProjects/AnotherProj/res/SheMovesInHerOwnWay15s.wav";
    private static String featureFile = "/home/chris/IdeaProjects/AnotherProj/res/features.xml";
    private static String settingsFile = "/home/chris/IdeaProjects/AnotherProj/res/settings.xml";
    private static String FKOuputFile = "/home/chris/IdeaProjects/AnotherProj/res/fk.xml";
    private static String FVOuputFile = "/home/chris/IdeaProjects/AnotherProj/res/fv.xml";

    public static void main(String[] args){
        Batch batch = new Batch(featureFile, null);
        try{
            batch.setRecordings(new File[]{new File(musicFile)});
            batch.getAggregator();
            batch.setSettings(settingsFile);

            DataModel dm = batch.getDataModel();
            OutputStream valsavepath = new FileOutputStream(FVOuputFile);
            OutputStream defsavepath = new FileOutputStream(FKOuputFile);
            dm.featureKey = defsavepath;
            dm.featureValue = valsavepath;
            batch.setDataModel(dm);

            batch.execute();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

}
我使用GUI创建了settings.xml文件,并从保存jar的目录中复制了features.xml文件


希望这有帮助

您获得的NPE具体是哪一行?你应该在你的问题中明确指出这一点。
 import java.io.*;
import java.util.Arrays;

import com.sun.xml.internal.bind.v2.runtime.RuntimeUtil.ToStringAdapter;

import jAudioFeatureExtractor.Cancel;
import jAudioFeatureExtractor.DataModel;
import jAudioFeatureExtractor.Updater;
import jAudioFeatureExtractor.Aggregators.AggregatorContainer;
import jAudioFeatureExtractor.AudioFeatures.FeatureExtractor;
import jAudioFeatureExtractor.AudioFeatures.MFCC;
import jAudioFeatureExtractor.DataTypes.RecordingInfo;
import jAudioFeatureExtractor.jAudioTools.*;


     public static void main(String[] args) throws Exception {

         // Display information about the wav file
         File extractedFiletoTest = new File("./microwave1.wav");

         String randomID = Integer.toString((int) Math.random());

         String file_path = "E:/Weka-3-6/tmp/microwave1.wav";
         AudioSamples sampledExampleFile = new AudioSamples(extractedFiletoTest,randomID,false);

         RecordingInfo[] samplefileInfo = new RecordingInfo[5];
         samplefileInfo[1] = new RecordingInfo(randomID, file_path, sampledExampleFile, true);

         double samplingrate= sampledExampleFile.getSamplingRateAsDouble();
         int windowsize= 4096;
         boolean normalize = false;

        OutputStream valsavepath = new FileOutputStream(".\\values");
         OutputStream defsavepath = new FileOutputStream(".\\definitions");

         boolean[] featurestosaveamongall = new boolean[10];
         Arrays.fill(featurestosaveamongall, Boolean.TRUE);

         double windowoverlap = 0.0;

        DataModel mfccDM = new DataModel("features.xml",null);

         mfccDM.extract(windowsize, 0.5, samplingrate, true, true, false, samplefileInfo, 1); /// invokes the writeValuesARFFHeader function.

       }
     }
    package Sound;

import jAudioFeatureExtractor.ACE.DataTypes.Batch;
import jAudioFeatureExtractor.DataModel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class Analysis {

    private static String musicFile = "/home/chris/IdeaProjects/AnotherProj/res/SheMovesInHerOwnWay15s.wav";
    private static String featureFile = "/home/chris/IdeaProjects/AnotherProj/res/features.xml";
    private static String settingsFile = "/home/chris/IdeaProjects/AnotherProj/res/settings.xml";
    private static String FKOuputFile = "/home/chris/IdeaProjects/AnotherProj/res/fk.xml";
    private static String FVOuputFile = "/home/chris/IdeaProjects/AnotherProj/res/fv.xml";

    public static void main(String[] args){
        Batch batch = new Batch(featureFile, null);
        try{
            batch.setRecordings(new File[]{new File(musicFile)});
            batch.getAggregator();
            batch.setSettings(settingsFile);

            DataModel dm = batch.getDataModel();
            OutputStream valsavepath = new FileOutputStream(FVOuputFile);
            OutputStream defsavepath = new FileOutputStream(FKOuputFile);
            dm.featureKey = defsavepath;
            dm.featureValue = valsavepath;
            batch.setDataModel(dm);

            batch.execute();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

}