178 lines
6.7 KiB
Python
178 lines
6.7 KiB
Python
import numpy as np
|
|
from numpy.testing import assert_allclose
|
|
from pytest import mark
|
|
|
|
|
|
@mark.non_docker
|
|
@mark.acoustic
|
|
class AcousticTest:
|
|
def test_get_audio_intensity(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = 52.867660826299
|
|
actual_std = 6.357796
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_audio_intensity()
|
|
res_wav = processing_verbal_acoustics_wav.get_audio_intensity()
|
|
|
|
# testing mean actual vs desired
|
|
assert np.isclose(res_mp4.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
# testing std actual vs desired
|
|
assert np.isclose(res_mp4.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
|
|
def test_get_pitch_frequency(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = 27.270735
|
|
actual_std = 58.073703
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_pitch_frequency()
|
|
res_wav = processing_verbal_acoustics_wav.get_pitch_frequency()
|
|
|
|
assert np.isclose(res_mp4.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
assert np.isclose(res_mp4.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
|
|
def test_get_formant_frequency(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = [679.47914618, 1788.237625, 2931.83885151, 4075.29506138]
|
|
actual_std = [366.35888699, 472.92129736, 543.15256087, 431.39331643]
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_formant_frequency()
|
|
res_wav = processing_verbal_acoustics_wav.get_formant_frequency()
|
|
|
|
assert_allclose(res_mp4.mean(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert_allclose(res_wav.mean(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
assert_allclose(res_mp4.std(), actual_std, rtol=0.1, atol=1e-8)
|
|
assert_allclose(res_wav.std(), actual_std, rtol=0.1, atol=1e-8)
|
|
|
|
def test_get_harmonic_noise(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = 3.154794
|
|
actual_std = 7.389723
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_harmonic_noise()
|
|
res_wav = processing_verbal_acoustics_wav.get_harmonic_noise()
|
|
|
|
assert np.isclose(res_mp4.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
assert np.isclose(res_mp4.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
|
|
def test_get_glottal_noise(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = 0.86287177
|
|
actual_std = 0.106516901
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_glottal_noise()
|
|
res_wav = processing_verbal_acoustics_wav.get_glottal_noise()
|
|
|
|
assert np.isclose(res_mp4.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
assert np.isclose(res_mp4.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
|
|
def test_get_jitter(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = 0.041403506
|
|
actual_std = 0.026209854
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_jitter()
|
|
res_wav = processing_verbal_acoustics_wav.get_jitter()
|
|
|
|
assert np.isclose(res_mp4.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
assert np.isclose(res_mp4.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
|
|
def test_get_shimmer(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = 0.2018721891
|
|
actual_std = 0.0584668629
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_shimmer()
|
|
res_wav = processing_verbal_acoustics_wav.get_shimmer()
|
|
|
|
assert np.isclose(res_mp4.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.mean().item(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
assert np.isclose(res_mp4.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
assert np.isclose(res_wav.std().item(), actual_std, rtol=0.1, atol=1e-8)
|
|
|
|
def test_get_pause_characteristics(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = [84.76, 28.84, 32, 55.92, 0.65974516]
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_pause_characteristics()
|
|
res_wav = processing_verbal_acoustics_wav.get_pause_characteristics()
|
|
|
|
assert_allclose(res_mp4.mean(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert_allclose(res_wav.mean(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
def test_get_voice_prevalence(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = [1865.0, 8794.0, 21.207641573800316]
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_voice_prevalence()
|
|
res_wav = processing_verbal_acoustics_wav.get_voice_prevalence()
|
|
|
|
assert_allclose(res_mp4.mean(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert_allclose(res_wav.mean(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
def test_get_mfcc(
|
|
self, processing_verbal_acoustics_mp4, processing_verbal_acoustics_wav
|
|
):
|
|
actual_mean = [
|
|
491.835,
|
|
-37.714,
|
|
82.164,
|
|
64.293,
|
|
-33.829,
|
|
54.35,
|
|
6.563,
|
|
-6.669,
|
|
31.392,
|
|
-8.672,
|
|
9.302,
|
|
8.096,
|
|
]
|
|
actual_std = [
|
|
71.555,
|
|
83.91,
|
|
65.506,
|
|
32.296,
|
|
38.059,
|
|
35.283,
|
|
30.122,
|
|
23.462,
|
|
21.292,
|
|
21.183,
|
|
18.607,
|
|
17.101,
|
|
]
|
|
|
|
res_mp4 = processing_verbal_acoustics_mp4.get_mfcc()
|
|
res_wav = processing_verbal_acoustics_wav.get_mfcc()
|
|
|
|
assert_allclose(res_mp4.mean(), actual_mean, rtol=0.1, atol=1e-8)
|
|
assert_allclose(res_wav.mean(), actual_mean, rtol=0.1, atol=1e-8)
|
|
|
|
assert_allclose(res_mp4.std(), actual_std, rtol=0.1, atol=1e-8)
|
|
assert_allclose(res_wav.std(), actual_std, rtol=0.1, atol=1e-8)
|