|
- package dsp
-
- import (
- "math"
- "testing"
- )
-
- func TestGoertzelDetectsTone(t *testing.T) {
- fs := 228000.0
- n := 22800 // 100ms
- freq := 19000.0
- samples := make([]float64, n)
- for i := range samples {
- samples[i] = math.Sin(2 * math.Pi * freq * float64(i) / fs)
- }
- energy := GoertzelEnergy(samples, fs, freq)
- noiseEnergy := GoertzelEnergy(samples, fs, 5000)
- if energy < noiseEnergy*100 {
- t.Fatalf("expected strong energy at %.0f Hz: got %.4f vs noise %.4f", freq, energy, noiseEnergy)
- }
- }
-
- func TestGoertzelSilence(t *testing.T) {
- samples := make([]float64, 1000)
- if GoertzelEnergy(samples, 228000, 19000) > 1e-12 {
- t.Fatal("expected near-zero energy for silence")
- }
- }
|