From d26152cb2fdaf1381dc43eb69a3f299911b68d50 Mon Sep 17 00:00:00 2001 From: Jon Nordby Date: Fri, 18 Apr 2025 00:04:20 +0200 Subject: tools: WIP on PDM<->PCM conversion in Python First test signal does not seem correct... --- tools/testsignal.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 tools/testsignal.py (limited to 'tools/testsignal.py') diff --git a/tools/testsignal.py b/tools/testsignal.py new file mode 100644 index 0000000..0f28e1c --- /dev/null +++ b/tools/testsignal.py @@ -0,0 +1,37 @@ +import numpy as np +import soundfile as sf + +def generate_test_tone( + duration_sec=5, + sample_rate=44100, + freqs=[440, 1000, 3000], + noise_level=0.05, + amplitude=0.5, +): + t = np.linspace(0, duration_sec, int(sample_rate * duration_sec), endpoint=False) + signal = np.zeros_like(t) + + # Add multiple sine waves + for freq in freqs: + signal += amplitude * np.sin(2 * np.pi * freq * t) + + # Normalize to avoid clipping if multiple frequencies are added + signal /= len(freqs) + + # Add white noise + noise = noise_level * np.random.normal(0, 1, signal.shape) + signal += noise + + return signal + +if __name__ == "__main__": + + filename="test_tone.wav" + # Save to WAV file + + sample_rate = 16000 + + signal = generate_test_tone(sample_rate=sample_rate) + + sf.write(filename, signal, sample_rate) + print(f"Saved test tone to '{filename}'.") -- cgit v1.2.3