повышение частоты дискретизации
у меня есть массив с байтами аудио raw pcm 8khz 16bit mono little endian. но вот мне его нужно нормально преобразовать в raw pcm 48khz 16bit stereo big endian. как это сделать? chatgpt :) дает ответ, но при преобразовании появляются артефакты. вот код который он давал:
@Throws(IOException::class)
fun convert8kHzTo48kHz(inputPCMData: ByteArray): ByteArray {
val format8k = AudioFormat(8000f, 16, 1, true, false)
val format48k = AudioSendHandler.INPUT_FORMAT
val inputStream = AudioInputStream(
ByteArrayInputStream(inputPCMData),
format8k,
(inputPCMData.size).toLong()
)
val convertedStream = AudioSystem.getAudioInputStream(format48k, inputStream)
val outputStream = ByteArrayOutputStream()
val buffer = ByteArray(4096)
var bytesRead: Int
while ((convertedStream.read(buffer).also { bytesRead = it }) != -1) {
outputStream.write(buffer, 0, bytesRead)
}
convertedStream.close()
return outputStream.toByteArray()
}