ManuBo's picture
v0.2.0: quality score and integration
b89a72f
Raw
History Blame Contribute Delete
1.26 kB
from __future__ import annotations
import numpy as np
import pytest
@pytest.fixture
def clean_speech():
sr = 22050
n = int(sr * 3.0)
f0 = 150.0
f0_drift = np.cumsum(np.random.randn(n) * 0.05)
f0_curve = f0 + np.clip(f0_drift - np.mean(f0_drift), -40, 40)
phase = np.cumsum(2 * np.pi * f0_curve / sr)
signal = 0.3 * np.sin(phase) + 0.15 * np.sin(2 * phase)
envelope = np.zeros(n)
syl = n // 12
for i in range(12):
s = i * syl
e = min(s + int(syl * 0.7), n)
envelope[s:e] = np.hanning(e - s) * np.random.uniform(0.5, 1.0)
signal *= np.clip(envelope, 0, 1)
signal += 0.03 * np.random.randn(n)
signal = signal / np.max(np.abs(signal)) * 0.5
return signal, sr
@pytest.fixture
def noisy_signal():
sr = 22050
t = np.linspace(0, 3.0, int(sr * 3.0), endpoint=False)
signal = 0.3 * np.sin(2 * np.pi * 150 * t)
noise = 0.3 * np.random.randn(len(signal))
return signal + noise, sr
@pytest.fixture
def clipped_signal():
sr = 22050
t = np.linspace(0, 3.0, int(sr * 3.0), endpoint=False)
signal = np.sin(2 * np.pi * 150 * t) * 2.0
return np.clip(signal, -0.99, 0.99), sr
@pytest.fixture
def silent_signal():
sr = 22050
return np.zeros(sr * 3), sr