I want to Capture the audio being played by other apps using AudioPlaybackCapture API and load it into a classifier but I cant load the AudioRecord
directly to TensorAudio
because it throws unsupported format error. my only chance is to convert AudioRecord
to short array or float array and load it into classifier.
here are some part of my AudioCaptureService.java
mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
mediaProjection = mediaProjectionManager.getMediaProjection(RESULT_CODE, MPDATA);
AudioPlaybackCaptureConfiguration config = new AudioPlaybackCaptureConfiguration.Builder(mediaProjection)
.addMatchingUsage(AudioAttributes.USAGE_MEDIA)
.addMatchingUsage(AudioAttributes.USAGE_GAME)
.build();
AudioRecord tensorAR = classifier.createAudioRecord();
record = new AudioRecord.Builder().setAudioFormat(tensorAR.getFormat())
.setAudioPlaybackCaptureConfig(config)
.build();
record.startRecording();
tensor.load(record);
List<Classifications> output = classifier.classify(tensor);
I tried this code from chatGPT but no luck
public float[] readAudioData() {
audioRecord.read(buffer, 0, buffer.length);
float[] floatBuffer = new float[buffer.length];
for (int i = 0; i < buffer.length; i++) {
floatBuffer[i] = buffer[i] / 32768f; // Convert short to float (-1.0 to 1.0 range)
}
return floatBuffer;
}
Thank you so much
New contributor
Francis Ivan Piojo is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.