清除文件内容而不删除

时间:2019-04-02 14:02:36

标签: java android audio

我正在Android上开发声音识别应用程序,并且正在使用MediaRecorder类以及张量流模型。我创建了音频文件,该音频文件将在该类的onCreate方法中保存录音机麦克风音频

audioFile = getExternalCacheDir().getAbsolutePath();
audioFile += "/Recording.3gp";

然后在startRecording类中将mediaRecorder的输出文件设置为此文件

mediaRecorder.setOutputFile(audioFile);

我遇到的问题是,我需要将记录转换为一系列MFCC值才能使模型正常工作,并且使用的MFFC.java类要求将记录转换为双精度数组。我就是这样

ByteArrayOutputStream out = new ByteArrayOutputStream();
BufferedInputStream in = new BufferedInputStream(new FileInputStream(audioFile));

 int read;
 byte[] buff = new byte[1024];
 while ((read = in.read(buff)) > 0)
 {
        out.write(buff, 0, read);
 }
  out.flush();
  byte[] bytes = out.toByteArray();
  int times = Double.SIZE / Byte.SIZE;
  double[] doubleArray = new double[bytes.length / times];
  for(int i=0;i<doubleArray.length;i++){
        doubleArray[i] = ByteBuffer.wrap(bytes, i*times, times).getDouble();
  }

在另一个堆栈溢出帖子中,他们说这是怎么做的。问题在于,音频文件正在向其发送录音,只是将新录音添加到以前的录音中。这是因为我正在录制音频,然后像这样循环将其传递给分类器方法

while(true){
                try {
                    soundRecognition task = new soundRecognition();
                    task.execute();
                    sleep(1500);

                }

我尝试过的解决方案

我试图将音频的创建移到声音识别类,但是由于它会产生错误,所以我无法这样做,特别是在无效状态下调用mediaRecorder start:4。

我尝试使用FileWriter和PrintWriter类覆盖文件,但这没有用,我假设是因为文件是音频文件。

任何帮助将不胜感激

0 个答案:

没有答案