From: geniusnut Date: Wed, 31 May 2023 07:13:14 +0000 (+0800) Subject: whisper.android : support decode wav file has 2 channels (#972) X-Git-Tag: upstream/1.7.4~1420 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=ce6f7470649f169027626dc92b3a2e39b4eff463;p=pkg%2Fggml%2Fsources%2Fwhisper.cpp whisper.android : support decode wav file has 2 channels (#972) --- diff --git a/examples/whisper.android/app/src/main/java/com/whispercppdemo/media/RiffWaveHelper.kt b/examples/whisper.android/app/src/main/java/com/whispercppdemo/media/RiffWaveHelper.kt index 0947a8c5..064ef699 100644 --- a/examples/whisper.android/app/src/main/java/com/whispercppdemo/media/RiffWaveHelper.kt +++ b/examples/whisper.android/app/src/main/java/com/whispercppdemo/media/RiffWaveHelper.kt @@ -10,12 +10,16 @@ fun decodeWaveFile(file: File): FloatArray { file.inputStream().use { it.copyTo(baos) } val buffer = ByteBuffer.wrap(baos.toByteArray()) buffer.order(ByteOrder.LITTLE_ENDIAN) + val channel = buffer.getShort(22).toInt() buffer.position(44) val shortBuffer = buffer.asShortBuffer() val shortArray = ShortArray(shortBuffer.limit()) shortBuffer.get(shortArray) - return FloatArray(shortArray.size) { index -> - (shortArray[index] / 32767.0f).coerceIn(-1f..1f) + return FloatArray(shortArray.size / channel) { index -> + when (channel) { + 1 -> (shortArray[index] / 32767.0f).coerceIn(-1f..1f) + else -> ((shortArray[2*index] + shortArray[2*index + 1])/ 32767.0f / 2.0f).coerceIn(-1f..1f) + } } } @@ -73,4 +77,4 @@ private fun headerBytes(totalLength: Int): ByteArray { it.get(bytes) return bytes } -} \ No newline at end of file +}