Самый быстрый способ преобразования числовых массивов между Java и Python - это использование байтового массива.
Предположим, что wavfile.read
возвращает одномерный массив int16, но этот метод легко адаптируется к другим типам данных. Затем в Python вы можете сделать это:
def get_python_audio(file_path):
fs, data_test = wavfile.read(file_path)
return data_test.tobytes()
А в Java:
byte[] bytesData = yourModule.callAttr("get_python_audio", filePath).toJava(byte[].class);
short[] shortData = new short[bytesData.length / 2];
ByteBuffer.wrap(bytesData).order(ByteOrder.nativeOrder()).asShortBuffer().get(shortData);
Если в вашем аудио есть несколько каналов, вам придется конвертировать каждый канал отдельно.