compareAudioWaveformsFast static method
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);
}