pcm2List function

Future<Float32List> pcm2List(
  1. String filePath
)

Implementation

Future<Float32List> pcm2List(String filePath) async {
  Uint8List pcmData = await File(filePath).readAsBytes();
  int sampleSize = 2;
  int numSamples = pcmData.length ~/ sampleSize;
  Float32List floatList = Float32List(numSamples);

  // 使用 ByteData 处理字节顺序和符号扩展
  ByteData byteData = pcmData.buffer.asByteData();
  for (int sampleIndex = 0; sampleIndex < numSamples; sampleIndex++) {
    // 假设 PCM 数据为小端字节序
    int sample = byteData.getInt16(sampleIndex * sampleSize, Endian.little);
    floatList[sampleIndex] = sample / 32768.0;
  }

  return floatList;
}