compareAudioWaveformsFast static method

double compareAudioWaveformsFast(
  1. Uint8List audio1,
  2. Uint8List audio2
)

Fast comparison for real-time processing - simplified version

Implementation

static double compareAudioWaveformsFast(Uint8List audio1, Uint8List audio2) {
  if (audio1.isEmpty || audio2.isEmpty) return 0.0;

  // Convert PCM bytes to float samples (simplified)
  final samples1 = _pcmToFloatFast(audio1);
  final samples2 = _pcmToFloatFast(audio2);

  if (samples1.isEmpty || samples2.isEmpty) return 0.0;

  // Normalize to same length (take minimum)
  final minLength = math.min(samples1.length, samples2.length);
  final normalized1 = samples1.sublist(0, minLength);
  final normalized2 = samples2.sublist(0, minLength);

  // Simple but effective similarity measures
  final waveformSimilarity =
      _calculateWaveformSimilarityFast(normalized1, normalized2);
  final energySimilarity =
      _calculateEnergySimilarity(normalized1, normalized2);
  final zcrSimilarity = _calculateZCRSimilarity(normalized1, normalized2);

  // Weighted combination - simplified weights
  return (waveformSimilarity * 0.5 +
          energySimilarity * 0.3 +
          zcrSimilarity * 0.2)
      .clamp(0.0, 1.0);
}