amine@403
|
1 from array import array as array_
|
amine@403
|
2
|
amine@403
|
3 import numpy as np
|
amine@400
|
4 import pytest
|
amine@403
|
5
|
amine@405
|
6 from auditok import signal
|
amine@405
|
7
|
amine@405
|
8 # from auditok import signal as signal_
|
amine@405
|
9 # from auditok import signal
|
amine@257
|
10
|
amine@257
|
11
|
amine@400
|
12 @pytest.fixture
|
amine@400
|
13 def setup_data():
|
amine@400
|
14 return b"012345679ABC"
|
amine@257
|
15
|
amine@257
|
16
|
amine@400
|
17 @pytest.mark.parametrize(
|
amine@400
|
18 "sample_width, expected",
|
amine@400
|
19 [
|
amine@405
|
20 (
|
amine@405
|
21 1,
|
amine@405
|
22 [[48, 49, 50, 51, 52, 53, 54, 55, 57, 65, 66, 67]],
|
amine@405
|
23 ), # int8_1channel
|
amine@400
|
24 (
|
amine@400
|
25 1,
|
amine@400
|
26 [[48, 50, 52, 54, 57, 66], [49, 51, 53, 55, 65, 67]],
|
amine@405
|
27 ), # int8_2channel
|
amine@405
|
28 (
|
amine@405
|
29 1,
|
amine@405
|
30 [[48, 52, 57], [49, 53, 65], [50, 54, 66], [51, 55, 67]],
|
amine@405
|
31 ), # int8_4channel
|
amine@405
|
32 (2, [[12592, 13106, 13620, 14134, 16697, 17218]]), # int16_1channel
|
amine@405
|
33 (2, [[12592, 13620, 16697], [13106, 14134, 17218]]), # int16_2channel
|
amine@405
|
34 (4, [[858927408, 926299444, 1128415545]]), # int32_1channel
|
amine@400
|
35 (4, [[858927408], [926299444], [1128415545]]), # int32_3channel
|
amine@400
|
36 ],
|
amine@400
|
37 ids=[
|
amine@405
|
38 "int8_1channel",
|
amine@405
|
39 "int8_2channel",
|
amine@405
|
40 "int8_4channel",
|
amine@405
|
41 "int16_1channel",
|
amine@405
|
42 "int16_2channel",
|
amine@405
|
43 "int32_1channel",
|
amine@400
|
44 "int32_3channel",
|
amine@400
|
45 ],
|
amine@400
|
46 )
|
amine@400
|
47 def test_to_array(setup_data, sample_width, expected):
|
amine@400
|
48 data = setup_data
|
amine@400
|
49 channels = len(expected)
|
amine@405
|
50 expected = np.array(expected)
|
amine@405
|
51 result = signal.to_array(data, sample_width, channels)
|
amine@405
|
52 assert (result == expected).all()
|
amine@405
|
53 assert result.dtype == np.float64
|
amine@405
|
54 assert result.shape == expected.shape
|
amine@400
|
55
|
amine@400
|
56
|
amine@400
|
57 @pytest.mark.parametrize(
|
amine@405
|
58 "x, aggregation_fn, expected",
|
amine@400
|
59 [
|
amine@405
|
60 ([300, 320, 400, 600], None, 52.506639194632434), # mono_simple
|
amine@405
|
61 ([0, 0, 0], None, -200), # mono_zeros
|
amine@400
|
62 (
|
amine@405
|
63 [[300, 320, 400, 600], [150, 160, 200, 300]],
|
amine@405
|
64 None,
|
amine@405
|
65 [52.506639194632434, 46.48603928135281],
|
amine@405
|
66 ), # stereo_no_agg
|
amine@400
|
67 (
|
amine@405
|
68 [[300, 320, 400, 600], [150, 160, 200, 300]],
|
amine@405
|
69 np.mean,
|
amine@405
|
70 49.49633923799262,
|
amine@405
|
71 ), # stereo_mean_agg
|
amine@400
|
72 (
|
amine@405
|
73 [[300, 320, 400, 600], [150, 160, 200, 300]],
|
amine@405
|
74 min,
|
amine@405
|
75 46.48603928135281,
|
amine@405
|
76 ), # stereo_min_agg
|
amine@405
|
77 (
|
amine@405
|
78 [[300, 320, 400, 600], [150, 160, 200, 300]],
|
amine@405
|
79 max,
|
amine@405
|
80 52.506639194632434,
|
amine@405
|
81 ), # stereo_max_agg
|
amine@400
|
82 ],
|
amine@400
|
83 ids=[
|
amine@405
|
84 "mono_simple",
|
amine@405
|
85 "mono_zeros",
|
amine@405
|
86 "stereo_no_agg",
|
amine@405
|
87 "mean_agg",
|
amine@405
|
88 "stereo_min_agg",
|
amine@405
|
89 "stereo_max_agg",
|
amine@400
|
90 ],
|
amine@400
|
91 )
|
amine@405
|
92 def test_calculate_energy(x, aggregation_fn, expected):
|
amine@405
|
93 energy = signal.calculate_energy(x, aggregation_fn)
|
amine@405
|
94 assert (energy == expected).all()
|