vietanhnami
commited on
Commit
•
45916af
0
Parent(s):
first commit
Browse files- .gitattributes +5 -0
- LICENSE +400 -0
- PLCMOS/models/plcmos_v0.onnx +3 -0
- PLCMOS/models/plcmos_v1_intrusive.onnx +3 -0
- PLCMOS/models/plcmos_v1_nonintrusive.onnx +3 -0
- PLCMOS/plc_mos.py +247 -0
- README.md +193 -0
- audio_samples/sample_1/FRN_enhanced.wav +0 -0
- audio_samples/sample_1/TFGAN_enhanced.wav +0 -0
- audio_samples/sample_1/clean.wav +0 -0
- audio_samples/sample_1/lossy.wav +0 -0
- audio_samples/sample_1/tPLC_enhanced.wav +0 -0
- audio_samples/sample_2/FRN_enhanced.wav +0 -0
- audio_samples/sample_2/TFGAN_enhanced.wav +0 -0
- audio_samples/sample_2/clean.wav +0 -0
- audio_samples/sample_2/lossy.wav +0 -0
- audio_samples/sample_2/tPLC_enhanced.wav +0 -0
- audio_samples/sample_3/FRN_enhanced.wav +0 -0
- audio_samples/sample_3/TFGAN_enhanced.wav +0 -0
- audio_samples/sample_3/clean.wav +0 -0
- audio_samples/sample_3/lossy.wav +0 -0
- audio_samples/sample_3/tPLC_enhanced.wav +0 -0
- config.py +59 -0
- css/styles.css +50 -0
- data/vctk/test.txt +3552 -0
- data/vctk/train.txt +0 -0
- dataset.py +227 -0
- index.html +139 -0
- inference_onnx.py +63 -0
- lightning_logs/predictor/checkpoints/predictor.ckpt +3 -0
- lightning_logs/predictor/hparams.yaml +6 -0
- lightning_logs/version_0/checkpoints/frn-epoch=65-val_loss=0.2290.ckpt +3 -0
- lightning_logs/version_0/checkpoints/frn.onnx +3 -0
- lightning_logs/version_0/hparams.yaml +6 -0
- loss.py +145 -0
- main.py +132 -0
- models/__init__.py +0 -0
- models/blocks.py +142 -0
- models/frn.py +220 -0
- requirements.txt +17 -0
- utils/__init__.py +0 -0
- utils/stft.py +23 -0
- utils/tblogger.py +71 -0
- utils/utils.py +67 -0
.gitattributes
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
lightning_logs/version_0/checkpoints/frn-epoch=65-val_loss=0.2290.ckpt filter=lfs diff=lfs merge=lfs -text
|
2 |
+
lightning_logs/version_0/checkpoints/frn.onnx filter=lfs diff=lfs merge=lfs -text
|
3 |
+
lightning_logs/predictor/checkpoints/predictor.ckpt filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
LICENSE
ADDED
@@ -0,0 +1,400 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
Attribution-NonCommercial 4.0 International
|
3 |
+
|
4 |
+
=======================================================================
|
5 |
+
|
6 |
+
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
7 |
+
does not provide legal services or legal advice. Distribution of
|
8 |
+
Creative Commons public licenses does not create a lawyer-client or
|
9 |
+
other relationship. Creative Commons makes its licenses and related
|
10 |
+
information available on an "as-is" basis. Creative Commons gives no
|
11 |
+
warranties regarding its licenses, any material licensed under their
|
12 |
+
terms and conditions, or any related information. Creative Commons
|
13 |
+
disclaims all liability for damages resulting from their use to the
|
14 |
+
fullest extent possible.
|
15 |
+
|
16 |
+
Using Creative Commons Public Licenses
|
17 |
+
|
18 |
+
Creative Commons public licenses provide a standard set of terms and
|
19 |
+
conditions that creators and other rights holders may use to share
|
20 |
+
original works of authorship and other material subject to copyright
|
21 |
+
and certain other rights specified in the public license below. The
|
22 |
+
following considerations are for informational purposes only, are not
|
23 |
+
exhaustive, and do not form part of our licenses.
|
24 |
+
|
25 |
+
Considerations for licensors: Our public licenses are
|
26 |
+
intended for use by those authorized to give the public
|
27 |
+
permission to use material in ways otherwise restricted by
|
28 |
+
copyright and certain other rights. Our licenses are
|
29 |
+
irrevocable. Licensors should read and understand the terms
|
30 |
+
and conditions of the license they choose before applying it.
|
31 |
+
Licensors should also secure all rights necessary before
|
32 |
+
applying our licenses so that the public can reuse the
|
33 |
+
material as expected. Licensors should clearly mark any
|
34 |
+
material not subject to the license. This includes other CC-
|
35 |
+
licensed material, or material used under an exception or
|
36 |
+
limitation to copyright. More considerations for licensors:
|
37 |
+
wiki.creativecommons.org/Considerations_for_licensors
|
38 |
+
|
39 |
+
Considerations for the public: By using one of our public
|
40 |
+
licenses, a licensor grants the public permission to use the
|
41 |
+
licensed material under specified terms and conditions. If
|
42 |
+
the licensor's permission is not necessary for any reason--for
|
43 |
+
example, because of any applicable exception or limitation to
|
44 |
+
copyright--then that use is not regulated by the license. Our
|
45 |
+
licenses grant only permissions under copyright and certain
|
46 |
+
other rights that a licensor has authority to grant. Use of
|
47 |
+
the licensed material may still be restricted for other
|
48 |
+
reasons, including because others have copyright or other
|
49 |
+
rights in the material. A licensor may make special requests,
|
50 |
+
such as asking that all changes be marked or described.
|
51 |
+
Although not required by our licenses, you are encouraged to
|
52 |
+
respect those requests where reasonable. More_considerations
|
53 |
+
for the public:
|
54 |
+
wiki.creativecommons.org/Considerations_for_licensees
|
55 |
+
|
56 |
+
=======================================================================
|
57 |
+
|
58 |
+
Creative Commons Attribution-NonCommercial 4.0 International Public
|
59 |
+
License
|
60 |
+
|
61 |
+
By exercising the Licensed Rights (defined below), You accept and agree
|
62 |
+
to be bound by the terms and conditions of this Creative Commons
|
63 |
+
Attribution-NonCommercial 4.0 International Public License ("Public
|
64 |
+
License"). To the extent this Public License may be interpreted as a
|
65 |
+
contract, You are granted the Licensed Rights in consideration of Your
|
66 |
+
acceptance of these terms and conditions, and the Licensor grants You
|
67 |
+
such rights in consideration of benefits the Licensor receives from
|
68 |
+
making the Licensed Material available under these terms and
|
69 |
+
conditions.
|
70 |
+
|
71 |
+
Section 1 -- Definitions.
|
72 |
+
|
73 |
+
a. Adapted Material means material subject to Copyright and Similar
|
74 |
+
Rights that is derived from or based upon the Licensed Material
|
75 |
+
and in which the Licensed Material is translated, altered,
|
76 |
+
arranged, transformed, or otherwise modified in a manner requiring
|
77 |
+
permission under the Copyright and Similar Rights held by the
|
78 |
+
Licensor. For purposes of this Public License, where the Licensed
|
79 |
+
Material is a musical work, performance, or sound recording,
|
80 |
+
Adapted Material is always produced where the Licensed Material is
|
81 |
+
synched in timed relation with a moving image.
|
82 |
+
|
83 |
+
b. Adapter's License means the license You apply to Your Copyright
|
84 |
+
and Similar Rights in Your contributions to Adapted Material in
|
85 |
+
accordance with the terms and conditions of this Public License.
|
86 |
+
|
87 |
+
c. Copyright and Similar Rights means copyright and/or similar rights
|
88 |
+
closely related to copyright including, without limitation,
|
89 |
+
performance, broadcast, sound recording, and Sui Generis Database
|
90 |
+
Rights, without regard to how the rights are labeled or
|
91 |
+
categorized. For purposes of this Public License, the rights
|
92 |
+
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
93 |
+
Rights.
|
94 |
+
d. Effective Technological Measures means those measures that, in the
|
95 |
+
absence of proper authority, may not be circumvented under laws
|
96 |
+
fulfilling obligations under Article 11 of the WIPO Copyright
|
97 |
+
Treaty adopted on December 20, 1996, and/or similar international
|
98 |
+
agreements.
|
99 |
+
|
100 |
+
e. Exceptions and Limitations means fair use, fair dealing, and/or
|
101 |
+
any other exception or limitation to Copyright and Similar Rights
|
102 |
+
that applies to Your use of the Licensed Material.
|
103 |
+
|
104 |
+
f. Licensed Material means the artistic or literary work, database,
|
105 |
+
or other material to which the Licensor applied this Public
|
106 |
+
License.
|
107 |
+
|
108 |
+
g. Licensed Rights means the rights granted to You subject to the
|
109 |
+
terms and conditions of this Public License, which are limited to
|
110 |
+
all Copyright and Similar Rights that apply to Your use of the
|
111 |
+
Licensed Material and that the Licensor has authority to license.
|
112 |
+
|
113 |
+
h. Licensor means the individual(s) or entity(ies) granting rights
|
114 |
+
under this Public License.
|
115 |
+
|
116 |
+
i. NonCommercial means not primarily intended for or directed towards
|
117 |
+
commercial advantage or monetary compensation. For purposes of
|
118 |
+
this Public License, the exchange of the Licensed Material for
|
119 |
+
other material subject to Copyright and Similar Rights by digital
|
120 |
+
file-sharing or similar means is NonCommercial provided there is
|
121 |
+
no payment of monetary compensation in connection with the
|
122 |
+
exchange.
|
123 |
+
|
124 |
+
j. Share means to provide material to the public by any means or
|
125 |
+
process that requires permission under the Licensed Rights, such
|
126 |
+
as reproduction, public display, public performance, distribution,
|
127 |
+
dissemination, communication, or importation, and to make material
|
128 |
+
available to the public including in ways that members of the
|
129 |
+
public may access the material from a place and at a time
|
130 |
+
individually chosen by them.
|
131 |
+
|
132 |
+
k. Sui Generis Database Rights means rights other than copyright
|
133 |
+
resulting from Directive 96/9/EC of the European Parliament and of
|
134 |
+
the Council of 11 March 1996 on the legal protection of databases,
|
135 |
+
as amended and/or succeeded, as well as other essentially
|
136 |
+
equivalent rights anywhere in the world.
|
137 |
+
|
138 |
+
l. You means the individual or entity exercising the Licensed Rights
|
139 |
+
under this Public License. Your has a corresponding meaning.
|
140 |
+
|
141 |
+
Section 2 -- Scope.
|
142 |
+
|
143 |
+
a. License grant.
|
144 |
+
|
145 |
+
1. Subject to the terms and conditions of this Public License,
|
146 |
+
the Licensor hereby grants You a worldwide, royalty-free,
|
147 |
+
non-sublicensable, non-exclusive, irrevocable license to
|
148 |
+
exercise the Licensed Rights in the Licensed Material to:
|
149 |
+
|
150 |
+
a. reproduce and Share the Licensed Material, in whole or
|
151 |
+
in part, for NonCommercial purposes only; and
|
152 |
+
|
153 |
+
b. produce, reproduce, and Share Adapted Material for
|
154 |
+
NonCommercial purposes only.
|
155 |
+
|
156 |
+
2. Exceptions and Limitations. For the avoidance of doubt, where
|
157 |
+
Exceptions and Limitations apply to Your use, this Public
|
158 |
+
License does not apply, and You do not need to comply with
|
159 |
+
its terms and conditions.
|
160 |
+
|
161 |
+
3. Term. The term of this Public License is specified in Section
|
162 |
+
6(a).
|
163 |
+
|
164 |
+
4. Media and formats; technical modifications allowed. The
|
165 |
+
Licensor authorizes You to exercise the Licensed Rights in
|
166 |
+
all media and formats whether now known or hereafter created,
|
167 |
+
and to make technical modifications necessary to do so. The
|
168 |
+
Licensor waives and/or agrees not to assert any right or
|
169 |
+
authority to forbid You from making technical modifications
|
170 |
+
necessary to exercise the Licensed Rights, including
|
171 |
+
technical modifications necessary to circumvent Effective
|
172 |
+
Technological Measures. For purposes of this Public License,
|
173 |
+
simply making modifications authorized by this Section 2(a)
|
174 |
+
(4) never produces Adapted Material.
|
175 |
+
|
176 |
+
5. Downstream recipients.
|
177 |
+
|
178 |
+
a. Offer from the Licensor -- Licensed Material. Every
|
179 |
+
recipient of the Licensed Material automatically
|
180 |
+
receives an offer from the Licensor to exercise the
|
181 |
+
Licensed Rights under the terms and conditions of this
|
182 |
+
Public License.
|
183 |
+
|
184 |
+
b. No downstream restrictions. You may not offer or impose
|
185 |
+
any additional or different terms or conditions on, or
|
186 |
+
apply any Effective Technological Measures to, the
|
187 |
+
Licensed Material if doing so restricts exercise of the
|
188 |
+
Licensed Rights by any recipient of the Licensed
|
189 |
+
Material.
|
190 |
+
|
191 |
+
6. No endorsement. Nothing in this Public License constitutes or
|
192 |
+
may be construed as permission to assert or imply that You
|
193 |
+
are, or that Your use of the Licensed Material is, connected
|
194 |
+
with, or sponsored, endorsed, or granted official status by,
|
195 |
+
the Licensor or others designated to receive attribution as
|
196 |
+
provided in Section 3(a)(1)(A)(i).
|
197 |
+
|
198 |
+
b. Other rights.
|
199 |
+
|
200 |
+
1. Moral rights, such as the right of integrity, are not
|
201 |
+
licensed under this Public License, nor are publicity,
|
202 |
+
privacy, and/or other similar personality rights; however, to
|
203 |
+
the extent possible, the Licensor waives and/or agrees not to
|
204 |
+
assert any such rights held by the Licensor to the limited
|
205 |
+
extent necessary to allow You to exercise the Licensed
|
206 |
+
Rights, but not otherwise.
|
207 |
+
|
208 |
+
2. Patent and trademark rights are not licensed under this
|
209 |
+
Public License.
|
210 |
+
|
211 |
+
3. To the extent possible, the Licensor waives any right to
|
212 |
+
collect royalties from You for the exercise of the Licensed
|
213 |
+
Rights, whether directly or through a collecting society
|
214 |
+
under any voluntary or waivable statutory or compulsory
|
215 |
+
licensing scheme. In all other cases the Licensor expressly
|
216 |
+
reserves any right to collect such royalties, including when
|
217 |
+
the Licensed Material is used other than for NonCommercial
|
218 |
+
purposes.
|
219 |
+
|
220 |
+
Section 3 -- License Conditions.
|
221 |
+
|
222 |
+
Your exercise of the Licensed Rights is expressly made subject to the
|
223 |
+
following conditions.
|
224 |
+
|
225 |
+
a. Attribution.
|
226 |
+
|
227 |
+
1. If You Share the Licensed Material (including in modified
|
228 |
+
form), You must:
|
229 |
+
|
230 |
+
a. retain the following if it is supplied by the Licensor
|
231 |
+
with the Licensed Material:
|
232 |
+
|
233 |
+
i. identification of the creator(s) of the Licensed
|
234 |
+
Material and any others designated to receive
|
235 |
+
attribution, in any reasonable manner requested by
|
236 |
+
the Licensor (including by pseudonym if
|
237 |
+
designated);
|
238 |
+
|
239 |
+
ii. a copyright notice;
|
240 |
+
|
241 |
+
iii. a notice that refers to this Public License;
|
242 |
+
|
243 |
+
iv. a notice that refers to the disclaimer of
|
244 |
+
warranties;
|
245 |
+
|
246 |
+
v. a URI or hyperlink to the Licensed Material to the
|
247 |
+
extent reasonably practicable;
|
248 |
+
|
249 |
+
b. indicate if You modified the Licensed Material and
|
250 |
+
retain an indication of any previous modifications; and
|
251 |
+
|
252 |
+
c. indicate the Licensed Material is licensed under this
|
253 |
+
Public License, and include the text of, or the URI or
|
254 |
+
hyperlink to, this Public License.
|
255 |
+
|
256 |
+
2. You may satisfy the conditions in Section 3(a)(1) in any
|
257 |
+
reasonable manner based on the medium, means, and context in
|
258 |
+
which You Share the Licensed Material. For example, it may be
|
259 |
+
reasonable to satisfy the conditions by providing a URI or
|
260 |
+
hyperlink to a resource that includes the required
|
261 |
+
information.
|
262 |
+
|
263 |
+
3. If requested by the Licensor, You must remove any of the
|
264 |
+
information required by Section 3(a)(1)(A) to the extent
|
265 |
+
reasonably practicable.
|
266 |
+
|
267 |
+
4. If You Share Adapted Material You produce, the Adapter's
|
268 |
+
License You apply must not prevent recipients of the Adapted
|
269 |
+
Material from complying with this Public License.
|
270 |
+
|
271 |
+
Section 4 -- Sui Generis Database Rights.
|
272 |
+
|
273 |
+
Where the Licensed Rights include Sui Generis Database Rights that
|
274 |
+
apply to Your use of the Licensed Material:
|
275 |
+
|
276 |
+
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
277 |
+
to extract, reuse, reproduce, and Share all or a substantial
|
278 |
+
portion of the contents of the database for NonCommercial purposes
|
279 |
+
only;
|
280 |
+
|
281 |
+
b. if You include all or a substantial portion of the database
|
282 |
+
contents in a database in which You have Sui Generis Database
|
283 |
+
Rights, then the database in which You have Sui Generis Database
|
284 |
+
Rights (but not its individual contents) is Adapted Material; and
|
285 |
+
|
286 |
+
c. You must comply with the conditions in Section 3(a) if You Share
|
287 |
+
all or a substantial portion of the contents of the database.
|
288 |
+
|
289 |
+
For the avoidance of doubt, this Section 4 supplements and does not
|
290 |
+
replace Your obligations under this Public License where the Licensed
|
291 |
+
Rights include other Copyright and Similar Rights.
|
292 |
+
|
293 |
+
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
294 |
+
|
295 |
+
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
296 |
+
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
297 |
+
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
298 |
+
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
299 |
+
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
300 |
+
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
301 |
+
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
302 |
+
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
303 |
+
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
304 |
+
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
305 |
+
|
306 |
+
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
307 |
+
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
308 |
+
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
309 |
+
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
310 |
+
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
311 |
+
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
312 |
+
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
313 |
+
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
314 |
+
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
315 |
+
|
316 |
+
c. The disclaimer of warranties and limitation of liability provided
|
317 |
+
above shall be interpreted in a manner that, to the extent
|
318 |
+
possible, most closely approximates an absolute disclaimer and
|
319 |
+
waiver of all liability.
|
320 |
+
|
321 |
+
Section 6 -- Term and Termination.
|
322 |
+
|
323 |
+
a. This Public License applies for the term of the Copyright and
|
324 |
+
Similar Rights licensed here. However, if You fail to comply with
|
325 |
+
this Public License, then Your rights under this Public License
|
326 |
+
terminate automatically.
|
327 |
+
|
328 |
+
b. Where Your right to use the Licensed Material has terminated under
|
329 |
+
Section 6(a), it reinstates:
|
330 |
+
|
331 |
+
1. automatically as of the date the violation is cured, provided
|
332 |
+
it is cured within 30 days of Your discovery of the
|
333 |
+
violation; or
|
334 |
+
|
335 |
+
2. upon express reinstatement by the Licensor.
|
336 |
+
|
337 |
+
For the avoidance of doubt, this Section 6(b) does not affect any
|
338 |
+
right the Licensor may have to seek remedies for Your violations
|
339 |
+
of this Public License.
|
340 |
+
|
341 |
+
c. For the avoidance of doubt, the Licensor may also offer the
|
342 |
+
Licensed Material under separate terms or conditions or stop
|
343 |
+
distributing the Licensed Material at any time; however, doing so
|
344 |
+
will not terminate this Public License.
|
345 |
+
|
346 |
+
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
347 |
+
License.
|
348 |
+
|
349 |
+
Section 7 -- Other Terms and Conditions.
|
350 |
+
|
351 |
+
a. The Licensor shall not be bound by any additional or different
|
352 |
+
terms or conditions communicated by You unless expressly agreed.
|
353 |
+
|
354 |
+
b. Any arrangements, understandings, or agreements regarding the
|
355 |
+
Licensed Material not stated herein are separate from and
|
356 |
+
independent of the terms and conditions of this Public License.
|
357 |
+
|
358 |
+
Section 8 -- Interpretation.
|
359 |
+
|
360 |
+
a. For the avoidance of doubt, this Public License does not, and
|
361 |
+
shall not be interpreted to, reduce, limit, restrict, or impose
|
362 |
+
conditions on any use of the Licensed Material that could lawfully
|
363 |
+
be made without permission under this Public License.
|
364 |
+
|
365 |
+
b. To the extent possible, if any provision of this Public License is
|
366 |
+
deemed unenforceable, it shall be automatically reformed to the
|
367 |
+
minimum extent necessary to make it enforceable. If the provision
|
368 |
+
cannot be reformed, it shall be severed from this Public License
|
369 |
+
without affecting the enforceability of the remaining terms and
|
370 |
+
conditions.
|
371 |
+
|
372 |
+
c. No term or condition of this Public License will be waived and no
|
373 |
+
failure to comply consented to unless expressly agreed to by the
|
374 |
+
Licensor.
|
375 |
+
|
376 |
+
d. Nothing in this Public License constitutes or may be interpreted
|
377 |
+
as a limitation upon, or waiver of, any privileges and immunities
|
378 |
+
that apply to the Licensor or You, including from the legal
|
379 |
+
processes of any jurisdiction or authority.
|
380 |
+
|
381 |
+
=======================================================================
|
382 |
+
|
383 |
+
Creative Commons is not a party to its public
|
384 |
+
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
385 |
+
its public licenses to material it publishes and in those instances
|
386 |
+
will be considered the “Licensor.” The text of the Creative Commons
|
387 |
+
public licenses is dedicated to the public domain under the CC0 Public
|
388 |
+
Domain Dedication. Except for the limited purpose of indicating that
|
389 |
+
material is shared under a Creative Commons public license or as
|
390 |
+
otherwise permitted by the Creative Commons policies published at
|
391 |
+
creativecommons.org/policies, Creative Commons does not authorize the
|
392 |
+
use of the trademark "Creative Commons" or any other trademark or logo
|
393 |
+
of Creative Commons without its prior written consent including,
|
394 |
+
without limitation, in connection with any unauthorized modifications
|
395 |
+
to any of its public licenses or any other arrangements,
|
396 |
+
understandings, or agreements concerning use of licensed material. For
|
397 |
+
the avoidance of doubt, this paragraph does not form part of the
|
398 |
+
public licenses.
|
399 |
+
|
400 |
+
Creative Commons may be contacted at creativecommons.org.
|
PLCMOS/models/plcmos_v0.onnx
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:34ca776550b1ef611eca849463ad9de52e4f27b2a26632969ae44b7530d8f934
|
3 |
+
size 690971
|
PLCMOS/models/plcmos_v1_intrusive.onnx
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:748d2c08694d46aff31668c00c5182b0338d5441edafb1092cb8ecdfd71d286e
|
3 |
+
size 279978
|
PLCMOS/models/plcmos_v1_nonintrusive.onnx
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:9aca9f5ddd998f0a304cc063b6620832c37cf65627c242accffb8dc38acb8c79
|
3 |
+
size 128653
|
PLCMOS/plc_mos.py
ADDED
@@ -0,0 +1,247 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import math
|
2 |
+
import os
|
3 |
+
|
4 |
+
import librosa
|
5 |
+
import numpy as np
|
6 |
+
import onnxruntime as ort
|
7 |
+
from numpy.fft import rfft
|
8 |
+
from numpy.lib.stride_tricks import as_strided
|
9 |
+
|
10 |
+
from utils.utils import LSD
|
11 |
+
|
12 |
+
|
13 |
+
class PLCMOSEstimator():
|
14 |
+
def __init__(self, model_version=1):
|
15 |
+
"""
|
16 |
+
Initialize a PLC-MOS model of a given version. There are currently three models available, v0 (intrusive)
|
17 |
+
and v1 (both non-intrusive and intrusive available). The default is to use the v1 models.
|
18 |
+
"""
|
19 |
+
|
20 |
+
self.model_version = model_version
|
21 |
+
model_paths = [
|
22 |
+
# v0 model:
|
23 |
+
[("models/plcmos_v0.onnx", 999999999999), (None, 0)],
|
24 |
+
|
25 |
+
# v1 models:
|
26 |
+
[("models/plcmos_v1_intrusive.onnx", 768),
|
27 |
+
("models/plcmos_v1_nonintrusive.onnx", 999999999999)],
|
28 |
+
]
|
29 |
+
self.sessions = []
|
30 |
+
self.max_lens = []
|
31 |
+
options = ort.SessionOptions()
|
32 |
+
options.intra_op_num_threads = 8
|
33 |
+
options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_ALL
|
34 |
+
for path, max_len in model_paths[model_version]:
|
35 |
+
if not path is None:
|
36 |
+
file_dir = os.path.dirname(os.path.realpath(__file__))
|
37 |
+
self.sessions.append(ort.InferenceSession(
|
38 |
+
os.path.join(file_dir, path), options))
|
39 |
+
self.max_lens.append(max_len)
|
40 |
+
else:
|
41 |
+
self.sessions.append(None)
|
42 |
+
self.max_lens.append(0)
|
43 |
+
|
44 |
+
def logpow_dns(self, sig, floor=-30.):
|
45 |
+
"""
|
46 |
+
Compute log power of complex spectrum.
|
47 |
+
|
48 |
+
Floor any -`np.inf` value to (nonzero minimum + `floor`) dB.
|
49 |
+
If all values are 0s, floor all values to -80 dB.
|
50 |
+
"""
|
51 |
+
log10e = np.log10(np.e)
|
52 |
+
pspec = sig.real ** 2 + sig.imag ** 2
|
53 |
+
zeros = pspec == 0
|
54 |
+
logp = np.empty_like(pspec)
|
55 |
+
if np.any(~zeros):
|
56 |
+
logp[~zeros] = np.log(pspec[~zeros])
|
57 |
+
logp[zeros] = np.log(pspec[~zeros].min()) + floor / 10 / log10e
|
58 |
+
else:
|
59 |
+
logp.fill(-80 / 10 / log10e)
|
60 |
+
|
61 |
+
return logp
|
62 |
+
|
63 |
+
def hop2hsize(self, wind, hop):
|
64 |
+
"""
|
65 |
+
Convert hop fraction to integer size if necessary.
|
66 |
+
"""
|
67 |
+
if hop >= 1:
|
68 |
+
assert type(hop) == int, "Hop size must be integer!"
|
69 |
+
return hop
|
70 |
+
else:
|
71 |
+
assert 0 < hop < 1, "Hop fraction has to be in range (0,1)!"
|
72 |
+
return int(len(wind) * hop)
|
73 |
+
|
74 |
+
def stana(self, sig, sr, wind, hop, synth=False, center=False):
|
75 |
+
"""
|
76 |
+
Short term analysis by windowing
|
77 |
+
"""
|
78 |
+
ssize = len(sig)
|
79 |
+
fsize = len(wind)
|
80 |
+
hsize = self.hop2hsize(wind, hop)
|
81 |
+
if synth:
|
82 |
+
sstart = hsize - fsize # int(-fsize * (1-hfrac))
|
83 |
+
elif center:
|
84 |
+
sstart = -int(len(wind) / 2) # odd window centered at exactly n=0
|
85 |
+
else:
|
86 |
+
sstart = 0
|
87 |
+
send = ssize
|
88 |
+
|
89 |
+
nframe = math.ceil((send - sstart) / hsize)
|
90 |
+
|
91 |
+
# Calculate zero-padding sizes
|
92 |
+
zpleft = -sstart
|
93 |
+
zpright = (nframe - 1) * hsize + fsize - zpleft - ssize
|
94 |
+
if zpleft > 0 or zpright > 0:
|
95 |
+
sigpad = np.zeros(ssize + zpleft + zpright, dtype=sig.dtype)
|
96 |
+
sigpad[zpleft:len(sigpad) - zpright] = sig
|
97 |
+
else:
|
98 |
+
sigpad = sig
|
99 |
+
|
100 |
+
return as_strided(sigpad, shape=(nframe, fsize),
|
101 |
+
strides=(sig.itemsize * hsize, sig.itemsize)) * wind
|
102 |
+
|
103 |
+
def stft(self, sig, sr, wind, hop, nfft):
|
104 |
+
"""
|
105 |
+
Compute STFT: window + rfft
|
106 |
+
"""
|
107 |
+
frames = self.stana(sig, sr, wind, hop, synth=True)
|
108 |
+
return rfft(frames, n=nfft)
|
109 |
+
|
110 |
+
def stft_transform(self, audio, dft_size=512, hop_fraction=0.5, sr=16000):
|
111 |
+
"""
|
112 |
+
Compute STFT parameters, then compute STFT
|
113 |
+
"""
|
114 |
+
window = np.hamming(dft_size + 1)
|
115 |
+
window = window[:-1]
|
116 |
+
amp = np.abs(self.stft(audio, sr, window, hop_fraction, dft_size))
|
117 |
+
feat = self.logpow_dns(amp, floor=-120.)
|
118 |
+
return feat / 20.
|
119 |
+
|
120 |
+
def run(self, audio_degraded, audio_clean=None, combined=False):
|
121 |
+
"""
|
122 |
+
Run the PLCMOS model and return the MOS for the given audio. If a clean audio file is passed and the
|
123 |
+
selected model version has an intrusive version, that version will be used, otherwise, the nonintrusive
|
124 |
+
model will be used. If combined is set to true (default), the mean of intrusive and nonintrusive models
|
125 |
+
results will be returned, when both are available
|
126 |
+
|
127 |
+
For intrusive models, the clean reference should be the unprocessed audio file the degraded audio is
|
128 |
+
based on. It is not required to be aligned with the degraded audio.
|
129 |
+
|
130 |
+
Audio data should be 16kHz, mono, [-1, 1] range.
|
131 |
+
"""
|
132 |
+
audio_features_degraded = np.float32(self.stft_transform(audio_degraded))[
|
133 |
+
np.newaxis, np.newaxis, ...]
|
134 |
+
assert len(
|
135 |
+
audio_features_degraded) <= self.max_lens[0], "Maximum input length exceeded"
|
136 |
+
|
137 |
+
if audio_clean is None:
|
138 |
+
combined = False
|
139 |
+
|
140 |
+
mos = 0
|
141 |
+
|
142 |
+
session = self.sessions[0]
|
143 |
+
assert not session is None, "Intrusive model not available for this model version."
|
144 |
+
audio_features_clean = np.float32(self.stft_transform(audio_clean))[
|
145 |
+
np.newaxis, np.newaxis, ...]
|
146 |
+
assert len(
|
147 |
+
audio_features_clean) <= self.max_lens[0], "Maximum input length exceeded"
|
148 |
+
onnx_inputs = {"degraded_audio": audio_features_degraded,
|
149 |
+
"clean_audio": audio_features_clean}
|
150 |
+
mos = float(session.run(None, onnx_inputs)[0])
|
151 |
+
|
152 |
+
session = self.sessions[1]
|
153 |
+
assert not session is None, "Nonintrusive model not available for this model version."
|
154 |
+
onnx_inputs = {"degraded_audio": audio_features_degraded}
|
155 |
+
mos_2 = float(session.run(None, onnx_inputs)[0])
|
156 |
+
mos = [mos, mos_2]
|
157 |
+
return mos
|
158 |
+
|
159 |
+
|
160 |
+
def run_with_defaults(degraded, clean, allow_set_size_difference=False, progress=False, model_ver=1):
|
161 |
+
import soundfile as sf
|
162 |
+
import glob
|
163 |
+
import tqdm
|
164 |
+
import pandas as pd
|
165 |
+
|
166 |
+
if os.path.isfile(degraded):
|
167 |
+
degraded = [degraded]
|
168 |
+
else:
|
169 |
+
degraded = list(glob.glob(os.path.join(degraded, "*.wav")))
|
170 |
+
|
171 |
+
if os.path.isfile(clean):
|
172 |
+
clean = [clean] * len(degraded)
|
173 |
+
else:
|
174 |
+
clean = list(glob.glob(os.path.join(clean, "*.wav")))
|
175 |
+
|
176 |
+
degraded = list(sorted(degraded))
|
177 |
+
clean = list(sorted(clean))
|
178 |
+
|
179 |
+
if not allow_set_size_difference:
|
180 |
+
assert len(degraded) == len(clean)
|
181 |
+
|
182 |
+
clean_dict = {os.path.basename(x): x for x in clean}
|
183 |
+
clean = []
|
184 |
+
for degraded_name in degraded:
|
185 |
+
clean.append(clean_dict[os.path.basename(degraded_name)])
|
186 |
+
assert len(degraded) == len(clean)
|
187 |
+
|
188 |
+
iter = zip(degraded, clean)
|
189 |
+
if progress:
|
190 |
+
iter = tqdm.tqdm(iter, total=len(degraded))
|
191 |
+
results = []
|
192 |
+
|
193 |
+
estimator = PLCMOSEstimator(model_version=model_ver)
|
194 |
+
intr = []
|
195 |
+
nonintr = []
|
196 |
+
lsds = []
|
197 |
+
sisdrs = []
|
198 |
+
for degraded_name, clean_name in iter:
|
199 |
+
audio_degraded, sr_degraded = sf.read(degraded_name)
|
200 |
+
audio_clean, sr_clean = sf.read(clean_name)
|
201 |
+
lsd = LSD(audio_clean, audio_degraded)
|
202 |
+
audio_degraded = librosa.resample(audio_degraded, 48000, 16000, res_type='kaiser_fast')
|
203 |
+
audio_clean = librosa.resample(audio_clean, 48000, 16000, res_type='kaiser_fast')
|
204 |
+
|
205 |
+
score = estimator.run(audio_degraded, audio_clean)
|
206 |
+
results.append(
|
207 |
+
{
|
208 |
+
"filename_degraded": degraded_name,
|
209 |
+
"filename_clean": clean_name,
|
210 |
+
"intrusive" + str(model_ver): score[0],
|
211 |
+
"non-intrusive" + str(model_ver): score[1],
|
212 |
+
|
213 |
+
}
|
214 |
+
)
|
215 |
+
lsds.append(lsd)
|
216 |
+
intr.append(score[0])
|
217 |
+
nonintr.append(score[1])
|
218 |
+
iter.set_description("Intru {}, Non-Intr {}, LSD {}, SISDR {}".format(sum(intr) / len(intr),
|
219 |
+
sum(nonintr) / len(nonintr),
|
220 |
+
sum(lsds) / len(lsds),
|
221 |
+
sum(sisdrs) / len(sisdrs)))
|
222 |
+
|
223 |
+
return pd.DataFrame(results)
|
224 |
+
|
225 |
+
|
226 |
+
if __name__ == "__main__":
|
227 |
+
import argparse
|
228 |
+
|
229 |
+
parser = argparse.ArgumentParser()
|
230 |
+
parser.add_argument("--degraded", type=str, required=True, help="Path to folder with degraded audio files")
|
231 |
+
parser.add_argument("--clean", type=str, required=True, help="Path to folder with clean audio files")
|
232 |
+
parser.add_argument("--model-ver", type=int, default=1, help="Model version to use")
|
233 |
+
parser.add_argument("--out-csv", type=str, default=None, help="Path to output CSV file, if CSV output is desired")
|
234 |
+
parser.add_argument("--allow-set-size-difference", type=bool, default=True,
|
235 |
+
help="Set to true to allow the number of degraded and clean audio files to be different")
|
236 |
+
args = parser.parse_args()
|
237 |
+
|
238 |
+
results = run_with_defaults(args.degraded, args.clean, args.allow_set_size_difference, True, args.model_ver)
|
239 |
+
|
240 |
+
if args.out_csv is not None:
|
241 |
+
results.to_csv(args.out_csv)
|
242 |
+
else:
|
243 |
+
import pandas as pd
|
244 |
+
|
245 |
+
pd.set_option("display.max_rows", None)
|
246 |
+
# print(results)
|
247 |
+
print("")
|
README.md
ADDED
@@ -0,0 +1,193 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: FRN
|
3 |
+
emoji: 📉
|
4 |
+
colorFrom: gray
|
5 |
+
colorTo: red
|
6 |
+
sdk: static
|
7 |
+
pinned: false
|
8 |
+
---
|
9 |
+
|
10 |
+
# FRN - Full-band Recurrent Network Official Implementation
|
11 |
+
|
12 |
+
**Improving performance of real-time full-band blind packet-loss concealment with predictive network - submitted to ICASSP 2023**
|
13 |
+
|
14 |
+
[![Generic badge](https://img.shields.io/badge/arXiv-2211.04071-brightgreen.svg?style=flat-square)](https://arxiv.org/abs/2211.04071)
|
15 |
+
[![Generic badge](https://img.shields.io/github/stars/Crystalsound/FRN?color=yellow&label=FRN&logo=github&style=flat-square)](https://github.com/Crystalsound/FRN/)
|
16 |
+
[![Generic badge](https://img.shields.io/github/last-commit/Crystalsound/FRN?color=blue&label=last%20commit&style=flat-square)](https://github.com/Crystalsound/FRN/commits)
|
17 |
+
|
18 |
+
## License and citation
|
19 |
+
|
20 |
+
This repository is released under the CC-BY-NC 4.0. license as found in the LICENSE file.
|
21 |
+
|
22 |
+
If you use our software, please cite as below.
|
23 |
+
For future queries, please contact [[email protected]](mailto:[email protected]).
|
24 |
+
|
25 |
+
Copyright © 2022 NAMI TECHNOLOGY JSC, Inc. All rights reserved.
|
26 |
+
|
27 |
+
```
|
28 |
+
@misc{Nguyen2022ImprovingPO,
|
29 |
+
title={Improving performance of real-time full-band blind packet-loss concealment with predictive network},
|
30 |
+
author={Viet-Anh Nguyen and Anh H. T. Nguyen and Andy W. H. Khong},
|
31 |
+
year={2022},
|
32 |
+
eprint={2211.04071},
|
33 |
+
archivePrefix={arXiv},
|
34 |
+
primaryClass={cs.LG}
|
35 |
+
}
|
36 |
+
```
|
37 |
+
|
38 |
+
# 1. Results
|
39 |
+
|
40 |
+
Our model achieved a significant gain over baselines. Here, we include the predicted packet loss concealment
|
41 |
+
mean-opinion-score (PLCMOS) using Microsoft's [PLCMOS](https://github.com/microsoft/PLC-Challenge/tree/main/PLCMOS)
|
42 |
+
service. Please refer to our paper for more benchmarks.
|
43 |
+
|
44 |
+
| Model | PLCMOS |
|
45 |
+
|---------|-----------|
|
46 |
+
| Input | 3.517 |
|
47 |
+
| tPLC | 3.463 |
|
48 |
+
| TFGAN | 3.645 |
|
49 |
+
| **FRN** | **3.655** |
|
50 |
+
|
51 |
+
We also provide several audio samples in [https://crystalsound.github.io/FRN/](https://crystalsound.github.io/FRN/) for
|
52 |
+
comparison.
|
53 |
+
|
54 |
+
# 2. Installation
|
55 |
+
|
56 |
+
## Setup
|
57 |
+
|
58 |
+
### Clone the repo
|
59 |
+
|
60 |
+
```
|
61 |
+
$ git clone https://github.com/Crystalsound/FRN.git
|
62 |
+
$ cd FRN
|
63 |
+
```
|
64 |
+
|
65 |
+
### Install dependencies
|
66 |
+
|
67 |
+
* Our implementation requires the `libsndfile` libraries for the Python packages `soundfile`. On Ubuntu, they can be
|
68 |
+
easily installed using `apt-get`:
|
69 |
+
```
|
70 |
+
$ apt-get update && apt-get install libsndfile-dev
|
71 |
+
```
|
72 |
+
* Create a Python 3.8 environment. Conda is recommended:
|
73 |
+
```
|
74 |
+
$ conda create -n frn python=3.8
|
75 |
+
$ conda activate frn
|
76 |
+
```
|
77 |
+
|
78 |
+
* Install the requirements:
|
79 |
+
```
|
80 |
+
$ pip install -r requirements.txt
|
81 |
+
```
|
82 |
+
|
83 |
+
# 3. Data preparation
|
84 |
+
|
85 |
+
In our paper, we conduct experiments on the [VCTK](https://datashare.ed.ac.uk/handle/10283/3443) dataset.
|
86 |
+
|
87 |
+
* Download and extract the datasets:
|
88 |
+
```
|
89 |
+
$ wget http://www.udialogue.org/download/VCTK-Corpus.tar.gz -O data/vctk/VCTK-Corpus.tar.gz
|
90 |
+
$ tar -zxvf data/vctk/VCTK-Corpus.tar.gz -C data/vctk/ --strip-components=1
|
91 |
+
```
|
92 |
+
|
93 |
+
After extracting the datasets, your `./data` directory should look like this:
|
94 |
+
|
95 |
+
```
|
96 |
+
.
|
97 |
+
|--data
|
98 |
+
|--vctk
|
99 |
+
|--wav48
|
100 |
+
|--p225
|
101 |
+
|--p225_001.wav
|
102 |
+
...
|
103 |
+
|--train.txt
|
104 |
+
|--test.txt
|
105 |
+
```
|
106 |
+
* In order to load the datasets, text files that contain training and testing audio paths are required. We have
|
107 |
+
prepared `train.txt` and `test.txt` files in `./data/vctk` directory.
|
108 |
+
|
109 |
+
# 4. Run the code
|
110 |
+
|
111 |
+
## Configuration
|
112 |
+
|
113 |
+
`config.py` is the most important file. Here, you can find all the configurations related to experiment setups,
|
114 |
+
datasets, models, training, testing, etc. Although the config file has been explained thoroughly, we recommend reading
|
115 |
+
our paper to fully understand each parameter.
|
116 |
+
|
117 |
+
## Training
|
118 |
+
|
119 |
+
* Adjust training hyperparameters in `config.py`. We provide the pretrained predictor in `lightning_logs/predictor` as stated in our paper. The FRN model can be trained entirely from scratch and will work as well. In this case, initiate `PLCModel(..., pred_ckpt_path=None)`.
|
120 |
+
|
121 |
+
* Run `main.py`:
|
122 |
+
```
|
123 |
+
$ python main.py --mode train
|
124 |
+
```
|
125 |
+
* Each run will create a version in `./lightning_logs`, where the model checkpoint and hyperparameters are saved. In
|
126 |
+
case you want to continue training from one of these versions, just set the argument `--version` of the above command
|
127 |
+
to your desired version number. For example:
|
128 |
+
```
|
129 |
+
# resume from version 0
|
130 |
+
$ python main.py --mode train --version 0
|
131 |
+
```
|
132 |
+
* To monitor the training curves as well as inspect model output visualization, run the tensorboard:
|
133 |
+
```
|
134 |
+
$ tensorboard --logdir=./lightning_logs --bind_all
|
135 |
+
```
|
136 |
+
![image.png](https://images.viblo.asia/eb2246f9-2747-43b9-8f78-d6c154144716.png)
|
137 |
+
|
138 |
+
## Evaluation
|
139 |
+
|
140 |
+
In our paper, we evaluated with 2 masking methods: simulation using Markov Chain and employing real traces in PLC
|
141 |
+
Challenge.
|
142 |
+
|
143 |
+
* Get the blind test set with loss traces:
|
144 |
+
```
|
145 |
+
$ wget http://plcchallenge2022pub.blob.core.windows.net/plcchallengearchive/blind.tar.gz
|
146 |
+
$ tar -xvf blind.tar.gz -C test_samples
|
147 |
+
```
|
148 |
+
* Modify `config.py` to change evaluation setup if necessary.
|
149 |
+
* Run `main.py` with a version number to be evaluated:
|
150 |
+
```
|
151 |
+
$ python main.py --mode eval --version 0
|
152 |
+
```
|
153 |
+
During the evaluation, several output samples are saved to `CONFIG.LOG.sample_path` for sanity testing.
|
154 |
+
|
155 |
+
## Configure a new dataset
|
156 |
+
|
157 |
+
Our implementation currently works with the VCTK dataset but can be easily extensible to a new one.
|
158 |
+
|
159 |
+
* Firstly, you need to prepare `train.txt` and `test.txt`. See `./data/vctk/train.txt` and `./data/vctk/test.txt` for
|
160 |
+
example.
|
161 |
+
* Secondly, add a new dictionary to `CONFIG.DATA.data_dir`:
|
162 |
+
```
|
163 |
+
{
|
164 |
+
'root': 'path/to/data/directory',
|
165 |
+
'train': 'path/to/train.txt',
|
166 |
+
'test': 'path/to/test.txt'
|
167 |
+
}
|
168 |
+
```
|
169 |
+
**Important:** Make sure each line in `train.txt` and `test.txt` joining with `'root'` is a valid path to its
|
170 |
+
corresponding audio file.
|
171 |
+
|
172 |
+
# 5. Audio generation
|
173 |
+
|
174 |
+
* In order to generate output audios, you need to modify `CONFIG.TEST.in_dir` to your input directory.
|
175 |
+
* Run `main.py`:
|
176 |
+
```
|
177 |
+
python main.py --mode test --version 0
|
178 |
+
```
|
179 |
+
The generated audios are saved to `CONFIG.TEST.out_dir`.
|
180 |
+
|
181 |
+
## ONNX inferencing
|
182 |
+
We provide ONNX inferencing scripts and the best ONNX model (converted from the best checkpoint)
|
183 |
+
at `lightning_logs/best_model.onnx`.
|
184 |
+
* Convert a checkpoint to an ONNX model:
|
185 |
+
```
|
186 |
+
python main.py --mode onnx --version 0
|
187 |
+
```
|
188 |
+
The converted ONNX model will be saved to `lightning_logs/version_0/checkpoints`.
|
189 |
+
* Put test audios in `test_samples` and inference with the converted ONNX model (see `inference_onnx.py` for more
|
190 |
+
details):
|
191 |
+
```
|
192 |
+
python inference_onnx.py --onnx_path lightning_logs/version_0/frn.onnx
|
193 |
+
```
|
audio_samples/sample_1/FRN_enhanced.wav
ADDED
Binary file (524 kB). View file
|
|
audio_samples/sample_1/TFGAN_enhanced.wav
ADDED
Binary file (522 kB). View file
|
|
audio_samples/sample_1/clean.wav
ADDED
Binary file (524 kB). View file
|
|
audio_samples/sample_1/lossy.wav
ADDED
Binary file (524 kB). View file
|
|
audio_samples/sample_1/tPLC_enhanced.wav
ADDED
Binary file (524 kB). View file
|
|
audio_samples/sample_2/FRN_enhanced.wav
ADDED
Binary file (618 kB). View file
|
|
audio_samples/sample_2/TFGAN_enhanced.wav
ADDED
Binary file (614 kB). View file
|
|
audio_samples/sample_2/clean.wav
ADDED
Binary file (618 kB). View file
|
|
audio_samples/sample_2/lossy.wav
ADDED
Binary file (618 kB). View file
|
|
audio_samples/sample_2/tPLC_enhanced.wav
ADDED
Binary file (618 kB). View file
|
|
audio_samples/sample_3/FRN_enhanced.wav
ADDED
Binary file (958 kB). View file
|
|
audio_samples/sample_3/TFGAN_enhanced.wav
ADDED
Binary file (952 kB). View file
|
|
audio_samples/sample_3/clean.wav
ADDED
Binary file (958 kB). View file
|
|
audio_samples/sample_3/lossy.wav
ADDED
Binary file (958 kB). View file
|
|
audio_samples/sample_3/tPLC_enhanced.wav
ADDED
Binary file (958 kB). View file
|
|
config.py
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
class CONFIG:
|
2 |
+
gpus = "0,1" # List of gpu devices
|
3 |
+
|
4 |
+
class TRAIN:
|
5 |
+
batch_size = 90 # number of audio files per batch
|
6 |
+
lr = 1e-4 # learning rate
|
7 |
+
epochs = 150 # max training epochs
|
8 |
+
workers = 12 # number of dataloader workers
|
9 |
+
val_split = 0.1 # validation set proportion
|
10 |
+
clipping_val = 1.0 # gradient clipping value
|
11 |
+
patience = 3 # learning rate scheduler's patience
|
12 |
+
factor = 0.5 # learning rate reduction factor
|
13 |
+
|
14 |
+
# Model config
|
15 |
+
class MODEL:
|
16 |
+
enc_layers = 4 # number of MLP blocks in the encoder
|
17 |
+
enc_in_dim = 384 # dimension of the input projection layer in the encoder
|
18 |
+
enc_dim = 768 # dimension of the MLP blocks
|
19 |
+
pred_dim = 512 # dimension of the LSTM in the predictor
|
20 |
+
pred_layers = 1 # number of LSTM layers in the predictor
|
21 |
+
|
22 |
+
# Dataset config
|
23 |
+
class DATA:
|
24 |
+
dataset = 'vctk' # dataset to use
|
25 |
+
'''
|
26 |
+
Dictionary that specifies paths to root directories and train/test text files of each datasets.
|
27 |
+
'root' is the path to the dataset and each line of the train.txt/test.txt files should contains the path to an
|
28 |
+
audio file from 'root'.
|
29 |
+
'''
|
30 |
+
data_dir = {'vctk': {'root': 'data/vctk/wav48',
|
31 |
+
'train': "data/vctk/train.txt",
|
32 |
+
'test': "data/vctk/test.txt"},
|
33 |
+
}
|
34 |
+
|
35 |
+
assert dataset in data_dir.keys(), 'Unknown dataset.'
|
36 |
+
sr = 48000 # audio sampling rate
|
37 |
+
audio_chunk_len = 122880 # size of chunk taken in each audio files
|
38 |
+
window_size = 960 # window size of the STFT operation, equivalent to packet size
|
39 |
+
stride = 480 # stride of the STFT operation
|
40 |
+
|
41 |
+
class TRAIN:
|
42 |
+
packet_sizes = [256, 512, 768, 960, 1024,
|
43 |
+
1536] # packet sizes for training. All sizes should be divisible by 'audio_chunk_len'
|
44 |
+
transition_probs = ((0.9, 0.1), (0.5, 0.1), (0.5, 0.5)) # list of trainsition probs for Markow Chain
|
45 |
+
|
46 |
+
class EVAL:
|
47 |
+
packet_size = 960 # 20ms
|
48 |
+
transition_probs = ((0.9, 0.1)) # (0.9, 0.1) ~ 10%; (0.8, 0.2) ~ 20%; (0.6, 0.4) ~ 40%
|
49 |
+
masking = 'gen' # whether using simulation or real traces from Microsoft to generate masks
|
50 |
+
assert masking in ['gen', 'real']
|
51 |
+
trace_path = 'test_samples/blind/lossy_singals' # must be clarified if masking = 'real'
|
52 |
+
|
53 |
+
class LOG:
|
54 |
+
log_dir = 'lightning_logs' # checkpoint and log directory
|
55 |
+
sample_path = 'audio_samples' # path to save generated audio samples in evaluation.
|
56 |
+
|
57 |
+
class TEST:
|
58 |
+
in_dir = 'test_samples/blind/lossy_signals' # path to test audio inputs
|
59 |
+
out_dir = 'test_samples/blind/lossy_signals_out' # path to generated outputs
|
css/styles.css
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
body {
|
2 |
+
margin: 60px auto;
|
3 |
+
width: 70%;
|
4 |
+
}
|
5 |
+
|
6 |
+
nav ul, footer ul {
|
7 |
+
font-family: 'Helvetica', 'Arial', 'Sans-Serif';
|
8 |
+
padding: 0px;
|
9 |
+
list-style: none;
|
10 |
+
font-weight: bold;
|
11 |
+
}
|
12 |
+
|
13 |
+
nav ul li, footer ul li {
|
14 |
+
display: inline;
|
15 |
+
margin-right: 20px;
|
16 |
+
}
|
17 |
+
|
18 |
+
a {
|
19 |
+
text-decoration: none;
|
20 |
+
color: #999;
|
21 |
+
}
|
22 |
+
|
23 |
+
a:hover {
|
24 |
+
text-decoration: underline;
|
25 |
+
}
|
26 |
+
|
27 |
+
h1 {
|
28 |
+
font-size: 2em;
|
29 |
+
font-family: 'Helvetica', 'Arial', 'Sans-Serif';
|
30 |
+
}
|
31 |
+
|
32 |
+
p {
|
33 |
+
font-size: 1.2em;
|
34 |
+
line-height: 1.4em;
|
35 |
+
color: #333;
|
36 |
+
}
|
37 |
+
|
38 |
+
footer {
|
39 |
+
border-top: 1px solid #d5d5d5;
|
40 |
+
font-size: .8em;
|
41 |
+
}
|
42 |
+
|
43 |
+
ul.posts {
|
44 |
+
margin: 20px auto 40px;
|
45 |
+
font-size: 1.5em;
|
46 |
+
}
|
47 |
+
|
48 |
+
ul.posts li {
|
49 |
+
list-style: none;
|
50 |
+
}
|
data/vctk/test.txt
ADDED
@@ -0,0 +1,3552 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
p376/p376_150.wav
|
2 |
+
p376/p376_247.wav
|
3 |
+
p376/p376_181.wav
|
4 |
+
p376/p376_008.wav
|
5 |
+
p376/p376_074.wav
|
6 |
+
p376/p376_073.wav
|
7 |
+
p376/p376_157.wav
|
8 |
+
p376/p376_291.wav
|
9 |
+
p376/p376_240.wav
|
10 |
+
p376/p376_186.wav
|
11 |
+
p376/p376_125.wav
|
12 |
+
p376/p376_232.wav
|
13 |
+
p376/p376_159.wav
|
14 |
+
p376/p376_188.wav
|
15 |
+
p376/p376_001.wav
|
16 |
+
p376/p376_249.wav
|
17 |
+
p376/p376_006.wav
|
18 |
+
p376/p376_122.wav
|
19 |
+
p376/p376_235.wav
|
20 |
+
p376/p376_033.wav
|
21 |
+
p376/p376_200.wav
|
22 |
+
p376/p376_117.wav
|
23 |
+
p376/p376_207.wav
|
24 |
+
p376/p376_110.wav
|
25 |
+
p376/p376_048.wav
|
26 |
+
p376/p376_099.wav
|
27 |
+
p376/p376_034.wav
|
28 |
+
p376/p376_209.wav
|
29 |
+
p376/p376_046.wav
|
30 |
+
p376/p376_097.wav
|
31 |
+
p376/p376_275.wav
|
32 |
+
p376/p376_162.wav
|
33 |
+
p376/p376_272.wav
|
34 |
+
p376/p376_165.wav
|
35 |
+
p376/p376_119.wav
|
36 |
+
p376/p376_041.wav
|
37 |
+
p376/p376_090.wav
|
38 |
+
p376/p376_174.wav
|
39 |
+
p376/p376_263.wav
|
40 |
+
p376/p376_081.wav
|
41 |
+
p376/p376_050.wav
|
42 |
+
p376/p376_108.wav
|
43 |
+
p376/p376_086.wav
|
44 |
+
p376/p376_057.wav
|
45 |
+
p376/p376_218.wav
|
46 |
+
p376/p376_173.wav
|
47 |
+
p376/p376_264.wav
|
48 |
+
p376/p376_088.wav
|
49 |
+
p376/p376_059.wav
|
50 |
+
p376/p376_101.wav
|
51 |
+
p376/p376_216.wav
|
52 |
+
p376/p376_025.wav
|
53 |
+
p376/p376_022.wav
|
54 |
+
p376/p376_106.wav
|
55 |
+
p376/p376_211.wav
|
56 |
+
p376/p376_017.wav
|
57 |
+
p376/p376_258.wav
|
58 |
+
p376/p376_289.wav
|
59 |
+
p376/p376_224.wav
|
60 |
+
p376/p376_133.wav
|
61 |
+
p376/p376_223.wav
|
62 |
+
p376/p376_134.wav
|
63 |
+
p376/p376_010.wav
|
64 |
+
p376/p376_199.wav
|
65 |
+
p376/p376_148.wav
|
66 |
+
p376/p376_251.wav
|
67 |
+
p376/p376_197.wav
|
68 |
+
p376/p376_146.wav
|
69 |
+
p376/p376_280.wav
|
70 |
+
p376/p376_019.wav
|
71 |
+
p376/p376_256.wav
|
72 |
+
p376/p376_190.wav
|
73 |
+
p376/p376_141.wav
|
74 |
+
p376/p376_287.wav
|
75 |
+
p376/p376_065.wav
|
76 |
+
p376/p376_273.wav
|
77 |
+
p376/p376_164.wav
|
78 |
+
p376/p376_118.wav
|
79 |
+
p376/p376_040.wav
|
80 |
+
p376/p376_091.wav
|
81 |
+
p376/p376_208.wav
|
82 |
+
p376/p376_096.wav
|
83 |
+
p376/p376_274.wav
|
84 |
+
p376/p376_163.wav
|
85 |
+
p376/p376_206.wav
|
86 |
+
p376/p376_111.wav
|
87 |
+
p376/p376_049.wav
|
88 |
+
p376/p376_098.wav
|
89 |
+
p376/p376_035.wav
|
90 |
+
p376/p376_032.wav
|
91 |
+
p376/p376_201.wav
|
92 |
+
p376/p376_116.wav
|
93 |
+
p376/p376_248.wav
|
94 |
+
p376/p376_007.wav
|
95 |
+
p376/p376_123.wav
|
96 |
+
p376/p376_234.wav
|
97 |
+
p376/p376_124.wav
|
98 |
+
p376/p376_233.wav
|
99 |
+
p376/p376_158.wav
|
100 |
+
p376/p376_189.wav
|
101 |
+
p376/p376_072.wav
|
102 |
+
p376/p376_156.wav
|
103 |
+
p376/p376_290.wav
|
104 |
+
p376/p376_241.wav
|
105 |
+
p376/p376_187.wav
|
106 |
+
p376/p376_151.wav
|
107 |
+
p376/p376_246.wav
|
108 |
+
p376/p376_180.wav
|
109 |
+
p376/p376_009.wav
|
110 |
+
p376/p376_075.wav
|
111 |
+
p376/p376_018.wav
|
112 |
+
p376/p376_257.wav
|
113 |
+
p376/p376_191.wav
|
114 |
+
p376/p376_140.wav
|
115 |
+
p376/p376_286.wav
|
116 |
+
p376/p376_064.wav
|
117 |
+
p376/p376_063.wav
|
118 |
+
p376/p376_250.wav
|
119 |
+
p376/p376_196.wav
|
120 |
+
p376/p376_147.wav
|
121 |
+
p376/p376_222.wav
|
122 |
+
p376/p376_135.wav
|
123 |
+
p376/p376_011.wav
|
124 |
+
p376/p376_198.wav
|
125 |
+
p376/p376_149.wav
|
126 |
+
p376/p376_016.wav
|
127 |
+
p376/p376_259.wav
|
128 |
+
p376/p376_288.wav
|
129 |
+
p376/p376_225.wav
|
130 |
+
p376/p376_132.wav
|
131 |
+
p376/p376_023.wav
|
132 |
+
p376/p376_107.wav
|
133 |
+
p376/p376_210.wav
|
134 |
+
p376/p376_089.wav
|
135 |
+
p376/p376_058.wav
|
136 |
+
p376/p376_100.wav
|
137 |
+
p376/p376_217.wav
|
138 |
+
p376/p376_024.wav
|
139 |
+
p376/p376_087.wav
|
140 |
+
p376/p376_056.wav
|
141 |
+
p376/p376_219.wav
|
142 |
+
p376/p376_172.wav
|
143 |
+
p376/p376_265.wav
|
144 |
+
p376/p376_175.wav
|
145 |
+
p376/p376_262.wav
|
146 |
+
p376/p376_080.wav
|
147 |
+
p376/p376_051.wav
|
148 |
+
p376/p376_109.wav
|
149 |
+
p376/p376_060.wav
|
150 |
+
p376/p376_138.wav
|
151 |
+
p376/p376_195.wav
|
152 |
+
p376/p376_253.wav
|
153 |
+
p376/p376_282.wav
|
154 |
+
p376/p376_144.wav
|
155 |
+
p376/p376_192.wav
|
156 |
+
p376/p376_254.wav
|
157 |
+
p376/p376_285.wav
|
158 |
+
p376/p376_143.wav
|
159 |
+
p376/p376_067.wav
|
160 |
+
p376/p376_228.wav
|
161 |
+
p376/p376_015.wav
|
162 |
+
p376/p376_069.wav
|
163 |
+
p376/p376_226.wav
|
164 |
+
p376/p376_131.wav
|
165 |
+
p376/p376_221.wav
|
166 |
+
p376/p376_136.wav
|
167 |
+
p376/p376_012.wav
|
168 |
+
p376/p376_103.wav
|
169 |
+
p376/p376_214.wav
|
170 |
+
p376/p376_027.wav
|
171 |
+
p376/p376_268.wav
|
172 |
+
p376/p376_020.wav
|
173 |
+
p376/p376_178.wav
|
174 |
+
p376/p376_104.wav
|
175 |
+
p376/p376_213.wav
|
176 |
+
p376/p376_176.wav
|
177 |
+
p376/p376_261.wav
|
178 |
+
p376/p376_083.wav
|
179 |
+
p376/p376_052.wav
|
180 |
+
p376/p376_084.wav
|
181 |
+
p376/p376_055.wav
|
182 |
+
p376/p376_029.wav
|
183 |
+
p376/p376_171.wav
|
184 |
+
p376/p376_266.wav
|
185 |
+
p376/p376_044.wav
|
186 |
+
p376/p376_095.wav
|
187 |
+
p376/p376_277.wav
|
188 |
+
p376/p376_160.wav
|
189 |
+
p376/p376_038.wav
|
190 |
+
p376/p376_270.wav
|
191 |
+
p376/p376_167.wav
|
192 |
+
p376/p376_043.wav
|
193 |
+
p376/p376_092.wav
|
194 |
+
p376/p376_169.wav
|
195 |
+
p376/p376_031.wav
|
196 |
+
p376/p376_202.wav
|
197 |
+
p376/p376_115.wav
|
198 |
+
p376/p376_205.wav
|
199 |
+
p376/p376_112.wav
|
200 |
+
p376/p376_279.wav
|
201 |
+
p376/p376_036.wav
|
202 |
+
p376/p376_127.wav
|
203 |
+
p376/p376_230.wav
|
204 |
+
p376/p376_003.wav
|
205 |
+
p376/p376_004.wav
|
206 |
+
p376/p376_120.wav
|
207 |
+
p376/p376_237.wav
|
208 |
+
p376/p376_078.wav
|
209 |
+
p376/p376_294.wav
|
210 |
+
p376/p376_152.wav
|
211 |
+
p376/p376_183.wav
|
212 |
+
p376/p376_245.wav
|
213 |
+
p376/p376_239.wav
|
214 |
+
p376/p376_076.wav
|
215 |
+
p376/p376_129.wav
|
216 |
+
p376/p376_071.wav
|
217 |
+
p376/p376_293.wav
|
218 |
+
p376/p376_155.wav
|
219 |
+
p376/p376_184.wav
|
220 |
+
p376/p376_242.wav
|
221 |
+
p376/p376_085.wav
|
222 |
+
p376/p376_054.wav
|
223 |
+
p376/p376_028.wav
|
224 |
+
p376/p376_170.wav
|
225 |
+
p376/p376_267.wav
|
226 |
+
p376/p376_177.wav
|
227 |
+
p376/p376_260.wav
|
228 |
+
p376/p376_082.wav
|
229 |
+
p376/p376_053.wav
|
230 |
+
p376/p376_021.wav
|
231 |
+
p376/p376_179.wav
|
232 |
+
p376/p376_105.wav
|
233 |
+
p376/p376_212.wav
|
234 |
+
p376/p376_102.wav
|
235 |
+
p376/p376_215.wav
|
236 |
+
p376/p376_026.wav
|
237 |
+
p376/p376_269.wav
|
238 |
+
p376/p376_220.wav
|
239 |
+
p376/p376_137.wav
|
240 |
+
p376/p376_013.wav
|
241 |
+
p376/p376_014.wav
|
242 |
+
p376/p376_068.wav
|
243 |
+
p376/p376_227.wav
|
244 |
+
p376/p376_130.wav
|
245 |
+
p376/p376_193.wav
|
246 |
+
p376/p376_255.wav
|
247 |
+
p376/p376_284.wav
|
248 |
+
p376/p376_142.wav
|
249 |
+
p376/p376_066.wav
|
250 |
+
p376/p376_229.wav
|
251 |
+
p376/p376_061.wav
|
252 |
+
p376/p376_139.wav
|
253 |
+
p376/p376_194.wav
|
254 |
+
p376/p376_252.wav
|
255 |
+
p376/p376_283.wav
|
256 |
+
p376/p376_145.wav
|
257 |
+
p376/p376_128.wav
|
258 |
+
p376/p376_070.wav
|
259 |
+
p376/p376_292.wav
|
260 |
+
p376/p376_154.wav
|
261 |
+
p376/p376_185.wav
|
262 |
+
p376/p376_243.wav
|
263 |
+
p376/p376_295.wav
|
264 |
+
p376/p376_153.wav
|
265 |
+
p376/p376_182.wav
|
266 |
+
p376/p376_244.wav
|
267 |
+
p376/p376_238.wav
|
268 |
+
p376/p376_077.wav
|
269 |
+
p376/p376_005.wav
|
270 |
+
p376/p376_121.wav
|
271 |
+
p376/p376_236.wav
|
272 |
+
p376/p376_079.wav
|
273 |
+
p376/p376_126.wav
|
274 |
+
p376/p376_231.wav
|
275 |
+
p376/p376_002.wav
|
276 |
+
p376/p376_204.wav
|
277 |
+
p376/p376_113.wav
|
278 |
+
p376/p376_278.wav
|
279 |
+
p376/p376_037.wav
|
280 |
+
p376/p376_168.wav
|
281 |
+
p376/p376_030.wav
|
282 |
+
p376/p376_203.wav
|
283 |
+
p376/p376_114.wav
|
284 |
+
p376/p376_271.wav
|
285 |
+
p376/p376_166.wav
|
286 |
+
p376/p376_042.wav
|
287 |
+
p376/p376_093.wav
|
288 |
+
p376/p376_045.wav
|
289 |
+
p376/p376_094.wav
|
290 |
+
p376/p376_276.wav
|
291 |
+
p376/p376_161.wav
|
292 |
+
p376/p376_039.wav
|
293 |
+
p362/p362_196.wav
|
294 |
+
p362/p362_250.wav
|
295 |
+
p362/p362_281.wav
|
296 |
+
p362/p362_147.wav
|
297 |
+
p362/p362_308.wav
|
298 |
+
p362/p362_402.wav
|
299 |
+
p362/p362_063.wav
|
300 |
+
p362/p362_374.wav
|
301 |
+
p362/p362_405.wav
|
302 |
+
p362/p362_064.wav
|
303 |
+
p362/p362_373.wav
|
304 |
+
p362/p362_191.wav
|
305 |
+
p362/p362_257.wav
|
306 |
+
p362/p362_286.wav
|
307 |
+
p362/p362_140.wav
|
308 |
+
p362/p362_018.wav
|
309 |
+
p362/p362_225.wav
|
310 |
+
p362/p362_132.wav
|
311 |
+
p362/p362_259.wav
|
312 |
+
p362/p362_288.wav
|
313 |
+
p362/p362_016.wav
|
314 |
+
p362/p362_301.wav
|
315 |
+
p362/p362_198.wav
|
316 |
+
p362/p362_149.wav
|
317 |
+
p362/p362_011.wav
|
318 |
+
p362/p362_306.wav
|
319 |
+
p362/p362_222.wav
|
320 |
+
p362/p362_135.wav
|
321 |
+
p362/p362_333.wav
|
322 |
+
p362/p362_024.wav
|
323 |
+
p362/p362_100.wav
|
324 |
+
p362/p362_217.wav
|
325 |
+
p362/p362_089.wav
|
326 |
+
p362/p362_058.wav
|
327 |
+
p362/p362_107.wav
|
328 |
+
p362/p362_210.wav
|
329 |
+
p362/p362_348.wav
|
330 |
+
p362/p362_399.wav
|
331 |
+
p362/p362_334.wav
|
332 |
+
p362/p362_023.wav
|
333 |
+
p362/p362_109.wav
|
334 |
+
p362/p362_346.wav
|
335 |
+
p362/p362_080.wav
|
336 |
+
p362/p362_051.wav
|
337 |
+
p362/p362_397.wav
|
338 |
+
p362/p362_175.wav
|
339 |
+
p362/p362_262.wav
|
340 |
+
p362/p362_172.wav
|
341 |
+
p362/p362_265.wav
|
342 |
+
p362/p362_219.wav
|
343 |
+
p362/p362_341.wav
|
344 |
+
p362/p362_087.wav
|
345 |
+
p362/p362_056.wav
|
346 |
+
p362/p362_390.wav
|
347 |
+
p362/p362_274.wav
|
348 |
+
p362/p362_163.wav
|
349 |
+
p362/p362_047.wav
|
350 |
+
p362/p362_381.wav
|
351 |
+
p362/p362_350.wav
|
352 |
+
p362/p362_096.wav
|
353 |
+
p362/p362_208.wav
|
354 |
+
p362/p362_040.wav
|
355 |
+
p362/p362_421.wav
|
356 |
+
p362/p362_386.wav
|
357 |
+
p362/p362_357.wav
|
358 |
+
p362/p362_091.wav
|
359 |
+
p362/p362_118.wav
|
360 |
+
p362/p362_273.wav
|
361 |
+
p362/p362_164.wav
|
362 |
+
p362/p362_388.wav
|
363 |
+
p362/p362_359.wav
|
364 |
+
p362/p362_201.wav
|
365 |
+
p362/p362_116.wav
|
366 |
+
p362/p362_032.wav
|
367 |
+
p362/p362_325.wav
|
368 |
+
p362/p362_035.wav
|
369 |
+
p362/p362_322.wav
|
370 |
+
p362/p362_049.wav
|
371 |
+
p362/p362_098.wav
|
372 |
+
p362/p362_206.wav
|
373 |
+
p362/p362_111.wav
|
374 |
+
p362/p362_317.wav
|
375 |
+
p362/p362_158.wav
|
376 |
+
p362/p362_189.wav
|
377 |
+
p362/p362_124.wav
|
378 |
+
p362/p362_233.wav
|
379 |
+
p362/p362_123.wav
|
380 |
+
p362/p362_234.wav
|
381 |
+
p362/p362_310.wav
|
382 |
+
p362/p362_007.wav
|
383 |
+
p362/p362_299.wav
|
384 |
+
p362/p362_248.wav
|
385 |
+
p362/p362_362.wav
|
386 |
+
p362/p362_414.wav
|
387 |
+
p362/p362_075.wav
|
388 |
+
p362/p362_009.wav
|
389 |
+
p362/p362_297.wav
|
390 |
+
p362/p362_151.wav
|
391 |
+
p362/p362_180.wav
|
392 |
+
p362/p362_246.wav
|
393 |
+
p362/p362_319.wav
|
394 |
+
p362/p362_290.wav
|
395 |
+
p362/p362_156.wav
|
396 |
+
p362/p362_187.wav
|
397 |
+
p362/p362_241.wav
|
398 |
+
p362/p362_365.wav
|
399 |
+
p362/p362_413.wav
|
400 |
+
p362/p362_072.wav
|
401 |
+
p362/p362_173.wav
|
402 |
+
p362/p362_264.wav
|
403 |
+
p362/p362_218.wav
|
404 |
+
p362/p362_340.wav
|
405 |
+
p362/p362_086.wav
|
406 |
+
p362/p362_057.wav
|
407 |
+
p362/p362_391.wav
|
408 |
+
p362/p362_108.wav
|
409 |
+
p362/p362_347.wav
|
410 |
+
p362/p362_081.wav
|
411 |
+
p362/p362_050.wav
|
412 |
+
p362/p362_396.wav
|
413 |
+
p362/p362_174.wav
|
414 |
+
p362/p362_263.wav
|
415 |
+
p362/p362_106.wav
|
416 |
+
p362/p362_211.wav
|
417 |
+
p362/p362_349.wav
|
418 |
+
p362/p362_398.wav
|
419 |
+
p362/p362_335.wav
|
420 |
+
p362/p362_022.wav
|
421 |
+
p362/p362_332.wav
|
422 |
+
p362/p362_025.wav
|
423 |
+
p362/p362_101.wav
|
424 |
+
p362/p362_216.wav
|
425 |
+
p362/p362_088.wav
|
426 |
+
p362/p362_059.wav
|
427 |
+
p362/p362_199.wav
|
428 |
+
p362/p362_148.wav
|
429 |
+
p362/p362_010.wav
|
430 |
+
p362/p362_307.wav
|
431 |
+
p362/p362_223.wav
|
432 |
+
p362/p362_134.wav
|
433 |
+
p362/p362_224.wav
|
434 |
+
p362/p362_133.wav
|
435 |
+
p362/p362_258.wav
|
436 |
+
p362/p362_289.wav
|
437 |
+
p362/p362_017.wav
|
438 |
+
p362/p362_300.wav
|
439 |
+
p362/p362_404.wav
|
440 |
+
p362/p362_065.wav
|
441 |
+
p362/p362_372.wav
|
442 |
+
p362/p362_190.wav
|
443 |
+
p362/p362_256.wav
|
444 |
+
p362/p362_287.wav
|
445 |
+
p362/p362_141.wav
|
446 |
+
p362/p362_019.wav
|
447 |
+
p362/p362_197.wav
|
448 |
+
p362/p362_251.wav
|
449 |
+
p362/p362_280.wav
|
450 |
+
p362/p362_146.wav
|
451 |
+
p362/p362_309.wav
|
452 |
+
p362/p362_403.wav
|
453 |
+
p362/p362_062.wav
|
454 |
+
p362/p362_375.wav
|
455 |
+
p362/p362_318.wav
|
456 |
+
p362/p362_291.wav
|
457 |
+
p362/p362_157.wav
|
458 |
+
p362/p362_186.wav
|
459 |
+
p362/p362_240.wav
|
460 |
+
p362/p362_364.wav
|
461 |
+
p362/p362_412.wav
|
462 |
+
p362/p362_073.wav
|
463 |
+
p362/p362_363.wav
|
464 |
+
p362/p362_415.wav
|
465 |
+
p362/p362_074.wav
|
466 |
+
p362/p362_008.wav
|
467 |
+
p362/p362_296.wav
|
468 |
+
p362/p362_150.wav
|
469 |
+
p362/p362_181.wav
|
470 |
+
p362/p362_247.wav
|
471 |
+
p362/p362_122.wav
|
472 |
+
p362/p362_235.wav
|
473 |
+
p362/p362_311.wav
|
474 |
+
p362/p362_006.wav
|
475 |
+
p362/p362_298.wav
|
476 |
+
p362/p362_249.wav
|
477 |
+
p362/p362_316.wav
|
478 |
+
p362/p362_001.wav
|
479 |
+
p362/p362_159.wav
|
480 |
+
p362/p362_188.wav
|
481 |
+
p362/p362_125.wav
|
482 |
+
p362/p362_232.wav
|
483 |
+
p362/p362_034.wav
|
484 |
+
p362/p362_323.wav
|
485 |
+
p362/p362_048.wav
|
486 |
+
p362/p362_099.wav
|
487 |
+
p362/p362_207.wav
|
488 |
+
p362/p362_110.wav
|
489 |
+
p362/p362_389.wav
|
490 |
+
p362/p362_358.wav
|
491 |
+
p362/p362_200.wav
|
492 |
+
p362/p362_117.wav
|
493 |
+
p362/p362_033.wav
|
494 |
+
p362/p362_324.wav
|
495 |
+
p362/p362_041.wav
|
496 |
+
p362/p362_387.wav
|
497 |
+
p362/p362_420.wav
|
498 |
+
p362/p362_356.wav
|
499 |
+
p362/p362_090.wav
|
500 |
+
p362/p362_119.wav
|
501 |
+
p362/p362_272.wav
|
502 |
+
p362/p362_165.wav
|
503 |
+
p362/p362_275.wav
|
504 |
+
p362/p362_162.wav
|
505 |
+
p362/p362_046.wav
|
506 |
+
p362/p362_380.wav
|
507 |
+
p362/p362_351.wav
|
508 |
+
p362/p362_097.wav
|
509 |
+
p362/p362_209.wav
|
510 |
+
p362/p362_360.wav
|
511 |
+
p362/p362_077.wav
|
512 |
+
p362/p362_416.wav
|
513 |
+
p362/p362_238.wav
|
514 |
+
p362/p362_153.wav
|
515 |
+
p362/p362_295.wav
|
516 |
+
p362/p362_244.wav
|
517 |
+
p362/p362_182.wav
|
518 |
+
p362/p362_154.wav
|
519 |
+
p362/p362_292.wav
|
520 |
+
p362/p362_243.wav
|
521 |
+
p362/p362_185.wav
|
522 |
+
p362/p362_367.wav
|
523 |
+
p362/p362_070.wav
|
524 |
+
p362/p362_411.wav
|
525 |
+
p362/p362_128.wav
|
526 |
+
p362/p362_315.wav
|
527 |
+
p362/p362_002.wav
|
528 |
+
p362/p362_369.wav
|
529 |
+
p362/p362_126.wav
|
530 |
+
p362/p362_231.wav
|
531 |
+
p362/p362_079.wav
|
532 |
+
p362/p362_418.wav
|
533 |
+
p362/p362_121.wav
|
534 |
+
p362/p362_236.wav
|
535 |
+
p362/p362_312.wav
|
536 |
+
p362/p362_005.wav
|
537 |
+
p362/p362_203.wav
|
538 |
+
p362/p362_114.wav
|
539 |
+
p362/p362_030.wav
|
540 |
+
p362/p362_327.wav
|
541 |
+
p362/p362_168.wav
|
542 |
+
p362/p362_037.wav
|
543 |
+
p362/p362_320.wav
|
544 |
+
p362/p362_278.wav
|
545 |
+
p362/p362_204.wav
|
546 |
+
p362/p362_113.wav
|
547 |
+
p362/p362_039.wav
|
548 |
+
p362/p362_276.wav
|
549 |
+
p362/p362_161.wav
|
550 |
+
p362/p362_424.wav
|
551 |
+
p362/p362_383.wav
|
552 |
+
p362/p362_045.wav
|
553 |
+
p362/p362_094.wav
|
554 |
+
p362/p362_352.wav
|
555 |
+
p362/p362_384.wav
|
556 |
+
p362/p362_423.wav
|
557 |
+
p362/p362_042.wav
|
558 |
+
p362/p362_093.wav
|
559 |
+
p362/p362_355.wav
|
560 |
+
p362/p362_329.wav
|
561 |
+
p362/p362_271.wav
|
562 |
+
p362/p362_166.wav
|
563 |
+
p362/p362_082.wav
|
564 |
+
p362/p362_344.wav
|
565 |
+
p362/p362_395.wav
|
566 |
+
p362/p362_053.wav
|
567 |
+
p362/p362_177.wav
|
568 |
+
p362/p362_260.wav
|
569 |
+
p362/p362_338.wav
|
570 |
+
p362/p362_170.wav
|
571 |
+
p362/p362_267.wav
|
572 |
+
p362/p362_028.wav
|
573 |
+
p362/p362_085.wav
|
574 |
+
p362/p362_343.wav
|
575 |
+
p362/p362_392.wav
|
576 |
+
p362/p362_054.wav
|
577 |
+
p362/p362_269.wav
|
578 |
+
p362/p362_331.wav
|
579 |
+
p362/p362_026.wav
|
580 |
+
p362/p362_102.wav
|
581 |
+
p362/p362_215.wav
|
582 |
+
p362/p362_105.wav
|
583 |
+
p362/p362_212.wav
|
584 |
+
p362/p362_179.wav
|
585 |
+
p362/p362_336.wav
|
586 |
+
p362/p362_021.wav
|
587 |
+
p362/p362_227.wav
|
588 |
+
p362/p362_130.wav
|
589 |
+
p362/p362_068.wav
|
590 |
+
p362/p362_409.wav
|
591 |
+
p362/p362_014.wav
|
592 |
+
p362/p362_303.wav
|
593 |
+
p362/p362_013.wav
|
594 |
+
p362/p362_304.wav
|
595 |
+
p362/p362_220.wav
|
596 |
+
p362/p362_137.wav
|
597 |
+
p362/p362_378.wav
|
598 |
+
p362/p362_252.wav
|
599 |
+
p362/p362_194.wav
|
600 |
+
p362/p362_145.wav
|
601 |
+
p362/p362_283.wav
|
602 |
+
p362/p362_139.wav
|
603 |
+
p362/p362_061.wav
|
604 |
+
p362/p362_400.wav
|
605 |
+
p362/p362_376.wav
|
606 |
+
p362/p362_229.wav
|
607 |
+
p362/p362_066.wav
|
608 |
+
p362/p362_407.wav
|
609 |
+
p362/p362_371.wav
|
610 |
+
p362/p362_255.wav
|
611 |
+
p362/p362_193.wav
|
612 |
+
p362/p362_142.wav
|
613 |
+
p362/p362_284.wav
|
614 |
+
p362/p362_422.wav
|
615 |
+
p362/p362_385.wav
|
616 |
+
p362/p362_043.wav
|
617 |
+
p362/p362_092.wav
|
618 |
+
p362/p362_354.wav
|
619 |
+
p362/p362_328.wav
|
620 |
+
p362/p362_270.wav
|
621 |
+
p362/p362_167.wav
|
622 |
+
p362/p362_038.wav
|
623 |
+
p362/p362_277.wav
|
624 |
+
p362/p362_160.wav
|
625 |
+
p362/p362_382.wav
|
626 |
+
p362/p362_044.wav
|
627 |
+
p362/p362_095.wav
|
628 |
+
p362/p362_353.wav
|
629 |
+
p362/p362_036.wav
|
630 |
+
p362/p362_321.wav
|
631 |
+
p362/p362_279.wav
|
632 |
+
p362/p362_205.wav
|
633 |
+
p362/p362_112.wav
|
634 |
+
p362/p362_115.wav
|
635 |
+
p362/p362_031.wav
|
636 |
+
p362/p362_326.wav
|
637 |
+
p362/p362_169.wav
|
638 |
+
p362/p362_078.wav
|
639 |
+
p362/p362_419.wav
|
640 |
+
p362/p362_120.wav
|
641 |
+
p362/p362_237.wav
|
642 |
+
p362/p362_313.wav
|
643 |
+
p362/p362_004.wav
|
644 |
+
p362/p362_314.wav
|
645 |
+
p362/p362_003.wav
|
646 |
+
p362/p362_368.wav
|
647 |
+
p362/p362_127.wav
|
648 |
+
p362/p362_230.wav
|
649 |
+
p362/p362_155.wav
|
650 |
+
p362/p362_293.wav
|
651 |
+
p362/p362_242.wav
|
652 |
+
p362/p362_184.wav
|
653 |
+
p362/p362_366.wav
|
654 |
+
p362/p362_071.wav
|
655 |
+
p362/p362_410.wav
|
656 |
+
p362/p362_129.wav
|
657 |
+
p362/p362_361.wav
|
658 |
+
p362/p362_076.wav
|
659 |
+
p362/p362_417.wav
|
660 |
+
p362/p362_239.wav
|
661 |
+
p362/p362_152.wav
|
662 |
+
p362/p362_294.wav
|
663 |
+
p362/p362_245.wav
|
664 |
+
p362/p362_183.wav
|
665 |
+
p362/p362_228.wav
|
666 |
+
p362/p362_067.wav
|
667 |
+
p362/p362_406.wav
|
668 |
+
p362/p362_370.wav
|
669 |
+
p362/p362_254.wav
|
670 |
+
p362/p362_192.wav
|
671 |
+
p362/p362_143.wav
|
672 |
+
p362/p362_285.wav
|
673 |
+
p362/p362_253.wav
|
674 |
+
p362/p362_195.wav
|
675 |
+
p362/p362_144.wav
|
676 |
+
p362/p362_282.wav
|
677 |
+
p362/p362_138.wav
|
678 |
+
p362/p362_060.wav
|
679 |
+
p362/p362_401.wav
|
680 |
+
p362/p362_377.wav
|
681 |
+
p362/p362_012.wav
|
682 |
+
p362/p362_305.wav
|
683 |
+
p362/p362_221.wav
|
684 |
+
p362/p362_136.wav
|
685 |
+
p362/p362_379.wav
|
686 |
+
p362/p362_226.wav
|
687 |
+
p362/p362_131.wav
|
688 |
+
p362/p362_069.wav
|
689 |
+
p362/p362_408.wav
|
690 |
+
p362/p362_015.wav
|
691 |
+
p362/p362_302.wav
|
692 |
+
p362/p362_104.wav
|
693 |
+
p362/p362_213.wav
|
694 |
+
p362/p362_178.wav
|
695 |
+
p362/p362_337.wav
|
696 |
+
p362/p362_020.wav
|
697 |
+
p362/p362_268.wav
|
698 |
+
p362/p362_330.wav
|
699 |
+
p362/p362_027.wav
|
700 |
+
p362/p362_103.wav
|
701 |
+
p362/p362_214.wav
|
702 |
+
p362/p362_171.wav
|
703 |
+
p362/p362_266.wav
|
704 |
+
p362/p362_029.wav
|
705 |
+
p362/p362_084.wav
|
706 |
+
p362/p362_342.wav
|
707 |
+
p362/p362_393.wav
|
708 |
+
p362/p362_055.wav
|
709 |
+
p362/p362_083.wav
|
710 |
+
p362/p362_345.wav
|
711 |
+
p362/p362_394.wav
|
712 |
+
p362/p362_052.wav
|
713 |
+
p362/p362_176.wav
|
714 |
+
p362/p362_261.wav
|
715 |
+
p362/p362_339.wav
|
716 |
+
p347/p347_109.wav
|
717 |
+
p347/p347_397.wav
|
718 |
+
p347/p347_051.wav
|
719 |
+
p347/p347_080.wav
|
720 |
+
p347/p347_346.wav
|
721 |
+
p347/p347_262.wav
|
722 |
+
p347/p347_175.wav
|
723 |
+
p347/p347_265.wav
|
724 |
+
p347/p347_172.wav
|
725 |
+
p347/p347_219.wav
|
726 |
+
p347/p347_390.wav
|
727 |
+
p347/p347_056.wav
|
728 |
+
p347/p347_087.wav
|
729 |
+
p347/p347_341.wav
|
730 |
+
p347/p347_024.wav
|
731 |
+
p347/p347_333.wav
|
732 |
+
p347/p347_217.wav
|
733 |
+
p347/p347_100.wav
|
734 |
+
p347/p347_058.wav
|
735 |
+
p347/p347_089.wav
|
736 |
+
p347/p347_210.wav
|
737 |
+
p347/p347_107.wav
|
738 |
+
p347/p347_399.wav
|
739 |
+
p347/p347_348.wav
|
740 |
+
p347/p347_023.wav
|
741 |
+
p347/p347_334.wav
|
742 |
+
p347/p347_132.wav
|
743 |
+
p347/p347_225.wav
|
744 |
+
p347/p347_288.wav
|
745 |
+
p347/p347_259.wav
|
746 |
+
p347/p347_301.wav
|
747 |
+
p347/p347_016.wav
|
748 |
+
p347/p347_149.wav
|
749 |
+
p347/p347_198.wav
|
750 |
+
p347/p347_306.wav
|
751 |
+
p347/p347_011.wav
|
752 |
+
p347/p347_135.wav
|
753 |
+
p347/p347_222.wav
|
754 |
+
p347/p347_147.wav
|
755 |
+
p347/p347_281.wav
|
756 |
+
p347/p347_250.wav
|
757 |
+
p347/p347_196.wav
|
758 |
+
p347/p347_308.wav
|
759 |
+
p347/p347_374.wav
|
760 |
+
p347/p347_063.wav
|
761 |
+
p347/p347_402.wav
|
762 |
+
p347/p347_373.wav
|
763 |
+
p347/p347_064.wav
|
764 |
+
p347/p347_405.wav
|
765 |
+
p347/p347_140.wav
|
766 |
+
p347/p347_286.wav
|
767 |
+
p347/p347_257.wav
|
768 |
+
p347/p347_191.wav
|
769 |
+
p347/p347_018.wav
|
770 |
+
p347/p347_075.wav
|
771 |
+
p347/p347_414.wav
|
772 |
+
p347/p347_362.wav
|
773 |
+
p347/p347_009.wav
|
774 |
+
p347/p347_246.wav
|
775 |
+
p347/p347_180.wav
|
776 |
+
p347/p347_151.wav
|
777 |
+
p347/p347_297.wav
|
778 |
+
p347/p347_319.wav
|
779 |
+
p347/p347_241.wav
|
780 |
+
p347/p347_187.wav
|
781 |
+
p347/p347_156.wav
|
782 |
+
p347/p347_290.wav
|
783 |
+
p347/p347_072.wav
|
784 |
+
p347/p347_413.wav
|
785 |
+
p347/p347_365.wav
|
786 |
+
p347/p347_317.wav
|
787 |
+
p347/p347_189.wav
|
788 |
+
p347/p347_158.wav
|
789 |
+
p347/p347_233.wav
|
790 |
+
p347/p347_124.wav
|
791 |
+
p347/p347_234.wav
|
792 |
+
p347/p347_123.wav
|
793 |
+
p347/p347_007.wav
|
794 |
+
p347/p347_310.wav
|
795 |
+
p347/p347_248.wav
|
796 |
+
p347/p347_299.wav
|
797 |
+
p347/p347_359.wav
|
798 |
+
p347/p347_388.wav
|
799 |
+
p347/p347_116.wav
|
800 |
+
p347/p347_201.wav
|
801 |
+
p347/p347_325.wav
|
802 |
+
p347/p347_032.wav
|
803 |
+
p347/p347_322.wav
|
804 |
+
p347/p347_035.wav
|
805 |
+
p347/p347_098.wav
|
806 |
+
p347/p347_049.wav
|
807 |
+
p347/p347_111.wav
|
808 |
+
p347/p347_206.wav
|
809 |
+
p347/p347_163.wav
|
810 |
+
p347/p347_274.wav
|
811 |
+
p347/p347_096.wav
|
812 |
+
p347/p347_350.wav
|
813 |
+
p347/p347_381.wav
|
814 |
+
p347/p347_047.wav
|
815 |
+
p347/p347_208.wav
|
816 |
+
p347/p347_091.wav
|
817 |
+
p347/p347_357.wav
|
818 |
+
p347/p347_421.wav
|
819 |
+
p347/p347_386.wav
|
820 |
+
p347/p347_040.wav
|
821 |
+
p347/p347_118.wav
|
822 |
+
p347/p347_164.wav
|
823 |
+
p347/p347_273.wav
|
824 |
+
p347/p347_372.wav
|
825 |
+
p347/p347_065.wav
|
826 |
+
p347/p347_404.wav
|
827 |
+
p347/p347_141.wav
|
828 |
+
p347/p347_287.wav
|
829 |
+
p347/p347_256.wav
|
830 |
+
p347/p347_190.wav
|
831 |
+
p347/p347_019.wav
|
832 |
+
p347/p347_146.wav
|
833 |
+
p347/p347_280.wav
|
834 |
+
p347/p347_251.wav
|
835 |
+
p347/p347_197.wav
|
836 |
+
p347/p347_309.wav
|
837 |
+
p347/p347_375.wav
|
838 |
+
p347/p347_062.wav
|
839 |
+
p347/p347_403.wav
|
840 |
+
p347/p347_148.wav
|
841 |
+
p347/p347_199.wav
|
842 |
+
p347/p347_307.wav
|
843 |
+
p347/p347_010.wav
|
844 |
+
p347/p347_134.wav
|
845 |
+
p347/p347_223.wav
|
846 |
+
p347/p347_133.wav
|
847 |
+
p347/p347_224.wav
|
848 |
+
p347/p347_289.wav
|
849 |
+
p347/p347_258.wav
|
850 |
+
p347/p347_300.wav
|
851 |
+
p347/p347_017.wav
|
852 |
+
p347/p347_211.wav
|
853 |
+
p347/p347_106.wav
|
854 |
+
p347/p347_398.wav
|
855 |
+
p347/p347_349.wav
|
856 |
+
p347/p347_022.wav
|
857 |
+
p347/p347_335.wav
|
858 |
+
p347/p347_025.wav
|
859 |
+
p347/p347_332.wav
|
860 |
+
p347/p347_216.wav
|
861 |
+
p347/p347_101.wav
|
862 |
+
p347/p347_059.wav
|
863 |
+
p347/p347_088.wav
|
864 |
+
p347/p347_264.wav
|
865 |
+
p347/p347_173.wav
|
866 |
+
p347/p347_218.wav
|
867 |
+
p347/p347_391.wav
|
868 |
+
p347/p347_057.wav
|
869 |
+
p347/p347_086.wav
|
870 |
+
p347/p347_340.wav
|
871 |
+
p347/p347_108.wav
|
872 |
+
p347/p347_396.wav
|
873 |
+
p347/p347_050.wav
|
874 |
+
p347/p347_081.wav
|
875 |
+
p347/p347_347.wav
|
876 |
+
p347/p347_263.wav
|
877 |
+
p347/p347_174.wav
|
878 |
+
p347/p347_090.wav
|
879 |
+
p347/p347_356.wav
|
880 |
+
p347/p347_387.wav
|
881 |
+
p347/p347_420.wav
|
882 |
+
p347/p347_041.wav
|
883 |
+
p347/p347_119.wav
|
884 |
+
p347/p347_165.wav
|
885 |
+
p347/p347_272.wav
|
886 |
+
p347/p347_162.wav
|
887 |
+
p347/p347_275.wav
|
888 |
+
p347/p347_097.wav
|
889 |
+
p347/p347_351.wav
|
890 |
+
p347/p347_380.wav
|
891 |
+
p347/p347_046.wav
|
892 |
+
p347/p347_209.wav
|
893 |
+
p347/p347_323.wav
|
894 |
+
p347/p347_034.wav
|
895 |
+
p347/p347_099.wav
|
896 |
+
p347/p347_048.wav
|
897 |
+
p347/p347_110.wav
|
898 |
+
p347/p347_207.wav
|
899 |
+
p347/p347_358.wav
|
900 |
+
p347/p347_389.wav
|
901 |
+
p347/p347_117.wav
|
902 |
+
p347/p347_200.wav
|
903 |
+
p347/p347_324.wav
|
904 |
+
p347/p347_033.wav
|
905 |
+
p347/p347_235.wav
|
906 |
+
p347/p347_122.wav
|
907 |
+
p347/p347_006.wav
|
908 |
+
p347/p347_311.wav
|
909 |
+
p347/p347_249.wav
|
910 |
+
p347/p347_298.wav
|
911 |
+
p347/p347_001.wav
|
912 |
+
p347/p347_316.wav
|
913 |
+
p347/p347_188.wav
|
914 |
+
p347/p347_159.wav
|
915 |
+
p347/p347_232.wav
|
916 |
+
p347/p347_125.wav
|
917 |
+
p347/p347_318.wav
|
918 |
+
p347/p347_240.wav
|
919 |
+
p347/p347_186.wav
|
920 |
+
p347/p347_157.wav
|
921 |
+
p347/p347_291.wav
|
922 |
+
p347/p347_073.wav
|
923 |
+
p347/p347_412.wav
|
924 |
+
p347/p347_364.wav
|
925 |
+
p347/p347_074.wav
|
926 |
+
p347/p347_415.wav
|
927 |
+
p347/p347_363.wav
|
928 |
+
p347/p347_008.wav
|
929 |
+
p347/p347_247.wav
|
930 |
+
p347/p347_181.wav
|
931 |
+
p347/p347_150.wav
|
932 |
+
p347/p347_296.wav
|
933 |
+
p347/p347_039.wav
|
934 |
+
p347/p347_161.wav
|
935 |
+
p347/p347_276.wav
|
936 |
+
p347/p347_352.wav
|
937 |
+
p347/p347_094.wav
|
938 |
+
p347/p347_045.wav
|
939 |
+
p347/p347_424.wav
|
940 |
+
p347/p347_383.wav
|
941 |
+
p347/p347_355.wav
|
942 |
+
p347/p347_093.wav
|
943 |
+
p347/p347_384.wav
|
944 |
+
p347/p347_423.wav
|
945 |
+
p347/p347_329.wav
|
946 |
+
p347/p347_166.wav
|
947 |
+
p347/p347_271.wav
|
948 |
+
p347/p347_114.wav
|
949 |
+
p347/p347_203.wav
|
950 |
+
p347/p347_327.wav
|
951 |
+
p347/p347_030.wav
|
952 |
+
p347/p347_168.wav
|
953 |
+
p347/p347_320.wav
|
954 |
+
p347/p347_037.wav
|
955 |
+
p347/p347_278.wav
|
956 |
+
p347/p347_113.wav
|
957 |
+
p347/p347_204.wav
|
958 |
+
p347/p347_002.wav
|
959 |
+
p347/p347_315.wav
|
960 |
+
p347/p347_369.wav
|
961 |
+
p347/p347_231.wav
|
962 |
+
p347/p347_126.wav
|
963 |
+
p347/p347_418.wav
|
964 |
+
p347/p347_079.wav
|
965 |
+
p347/p347_236.wav
|
966 |
+
p347/p347_121.wav
|
967 |
+
p347/p347_005.wav
|
968 |
+
p347/p347_312.wav
|
969 |
+
p347/p347_416.wav
|
970 |
+
p347/p347_077.wav
|
971 |
+
p347/p347_360.wav
|
972 |
+
p347/p347_238.wav
|
973 |
+
p347/p347_182.wav
|
974 |
+
p347/p347_244.wav
|
975 |
+
p347/p347_295.wav
|
976 |
+
p347/p347_153.wav
|
977 |
+
p347/p347_185.wav
|
978 |
+
p347/p347_243.wav
|
979 |
+
p347/p347_292.wav
|
980 |
+
p347/p347_154.wav
|
981 |
+
p347/p347_411.wav
|
982 |
+
p347/p347_070.wav
|
983 |
+
p347/p347_367.wav
|
984 |
+
p347/p347_128.wav
|
985 |
+
p347/p347_283.wav
|
986 |
+
p347/p347_145.wav
|
987 |
+
p347/p347_194.wav
|
988 |
+
p347/p347_252.wav
|
989 |
+
p347/p347_139.wav
|
990 |
+
p347/p347_376.wav
|
991 |
+
p347/p347_400.wav
|
992 |
+
p347/p347_061.wav
|
993 |
+
p347/p347_229.wav
|
994 |
+
p347/p347_371.wav
|
995 |
+
p347/p347_407.wav
|
996 |
+
p347/p347_066.wav
|
997 |
+
p347/p347_284.wav
|
998 |
+
p347/p347_142.wav
|
999 |
+
p347/p347_193.wav
|
1000 |
+
p347/p347_255.wav
|
1001 |
+
p347/p347_130.wav
|
1002 |
+
p347/p347_227.wav
|
1003 |
+
p347/p347_409.wav
|
1004 |
+
p347/p347_068.wav
|
1005 |
+
p347/p347_303.wav
|
1006 |
+
p347/p347_014.wav
|
1007 |
+
p347/p347_304.wav
|
1008 |
+
p347/p347_013.wav
|
1009 |
+
p347/p347_137.wav
|
1010 |
+
p347/p347_220.wav
|
1011 |
+
p347/p347_378.wav
|
1012 |
+
p347/p347_269.wav
|
1013 |
+
p347/p347_026.wav
|
1014 |
+
p347/p347_331.wav
|
1015 |
+
p347/p347_215.wav
|
1016 |
+
p347/p347_102.wav
|
1017 |
+
p347/p347_212.wav
|
1018 |
+
p347/p347_105.wav
|
1019 |
+
p347/p347_179.wav
|
1020 |
+
p347/p347_021.wav
|
1021 |
+
p347/p347_336.wav
|
1022 |
+
p347/p347_053.wav
|
1023 |
+
p347/p347_395.wav
|
1024 |
+
p347/p347_344.wav
|
1025 |
+
p347/p347_082.wav
|
1026 |
+
p347/p347_260.wav
|
1027 |
+
p347/p347_177.wav
|
1028 |
+
p347/p347_338.wav
|
1029 |
+
p347/p347_267.wav
|
1030 |
+
p347/p347_170.wav
|
1031 |
+
p347/p347_028.wav
|
1032 |
+
p347/p347_054.wav
|
1033 |
+
p347/p347_392.wav
|
1034 |
+
p347/p347_343.wav
|
1035 |
+
p347/p347_085.wav
|
1036 |
+
p347/p347_184.wav
|
1037 |
+
p347/p347_242.wav
|
1038 |
+
p347/p347_293.wav
|
1039 |
+
p347/p347_155.wav
|
1040 |
+
p347/p347_410.wav
|
1041 |
+
p347/p347_071.wav
|
1042 |
+
p347/p347_366.wav
|
1043 |
+
p347/p347_129.wav
|
1044 |
+
p347/p347_417.wav
|
1045 |
+
p347/p347_076.wav
|
1046 |
+
p347/p347_361.wav
|
1047 |
+
p347/p347_239.wav
|
1048 |
+
p347/p347_183.wav
|
1049 |
+
p347/p347_245.wav
|
1050 |
+
p347/p347_294.wav
|
1051 |
+
p347/p347_152.wav
|
1052 |
+
p347/p347_419.wav
|
1053 |
+
p347/p347_078.wav
|
1054 |
+
p347/p347_237.wav
|
1055 |
+
p347/p347_120.wav
|
1056 |
+
p347/p347_004.wav
|
1057 |
+
p347/p347_313.wav
|
1058 |
+
p347/p347_003.wav
|
1059 |
+
p347/p347_314.wav
|
1060 |
+
p347/p347_368.wav
|
1061 |
+
p347/p347_230.wav
|
1062 |
+
p347/p347_127.wav
|
1063 |
+
p347/p347_321.wav
|
1064 |
+
p347/p347_036.wav
|
1065 |
+
p347/p347_279.wav
|
1066 |
+
p347/p347_112.wav
|
1067 |
+
p347/p347_205.wav
|
1068 |
+
p347/p347_115.wav
|
1069 |
+
p347/p347_202.wav
|
1070 |
+
p347/p347_326.wav
|
1071 |
+
p347/p347_031.wav
|
1072 |
+
p347/p347_169.wav
|
1073 |
+
p347/p347_354.wav
|
1074 |
+
p347/p347_092.wav
|
1075 |
+
p347/p347_043.wav
|
1076 |
+
p347/p347_422.wav
|
1077 |
+
p347/p347_385.wav
|
1078 |
+
p347/p347_328.wav
|
1079 |
+
p347/p347_167.wav
|
1080 |
+
p347/p347_270.wav
|
1081 |
+
p347/p347_038.wav
|
1082 |
+
p347/p347_160.wav
|
1083 |
+
p347/p347_277.wav
|
1084 |
+
p347/p347_353.wav
|
1085 |
+
p347/p347_095.wav
|
1086 |
+
p347/p347_044.wav
|
1087 |
+
p347/p347_382.wav
|
1088 |
+
p347/p347_266.wav
|
1089 |
+
p347/p347_171.wav
|
1090 |
+
p347/p347_029.wav
|
1091 |
+
p347/p347_055.wav
|
1092 |
+
p347/p347_393.wav
|
1093 |
+
p347/p347_342.wav
|
1094 |
+
p347/p347_084.wav
|
1095 |
+
p347/p347_052.wav
|
1096 |
+
p347/p347_394.wav
|
1097 |
+
p347/p347_345.wav
|
1098 |
+
p347/p347_083.wav
|
1099 |
+
p347/p347_261.wav
|
1100 |
+
p347/p347_176.wav
|
1101 |
+
p347/p347_339.wav
|
1102 |
+
p347/p347_213.wav
|
1103 |
+
p347/p347_104.wav
|
1104 |
+
p347/p347_178.wav
|
1105 |
+
p347/p347_020.wav
|
1106 |
+
p347/p347_337.wav
|
1107 |
+
p347/p347_268.wav
|
1108 |
+
p347/p347_027.wav
|
1109 |
+
p347/p347_330.wav
|
1110 |
+
p347/p347_214.wav
|
1111 |
+
p347/p347_103.wav
|
1112 |
+
p347/p347_305.wav
|
1113 |
+
p347/p347_012.wav
|
1114 |
+
p347/p347_136.wav
|
1115 |
+
p347/p347_221.wav
|
1116 |
+
p347/p347_379.wav
|
1117 |
+
p347/p347_131.wav
|
1118 |
+
p347/p347_226.wav
|
1119 |
+
p347/p347_408.wav
|
1120 |
+
p347/p347_069.wav
|
1121 |
+
p347/p347_302.wav
|
1122 |
+
p347/p347_015.wav
|
1123 |
+
p347/p347_228.wav
|
1124 |
+
p347/p347_370.wav
|
1125 |
+
p347/p347_406.wav
|
1126 |
+
p347/p347_067.wav
|
1127 |
+
p347/p347_285.wav
|
1128 |
+
p347/p347_143.wav
|
1129 |
+
p347/p347_192.wav
|
1130 |
+
p347/p347_254.wav
|
1131 |
+
p347/p347_282.wav
|
1132 |
+
p347/p347_144.wav
|
1133 |
+
p347/p347_195.wav
|
1134 |
+
p347/p347_253.wav
|
1135 |
+
p347/p347_138.wav
|
1136 |
+
p347/p347_377.wav
|
1137 |
+
p347/p347_401.wav
|
1138 |
+
p347/p347_060.wav
|
1139 |
+
p361/p361_205.wav
|
1140 |
+
p361/p361_112.wav
|
1141 |
+
p361/p361_036.wav
|
1142 |
+
p361/p361_321.wav
|
1143 |
+
p361/p361_279.wav
|
1144 |
+
p361/p361_031.wav
|
1145 |
+
p361/p361_326.wav
|
1146 |
+
p361/p361_169.wav
|
1147 |
+
p361/p361_202.wav
|
1148 |
+
p361/p361_115.wav
|
1149 |
+
p361/p361_328.wav
|
1150 |
+
p361/p361_270.wav
|
1151 |
+
p361/p361_167.wav
|
1152 |
+
p361/p361_043.wav
|
1153 |
+
p361/p361_385.wav
|
1154 |
+
p361/p361_422.wav
|
1155 |
+
p361/p361_354.wav
|
1156 |
+
p361/p361_092.wav
|
1157 |
+
p361/p361_044.wav
|
1158 |
+
p361/p361_382.wav
|
1159 |
+
p361/p361_353.wav
|
1160 |
+
p361/p361_095.wav
|
1161 |
+
p361/p361_038.wav
|
1162 |
+
p361/p361_277.wav
|
1163 |
+
p361/p361_160.wav
|
1164 |
+
p361/p361_366.wav
|
1165 |
+
p361/p361_410.wav
|
1166 |
+
p361/p361_071.wav
|
1167 |
+
p361/p361_129.wav
|
1168 |
+
p361/p361_293.wav
|
1169 |
+
p361/p361_155.wav
|
1170 |
+
p361/p361_184.wav
|
1171 |
+
p361/p361_242.wav
|
1172 |
+
p361/p361_294.wav
|
1173 |
+
p361/p361_152.wav
|
1174 |
+
p361/p361_183.wav
|
1175 |
+
p361/p361_245.wav
|
1176 |
+
p361/p361_361.wav
|
1177 |
+
p361/p361_417.wav
|
1178 |
+
p361/p361_076.wav
|
1179 |
+
p361/p361_239.wav
|
1180 |
+
p361/p361_313.wav
|
1181 |
+
p361/p361_004.wav
|
1182 |
+
p361/p361_419.wav
|
1183 |
+
p361/p361_078.wav
|
1184 |
+
p361/p361_120.wav
|
1185 |
+
p361/p361_237.wav
|
1186 |
+
p361/p361_368.wav
|
1187 |
+
p361/p361_127.wav
|
1188 |
+
p361/p361_230.wav
|
1189 |
+
p361/p361_314.wav
|
1190 |
+
p361/p361_003.wav
|
1191 |
+
p361/p361_221.wav
|
1192 |
+
p361/p361_136.wav
|
1193 |
+
p361/p361_379.wav
|
1194 |
+
p361/p361_012.wav
|
1195 |
+
p361/p361_305.wav
|
1196 |
+
p361/p361_015.wav
|
1197 |
+
p361/p361_302.wav
|
1198 |
+
p361/p361_226.wav
|
1199 |
+
p361/p361_408.wav
|
1200 |
+
p361/p361_069.wav
|
1201 |
+
p361/p361_192.wav
|
1202 |
+
p361/p361_254.wav
|
1203 |
+
p361/p361_285.wav
|
1204 |
+
p361/p361_143.wav
|
1205 |
+
p361/p361_228.wav
|
1206 |
+
p361/p361_406.wav
|
1207 |
+
p361/p361_067.wav
|
1208 |
+
p361/p361_370.wav
|
1209 |
+
p361/p361_138.wav
|
1210 |
+
p361/p361_401.wav
|
1211 |
+
p361/p361_060.wav
|
1212 |
+
p361/p361_377.wav
|
1213 |
+
p361/p361_195.wav
|
1214 |
+
p361/p361_253.wav
|
1215 |
+
p361/p361_282.wav
|
1216 |
+
p361/p361_144.wav
|
1217 |
+
p361/p361_342.wav
|
1218 |
+
p361/p361_084.wav
|
1219 |
+
p361/p361_055.wav
|
1220 |
+
p361/p361_393.wav
|
1221 |
+
p361/p361_171.wav
|
1222 |
+
p361/p361_266.wav
|
1223 |
+
p361/p361_029.wav
|
1224 |
+
p361/p361_176.wav
|
1225 |
+
p361/p361_261.wav
|
1226 |
+
p361/p361_339.wav
|
1227 |
+
p361/p361_345.wav
|
1228 |
+
p361/p361_083.wav
|
1229 |
+
p361/p361_052.wav
|
1230 |
+
p361/p361_394.wav
|
1231 |
+
p361/p361_178.wav
|
1232 |
+
p361/p361_337.wav
|
1233 |
+
p361/p361_020.wav
|
1234 |
+
p361/p361_104.wav
|
1235 |
+
p361/p361_213.wav
|
1236 |
+
p361/p361_103.wav
|
1237 |
+
p361/p361_214.wav
|
1238 |
+
p361/p361_268.wav
|
1239 |
+
p361/p361_330.wav
|
1240 |
+
p361/p361_027.wav
|
1241 |
+
p361/p361_369.wav
|
1242 |
+
p361/p361_126.wav
|
1243 |
+
p361/p361_231.wav
|
1244 |
+
p361/p361_315.wav
|
1245 |
+
p361/p361_002.wav
|
1246 |
+
p361/p361_312.wav
|
1247 |
+
p361/p361_005.wav
|
1248 |
+
p361/p361_418.wav
|
1249 |
+
p361/p361_079.wav
|
1250 |
+
p361/p361_121.wav
|
1251 |
+
p361/p361_236.wav
|
1252 |
+
p361/p361_295.wav
|
1253 |
+
p361/p361_153.wav
|
1254 |
+
p361/p361_182.wav
|
1255 |
+
p361/p361_244.wav
|
1256 |
+
p361/p361_360.wav
|
1257 |
+
p361/p361_416.wav
|
1258 |
+
p361/p361_077.wav
|
1259 |
+
p361/p361_238.wav
|
1260 |
+
p361/p361_367.wav
|
1261 |
+
p361/p361_411.wav
|
1262 |
+
p361/p361_070.wav
|
1263 |
+
p361/p361_128.wav
|
1264 |
+
p361/p361_292.wav
|
1265 |
+
p361/p361_154.wav
|
1266 |
+
p361/p361_185.wav
|
1267 |
+
p361/p361_243.wav
|
1268 |
+
p361/p361_045.wav
|
1269 |
+
p361/p361_383.wav
|
1270 |
+
p361/p361_424.wav
|
1271 |
+
p361/p361_352.wav
|
1272 |
+
p361/p361_094.wav
|
1273 |
+
p361/p361_039.wav
|
1274 |
+
p361/p361_276.wav
|
1275 |
+
p361/p361_161.wav
|
1276 |
+
p361/p361_329.wav
|
1277 |
+
p361/p361_271.wav
|
1278 |
+
p361/p361_166.wav
|
1279 |
+
p361/p361_042.wav
|
1280 |
+
p361/p361_423.wav
|
1281 |
+
p361/p361_384.wav
|
1282 |
+
p361/p361_355.wav
|
1283 |
+
p361/p361_093.wav
|
1284 |
+
p361/p361_030.wav
|
1285 |
+
p361/p361_327.wav
|
1286 |
+
p361/p361_168.wav
|
1287 |
+
p361/p361_203.wav
|
1288 |
+
p361/p361_114.wav
|
1289 |
+
p361/p361_204.wav
|
1290 |
+
p361/p361_113.wav
|
1291 |
+
p361/p361_037.wav
|
1292 |
+
p361/p361_320.wav
|
1293 |
+
p361/p361_278.wav
|
1294 |
+
p361/p361_102.wav
|
1295 |
+
p361/p361_215.wav
|
1296 |
+
p361/p361_269.wav
|
1297 |
+
p361/p361_331.wav
|
1298 |
+
p361/p361_026.wav
|
1299 |
+
p361/p361_179.wav
|
1300 |
+
p361/p361_336.wav
|
1301 |
+
p361/p361_021.wav
|
1302 |
+
p361/p361_105.wav
|
1303 |
+
p361/p361_212.wav
|
1304 |
+
p361/p361_177.wav
|
1305 |
+
p361/p361_260.wav
|
1306 |
+
p361/p361_338.wav
|
1307 |
+
p361/p361_344.wav
|
1308 |
+
p361/p361_082.wav
|
1309 |
+
p361/p361_053.wav
|
1310 |
+
p361/p361_395.wav
|
1311 |
+
p361/p361_343.wav
|
1312 |
+
p361/p361_085.wav
|
1313 |
+
p361/p361_054.wav
|
1314 |
+
p361/p361_392.wav
|
1315 |
+
p361/p361_170.wav
|
1316 |
+
p361/p361_267.wav
|
1317 |
+
p361/p361_028.wav
|
1318 |
+
p361/p361_139.wav
|
1319 |
+
p361/p361_400.wav
|
1320 |
+
p361/p361_061.wav
|
1321 |
+
p361/p361_376.wav
|
1322 |
+
p361/p361_194.wav
|
1323 |
+
p361/p361_252.wav
|
1324 |
+
p361/p361_283.wav
|
1325 |
+
p361/p361_145.wav
|
1326 |
+
p361/p361_193.wav
|
1327 |
+
p361/p361_255.wav
|
1328 |
+
p361/p361_284.wav
|
1329 |
+
p361/p361_142.wav
|
1330 |
+
p361/p361_229.wav
|
1331 |
+
p361/p361_407.wav
|
1332 |
+
p361/p361_066.wav
|
1333 |
+
p361/p361_371.wav
|
1334 |
+
p361/p361_014.wav
|
1335 |
+
p361/p361_303.wav
|
1336 |
+
p361/p361_227.wav
|
1337 |
+
p361/p361_130.wav
|
1338 |
+
p361/p361_409.wav
|
1339 |
+
p361/p361_068.wav
|
1340 |
+
p361/p361_220.wav
|
1341 |
+
p361/p361_137.wav
|
1342 |
+
p361/p361_378.wav
|
1343 |
+
p361/p361_013.wav
|
1344 |
+
p361/p361_304.wav
|
1345 |
+
p361/p361_335.wav
|
1346 |
+
p361/p361_022.wav
|
1347 |
+
p361/p361_106.wav
|
1348 |
+
p361/p361_211.wav
|
1349 |
+
p361/p361_349.wav
|
1350 |
+
p361/p361_398.wav
|
1351 |
+
p361/p361_101.wav
|
1352 |
+
p361/p361_216.wav
|
1353 |
+
p361/p361_088.wav
|
1354 |
+
p361/p361_059.wav
|
1355 |
+
p361/p361_332.wav
|
1356 |
+
p361/p361_025.wav
|
1357 |
+
p361/p361_218.wav
|
1358 |
+
p361/p361_086.wav
|
1359 |
+
p361/p361_340.wav
|
1360 |
+
p361/p361_391.wav
|
1361 |
+
p361/p361_057.wav
|
1362 |
+
p361/p361_173.wav
|
1363 |
+
p361/p361_264.wav
|
1364 |
+
p361/p361_174.wav
|
1365 |
+
p361/p361_263.wav
|
1366 |
+
p361/p361_108.wav
|
1367 |
+
p361/p361_081.wav
|
1368 |
+
p361/p361_347.wav
|
1369 |
+
p361/p361_396.wav
|
1370 |
+
p361/p361_050.wav
|
1371 |
+
p361/p361_256.wav
|
1372 |
+
p361/p361_190.wav
|
1373 |
+
p361/p361_141.wav
|
1374 |
+
p361/p361_287.wav
|
1375 |
+
p361/p361_019.wav
|
1376 |
+
p361/p361_065.wav
|
1377 |
+
p361/p361_404.wav
|
1378 |
+
p361/p361_372.wav
|
1379 |
+
p361/p361_062.wav
|
1380 |
+
p361/p361_403.wav
|
1381 |
+
p361/p361_375.wav
|
1382 |
+
p361/p361_251.wav
|
1383 |
+
p361/p361_197.wav
|
1384 |
+
p361/p361_146.wav
|
1385 |
+
p361/p361_280.wav
|
1386 |
+
p361/p361_309.wav
|
1387 |
+
p361/p361_223.wav
|
1388 |
+
p361/p361_134.wav
|
1389 |
+
p361/p361_199.wav
|
1390 |
+
p361/p361_148.wav
|
1391 |
+
p361/p361_010.wav
|
1392 |
+
p361/p361_307.wav
|
1393 |
+
p361/p361_258.wav
|
1394 |
+
p361/p361_289.wav
|
1395 |
+
p361/p361_017.wav
|
1396 |
+
p361/p361_300.wav
|
1397 |
+
p361/p361_224.wav
|
1398 |
+
p361/p361_133.wav
|
1399 |
+
p361/p361_311.wav
|
1400 |
+
p361/p361_006.wav
|
1401 |
+
p361/p361_298.wav
|
1402 |
+
p361/p361_249.wav
|
1403 |
+
p361/p361_122.wav
|
1404 |
+
p361/p361_235.wav
|
1405 |
+
p361/p361_125.wav
|
1406 |
+
p361/p361_232.wav
|
1407 |
+
p361/p361_316.wav
|
1408 |
+
p361/p361_001.wav
|
1409 |
+
p361/p361_159.wav
|
1410 |
+
p361/p361_188.wav
|
1411 |
+
p361/p361_364.wav
|
1412 |
+
p361/p361_073.wav
|
1413 |
+
p361/p361_412.wav
|
1414 |
+
p361/p361_318.wav
|
1415 |
+
p361/p361_157.wav
|
1416 |
+
p361/p361_291.wav
|
1417 |
+
p361/p361_240.wav
|
1418 |
+
p361/p361_186.wav
|
1419 |
+
p361/p361_008.wav
|
1420 |
+
p361/p361_150.wav
|
1421 |
+
p361/p361_296.wav
|
1422 |
+
p361/p361_247.wav
|
1423 |
+
p361/p361_181.wav
|
1424 |
+
p361/p361_363.wav
|
1425 |
+
p361/p361_074.wav
|
1426 |
+
p361/p361_415.wav
|
1427 |
+
p361/p361_272.wav
|
1428 |
+
p361/p361_165.wav
|
1429 |
+
p361/p361_420.wav
|
1430 |
+
p361/p361_387.wav
|
1431 |
+
p361/p361_041.wav
|
1432 |
+
p361/p361_090.wav
|
1433 |
+
p361/p361_356.wav
|
1434 |
+
p361/p361_119.wav
|
1435 |
+
p361/p361_380.wav
|
1436 |
+
p361/p361_046.wav
|
1437 |
+
p361/p361_097.wav
|
1438 |
+
p361/p361_351.wav
|
1439 |
+
p361/p361_209.wav
|
1440 |
+
p361/p361_275.wav
|
1441 |
+
p361/p361_162.wav
|
1442 |
+
p361/p361_048.wav
|
1443 |
+
p361/p361_099.wav
|
1444 |
+
p361/p361_207.wav
|
1445 |
+
p361/p361_110.wav
|
1446 |
+
p361/p361_034.wav
|
1447 |
+
p361/p361_323.wav
|
1448 |
+
p361/p361_033.wav
|
1449 |
+
p361/p361_324.wav
|
1450 |
+
p361/p361_389.wav
|
1451 |
+
p361/p361_358.wav
|
1452 |
+
p361/p361_200.wav
|
1453 |
+
p361/p361_117.wav
|
1454 |
+
p361/p361_259.wav
|
1455 |
+
p361/p361_288.wav
|
1456 |
+
p361/p361_016.wav
|
1457 |
+
p361/p361_301.wav
|
1458 |
+
p361/p361_225.wav
|
1459 |
+
p361/p361_132.wav
|
1460 |
+
p361/p361_222.wav
|
1461 |
+
p361/p361_135.wav
|
1462 |
+
p361/p361_198.wav
|
1463 |
+
p361/p361_149.wav
|
1464 |
+
p361/p361_011.wav
|
1465 |
+
p361/p361_306.wav
|
1466 |
+
p361/p361_063.wav
|
1467 |
+
p361/p361_402.wav
|
1468 |
+
p361/p361_374.wav
|
1469 |
+
p361/p361_250.wav
|
1470 |
+
p361/p361_196.wav
|
1471 |
+
p361/p361_147.wav
|
1472 |
+
p361/p361_281.wav
|
1473 |
+
p361/p361_308.wav
|
1474 |
+
p361/p361_257.wav
|
1475 |
+
p361/p361_191.wav
|
1476 |
+
p361/p361_140.wav
|
1477 |
+
p361/p361_286.wav
|
1478 |
+
p361/p361_018.wav
|
1479 |
+
p361/p361_064.wav
|
1480 |
+
p361/p361_405.wav
|
1481 |
+
p361/p361_373.wav
|
1482 |
+
p361/p361_175.wav
|
1483 |
+
p361/p361_262.wav
|
1484 |
+
p361/p361_109.wav
|
1485 |
+
p361/p361_080.wav
|
1486 |
+
p361/p361_346.wav
|
1487 |
+
p361/p361_397.wav
|
1488 |
+
p361/p361_051.wav
|
1489 |
+
p361/p361_219.wav
|
1490 |
+
p361/p361_087.wav
|
1491 |
+
p361/p361_341.wav
|
1492 |
+
p361/p361_390.wav
|
1493 |
+
p361/p361_056.wav
|
1494 |
+
p361/p361_172.wav
|
1495 |
+
p361/p361_265.wav
|
1496 |
+
p361/p361_100.wav
|
1497 |
+
p361/p361_217.wav
|
1498 |
+
p361/p361_089.wav
|
1499 |
+
p361/p361_058.wav
|
1500 |
+
p361/p361_333.wav
|
1501 |
+
p361/p361_024.wav
|
1502 |
+
p361/p361_334.wav
|
1503 |
+
p361/p361_023.wav
|
1504 |
+
p361/p361_107.wav
|
1505 |
+
p361/p361_210.wav
|
1506 |
+
p361/p361_348.wav
|
1507 |
+
p361/p361_399.wav
|
1508 |
+
p361/p361_032.wav
|
1509 |
+
p361/p361_325.wav
|
1510 |
+
p361/p361_388.wav
|
1511 |
+
p361/p361_359.wav
|
1512 |
+
p361/p361_201.wav
|
1513 |
+
p361/p361_116.wav
|
1514 |
+
p361/p361_049.wav
|
1515 |
+
p361/p361_098.wav
|
1516 |
+
p361/p361_206.wav
|
1517 |
+
p361/p361_111.wav
|
1518 |
+
p361/p361_035.wav
|
1519 |
+
p361/p361_322.wav
|
1520 |
+
p361/p361_381.wav
|
1521 |
+
p361/p361_047.wav
|
1522 |
+
p361/p361_096.wav
|
1523 |
+
p361/p361_350.wav
|
1524 |
+
p361/p361_208.wav
|
1525 |
+
p361/p361_274.wav
|
1526 |
+
p361/p361_163.wav
|
1527 |
+
p361/p361_273.wav
|
1528 |
+
p361/p361_164.wav
|
1529 |
+
p361/p361_386.wav
|
1530 |
+
p361/p361_421.wav
|
1531 |
+
p361/p361_040.wav
|
1532 |
+
p361/p361_091.wav
|
1533 |
+
p361/p361_357.wav
|
1534 |
+
p361/p361_118.wav
|
1535 |
+
p361/p361_009.wav
|
1536 |
+
p361/p361_151.wav
|
1537 |
+
p361/p361_297.wav
|
1538 |
+
p361/p361_246.wav
|
1539 |
+
p361/p361_180.wav
|
1540 |
+
p361/p361_362.wav
|
1541 |
+
p361/p361_075.wav
|
1542 |
+
p361/p361_414.wav
|
1543 |
+
p361/p361_365.wav
|
1544 |
+
p361/p361_072.wav
|
1545 |
+
p361/p361_413.wav
|
1546 |
+
p361/p361_319.wav
|
1547 |
+
p361/p361_156.wav
|
1548 |
+
p361/p361_290.wav
|
1549 |
+
p361/p361_241.wav
|
1550 |
+
p361/p361_187.wav
|
1551 |
+
p361/p361_124.wav
|
1552 |
+
p361/p361_233.wav
|
1553 |
+
p361/p361_317.wav
|
1554 |
+
p361/p361_158.wav
|
1555 |
+
p361/p361_189.wav
|
1556 |
+
p361/p361_310.wav
|
1557 |
+
p361/p361_007.wav
|
1558 |
+
p361/p361_299.wav
|
1559 |
+
p361/p361_248.wav
|
1560 |
+
p361/p361_123.wav
|
1561 |
+
p361/p361_234.wav
|
1562 |
+
p363/p363_240.wav
|
1563 |
+
p363/p363_186.wav
|
1564 |
+
p363/p363_157.wav
|
1565 |
+
p363/p363_291.wav
|
1566 |
+
p363/p363_318.wav
|
1567 |
+
p363/p363_073.wav
|
1568 |
+
p363/p363_412.wav
|
1569 |
+
p363/p363_364.wav
|
1570 |
+
p363/p363_074.wav
|
1571 |
+
p363/p363_415.wav
|
1572 |
+
p363/p363_363.wav
|
1573 |
+
p363/p363_247.wav
|
1574 |
+
p363/p363_181.wav
|
1575 |
+
p363/p363_150.wav
|
1576 |
+
p363/p363_296.wav
|
1577 |
+
p363/p363_008.wav
|
1578 |
+
p363/p363_235.wav
|
1579 |
+
p363/p363_122.wav
|
1580 |
+
p363/p363_249.wav
|
1581 |
+
p363/p363_298.wav
|
1582 |
+
p363/p363_006.wav
|
1583 |
+
p363/p363_311.wav
|
1584 |
+
p363/p363_188.wav
|
1585 |
+
p363/p363_159.wav
|
1586 |
+
p363/p363_001.wav
|
1587 |
+
p363/p363_316.wav
|
1588 |
+
p363/p363_232.wav
|
1589 |
+
p363/p363_125.wav
|
1590 |
+
p363/p363_323.wav
|
1591 |
+
p363/p363_034.wav
|
1592 |
+
p363/p363_110.wav
|
1593 |
+
p363/p363_207.wav
|
1594 |
+
p363/p363_099.wav
|
1595 |
+
p363/p363_048.wav
|
1596 |
+
p363/p363_117.wav
|
1597 |
+
p363/p363_200.wav
|
1598 |
+
p363/p363_358.wav
|
1599 |
+
p363/p363_389.wav
|
1600 |
+
p363/p363_324.wav
|
1601 |
+
p363/p363_033.wav
|
1602 |
+
p363/p363_119.wav
|
1603 |
+
p363/p363_090.wav
|
1604 |
+
p363/p363_356.wav
|
1605 |
+
p363/p363_420.wav
|
1606 |
+
p363/p363_387.wav
|
1607 |
+
p363/p363_041.wav
|
1608 |
+
p363/p363_165.wav
|
1609 |
+
p363/p363_272.wav
|
1610 |
+
p363/p363_162.wav
|
1611 |
+
p363/p363_275.wav
|
1612 |
+
p363/p363_209.wav
|
1613 |
+
p363/p363_097.wav
|
1614 |
+
p363/p363_351.wav
|
1615 |
+
p363/p363_380.wav
|
1616 |
+
p363/p363_046.wav
|
1617 |
+
p363/p363_264.wav
|
1618 |
+
p363/p363_173.wav
|
1619 |
+
p363/p363_391.wav
|
1620 |
+
p363/p363_057.wav
|
1621 |
+
p363/p363_086.wav
|
1622 |
+
p363/p363_218.wav
|
1623 |
+
p363/p363_396.wav
|
1624 |
+
p363/p363_050.wav
|
1625 |
+
p363/p363_081.wav
|
1626 |
+
p363/p363_347.wav
|
1627 |
+
p363/p363_108.wav
|
1628 |
+
p363/p363_263.wav
|
1629 |
+
p363/p363_174.wav
|
1630 |
+
p363/p363_398.wav
|
1631 |
+
p363/p363_349.wav
|
1632 |
+
p363/p363_211.wav
|
1633 |
+
p363/p363_106.wav
|
1634 |
+
p363/p363_022.wav
|
1635 |
+
p363/p363_335.wav
|
1636 |
+
p363/p363_025.wav
|
1637 |
+
p363/p363_332.wav
|
1638 |
+
p363/p363_059.wav
|
1639 |
+
p363/p363_088.wav
|
1640 |
+
p363/p363_216.wav
|
1641 |
+
p363/p363_101.wav
|
1642 |
+
p363/p363_307.wav
|
1643 |
+
p363/p363_010.wav
|
1644 |
+
p363/p363_148.wav
|
1645 |
+
p363/p363_199.wav
|
1646 |
+
p363/p363_134.wav
|
1647 |
+
p363/p363_223.wav
|
1648 |
+
p363/p363_133.wav
|
1649 |
+
p363/p363_224.wav
|
1650 |
+
p363/p363_300.wav
|
1651 |
+
p363/p363_017.wav
|
1652 |
+
p363/p363_289.wav
|
1653 |
+
p363/p363_258.wav
|
1654 |
+
p363/p363_372.wav
|
1655 |
+
p363/p363_065.wav
|
1656 |
+
p363/p363_404.wav
|
1657 |
+
p363/p363_019.wav
|
1658 |
+
p363/p363_141.wav
|
1659 |
+
p363/p363_287.wav
|
1660 |
+
p363/p363_256.wav
|
1661 |
+
p363/p363_190.wav
|
1662 |
+
p363/p363_309.wav
|
1663 |
+
p363/p363_146.wav
|
1664 |
+
p363/p363_280.wav
|
1665 |
+
p363/p363_251.wav
|
1666 |
+
p363/p363_197.wav
|
1667 |
+
p363/p363_375.wav
|
1668 |
+
p363/p363_062.wav
|
1669 |
+
p363/p363_403.wav
|
1670 |
+
p363/p363_163.wav
|
1671 |
+
p363/p363_274.wav
|
1672 |
+
p363/p363_208.wav
|
1673 |
+
p363/p363_096.wav
|
1674 |
+
p363/p363_350.wav
|
1675 |
+
p363/p363_381.wav
|
1676 |
+
p363/p363_047.wav
|
1677 |
+
p363/p363_118.wav
|
1678 |
+
p363/p363_091.wav
|
1679 |
+
p363/p363_357.wav
|
1680 |
+
p363/p363_386.wav
|
1681 |
+
p363/p363_421.wav
|
1682 |
+
p363/p363_040.wav
|
1683 |
+
p363/p363_164.wav
|
1684 |
+
p363/p363_273.wav
|
1685 |
+
p363/p363_116.wav
|
1686 |
+
p363/p363_201.wav
|
1687 |
+
p363/p363_359.wav
|
1688 |
+
p363/p363_388.wav
|
1689 |
+
p363/p363_325.wav
|
1690 |
+
p363/p363_032.wav
|
1691 |
+
p363/p363_322.wav
|
1692 |
+
p363/p363_035.wav
|
1693 |
+
p363/p363_111.wav
|
1694 |
+
p363/p363_206.wav
|
1695 |
+
p363/p363_098.wav
|
1696 |
+
p363/p363_049.wav
|
1697 |
+
p363/p363_189.wav
|
1698 |
+
p363/p363_158.wav
|
1699 |
+
p363/p363_317.wav
|
1700 |
+
p363/p363_233.wav
|
1701 |
+
p363/p363_124.wav
|
1702 |
+
p363/p363_234.wav
|
1703 |
+
p363/p363_123.wav
|
1704 |
+
p363/p363_248.wav
|
1705 |
+
p363/p363_299.wav
|
1706 |
+
p363/p363_007.wav
|
1707 |
+
p363/p363_310.wav
|
1708 |
+
p363/p363_075.wav
|
1709 |
+
p363/p363_414.wav
|
1710 |
+
p363/p363_362.wav
|
1711 |
+
p363/p363_246.wav
|
1712 |
+
p363/p363_180.wav
|
1713 |
+
p363/p363_151.wav
|
1714 |
+
p363/p363_297.wav
|
1715 |
+
p363/p363_009.wav
|
1716 |
+
p363/p363_241.wav
|
1717 |
+
p363/p363_187.wav
|
1718 |
+
p363/p363_156.wav
|
1719 |
+
p363/p363_290.wav
|
1720 |
+
p363/p363_319.wav
|
1721 |
+
p363/p363_072.wav
|
1722 |
+
p363/p363_413.wav
|
1723 |
+
p363/p363_365.wav
|
1724 |
+
p363/p363_308.wav
|
1725 |
+
p363/p363_147.wav
|
1726 |
+
p363/p363_281.wav
|
1727 |
+
p363/p363_250.wav
|
1728 |
+
p363/p363_196.wav
|
1729 |
+
p363/p363_374.wav
|
1730 |
+
p363/p363_063.wav
|
1731 |
+
p363/p363_402.wav
|
1732 |
+
p363/p363_373.wav
|
1733 |
+
p363/p363_064.wav
|
1734 |
+
p363/p363_405.wav
|
1735 |
+
p363/p363_018.wav
|
1736 |
+
p363/p363_140.wav
|
1737 |
+
p363/p363_286.wav
|
1738 |
+
p363/p363_257.wav
|
1739 |
+
p363/p363_191.wav
|
1740 |
+
p363/p363_132.wav
|
1741 |
+
p363/p363_225.wav
|
1742 |
+
p363/p363_301.wav
|
1743 |
+
p363/p363_016.wav
|
1744 |
+
p363/p363_288.wav
|
1745 |
+
p363/p363_259.wav
|
1746 |
+
p363/p363_306.wav
|
1747 |
+
p363/p363_011.wav
|
1748 |
+
p363/p363_149.wav
|
1749 |
+
p363/p363_198.wav
|
1750 |
+
p363/p363_135.wav
|
1751 |
+
p363/p363_222.wav
|
1752 |
+
p363/p363_024.wav
|
1753 |
+
p363/p363_333.wav
|
1754 |
+
p363/p363_058.wav
|
1755 |
+
p363/p363_089.wav
|
1756 |
+
p363/p363_217.wav
|
1757 |
+
p363/p363_100.wav
|
1758 |
+
p363/p363_399.wav
|
1759 |
+
p363/p363_348.wav
|
1760 |
+
p363/p363_210.wav
|
1761 |
+
p363/p363_107.wav
|
1762 |
+
p363/p363_023.wav
|
1763 |
+
p363/p363_334.wav
|
1764 |
+
p363/p363_397.wav
|
1765 |
+
p363/p363_051.wav
|
1766 |
+
p363/p363_080.wav
|
1767 |
+
p363/p363_346.wav
|
1768 |
+
p363/p363_109.wav
|
1769 |
+
p363/p363_262.wav
|
1770 |
+
p363/p363_175.wav
|
1771 |
+
p363/p363_265.wav
|
1772 |
+
p363/p363_172.wav
|
1773 |
+
p363/p363_390.wav
|
1774 |
+
p363/p363_056.wav
|
1775 |
+
p363/p363_087.wav
|
1776 |
+
p363/p363_341.wav
|
1777 |
+
p363/p363_219.wav
|
1778 |
+
p363/p363_370.wav
|
1779 |
+
p363/p363_406.wav
|
1780 |
+
p363/p363_067.wav
|
1781 |
+
p363/p363_228.wav
|
1782 |
+
p363/p363_285.wav
|
1783 |
+
p363/p363_143.wav
|
1784 |
+
p363/p363_192.wav
|
1785 |
+
p363/p363_254.wav
|
1786 |
+
p363/p363_282.wav
|
1787 |
+
p363/p363_144.wav
|
1788 |
+
p363/p363_195.wav
|
1789 |
+
p363/p363_253.wav
|
1790 |
+
p363/p363_377.wav
|
1791 |
+
p363/p363_401.wav
|
1792 |
+
p363/p363_060.wav
|
1793 |
+
p363/p363_138.wav
|
1794 |
+
p363/p363_305.wav
|
1795 |
+
p363/p363_012.wav
|
1796 |
+
p363/p363_379.wav
|
1797 |
+
p363/p363_136.wav
|
1798 |
+
p363/p363_221.wav
|
1799 |
+
p363/p363_408.wav
|
1800 |
+
p363/p363_069.wav
|
1801 |
+
p363/p363_131.wav
|
1802 |
+
p363/p363_226.wav
|
1803 |
+
p363/p363_302.wav
|
1804 |
+
p363/p363_015.wav
|
1805 |
+
p363/p363_213.wav
|
1806 |
+
p363/p363_104.wav
|
1807 |
+
p363/p363_020.wav
|
1808 |
+
p363/p363_337.wav
|
1809 |
+
p363/p363_178.wav
|
1810 |
+
p363/p363_027.wav
|
1811 |
+
p363/p363_330.wav
|
1812 |
+
p363/p363_268.wav
|
1813 |
+
p363/p363_214.wav
|
1814 |
+
p363/p363_103.wav
|
1815 |
+
p363/p363_029.wav
|
1816 |
+
p363/p363_266.wav
|
1817 |
+
p363/p363_171.wav
|
1818 |
+
p363/p363_055.wav
|
1819 |
+
p363/p363_393.wav
|
1820 |
+
p363/p363_084.wav
|
1821 |
+
p363/p363_052.wav
|
1822 |
+
p363/p363_394.wav
|
1823 |
+
p363/p363_345.wav
|
1824 |
+
p363/p363_083.wav
|
1825 |
+
p363/p363_339.wav
|
1826 |
+
p363/p363_261.wav
|
1827 |
+
p363/p363_176.wav
|
1828 |
+
p363/p363_354.wav
|
1829 |
+
p363/p363_092.wav
|
1830 |
+
p363/p363_043.wav
|
1831 |
+
p363/p363_385.wav
|
1832 |
+
p363/p363_422.wav
|
1833 |
+
p363/p363_167.wav
|
1834 |
+
p363/p363_270.wav
|
1835 |
+
p363/p363_328.wav
|
1836 |
+
p363/p363_160.wav
|
1837 |
+
p363/p363_277.wav
|
1838 |
+
p363/p363_038.wav
|
1839 |
+
p363/p363_353.wav
|
1840 |
+
p363/p363_095.wav
|
1841 |
+
p363/p363_044.wav
|
1842 |
+
p363/p363_382.wav
|
1843 |
+
p363/p363_321.wav
|
1844 |
+
p363/p363_036.wav
|
1845 |
+
p363/p363_112.wav
|
1846 |
+
p363/p363_205.wav
|
1847 |
+
p363/p363_115.wav
|
1848 |
+
p363/p363_202.wav
|
1849 |
+
p363/p363_169.wav
|
1850 |
+
p363/p363_326.wav
|
1851 |
+
p363/p363_031.wav
|
1852 |
+
p363/p363_237.wav
|
1853 |
+
p363/p363_120.wav
|
1854 |
+
p363/p363_419.wav
|
1855 |
+
p363/p363_078.wav
|
1856 |
+
p363/p363_004.wav
|
1857 |
+
p363/p363_313.wav
|
1858 |
+
p363/p363_003.wav
|
1859 |
+
p363/p363_314.wav
|
1860 |
+
p363/p363_230.wav
|
1861 |
+
p363/p363_127.wav
|
1862 |
+
p363/p363_368.wav
|
1863 |
+
p363/p363_184.wav
|
1864 |
+
p363/p363_242.wav
|
1865 |
+
p363/p363_293.wav
|
1866 |
+
p363/p363_155.wav
|
1867 |
+
p363/p363_129.wav
|
1868 |
+
p363/p363_410.wav
|
1869 |
+
p363/p363_071.wav
|
1870 |
+
p363/p363_366.wav
|
1871 |
+
p363/p363_239.wav
|
1872 |
+
p363/p363_417.wav
|
1873 |
+
p363/p363_076.wav
|
1874 |
+
p363/p363_361.wav
|
1875 |
+
p363/p363_183.wav
|
1876 |
+
p363/p363_245.wav
|
1877 |
+
p363/p363_294.wav
|
1878 |
+
p363/p363_152.wav
|
1879 |
+
p363/p363_053.wav
|
1880 |
+
p363/p363_395.wav
|
1881 |
+
p363/p363_344.wav
|
1882 |
+
p363/p363_082.wav
|
1883 |
+
p363/p363_338.wav
|
1884 |
+
p363/p363_260.wav
|
1885 |
+
p363/p363_177.wav
|
1886 |
+
p363/p363_028.wav
|
1887 |
+
p363/p363_267.wav
|
1888 |
+
p363/p363_170.wav
|
1889 |
+
p363/p363_054.wav
|
1890 |
+
p363/p363_392.wav
|
1891 |
+
p363/p363_343.wav
|
1892 |
+
p363/p363_085.wav
|
1893 |
+
p363/p363_026.wav
|
1894 |
+
p363/p363_331.wav
|
1895 |
+
p363/p363_269.wav
|
1896 |
+
p363/p363_215.wav
|
1897 |
+
p363/p363_102.wav
|
1898 |
+
p363/p363_212.wav
|
1899 |
+
p363/p363_105.wav
|
1900 |
+
p363/p363_021.wav
|
1901 |
+
p363/p363_336.wav
|
1902 |
+
p363/p363_179.wav
|
1903 |
+
p363/p363_409.wav
|
1904 |
+
p363/p363_068.wav
|
1905 |
+
p363/p363_130.wav
|
1906 |
+
p363/p363_227.wav
|
1907 |
+
p363/p363_303.wav
|
1908 |
+
p363/p363_014.wav
|
1909 |
+
p363/p363_304.wav
|
1910 |
+
p363/p363_013.wav
|
1911 |
+
p363/p363_378.wav
|
1912 |
+
p363/p363_137.wav
|
1913 |
+
p363/p363_220.wav
|
1914 |
+
p363/p363_283.wav
|
1915 |
+
p363/p363_145.wav
|
1916 |
+
p363/p363_194.wav
|
1917 |
+
p363/p363_252.wav
|
1918 |
+
p363/p363_376.wav
|
1919 |
+
p363/p363_061.wav
|
1920 |
+
p363/p363_139.wav
|
1921 |
+
p363/p363_371.wav
|
1922 |
+
p363/p363_407.wav
|
1923 |
+
p363/p363_066.wav
|
1924 |
+
p363/p363_229.wav
|
1925 |
+
p363/p363_284.wav
|
1926 |
+
p363/p363_142.wav
|
1927 |
+
p363/p363_193.wav
|
1928 |
+
p363/p363_255.wav
|
1929 |
+
p363/p363_238.wav
|
1930 |
+
p363/p363_416.wav
|
1931 |
+
p363/p363_077.wav
|
1932 |
+
p363/p363_360.wav
|
1933 |
+
p363/p363_182.wav
|
1934 |
+
p363/p363_244.wav
|
1935 |
+
p363/p363_295.wav
|
1936 |
+
p363/p363_153.wav
|
1937 |
+
p363/p363_185.wav
|
1938 |
+
p363/p363_243.wav
|
1939 |
+
p363/p363_292.wav
|
1940 |
+
p363/p363_154.wav
|
1941 |
+
p363/p363_128.wav
|
1942 |
+
p363/p363_411.wav
|
1943 |
+
p363/p363_070.wav
|
1944 |
+
p363/p363_367.wav
|
1945 |
+
p363/p363_002.wav
|
1946 |
+
p363/p363_315.wav
|
1947 |
+
p363/p363_231.wav
|
1948 |
+
p363/p363_126.wav
|
1949 |
+
p363/p363_369.wav
|
1950 |
+
p363/p363_236.wav
|
1951 |
+
p363/p363_121.wav
|
1952 |
+
p363/p363_418.wav
|
1953 |
+
p363/p363_079.wav
|
1954 |
+
p363/p363_005.wav
|
1955 |
+
p363/p363_312.wav
|
1956 |
+
p363/p363_114.wav
|
1957 |
+
p363/p363_203.wav
|
1958 |
+
p363/p363_168.wav
|
1959 |
+
p363/p363_327.wav
|
1960 |
+
p363/p363_030.wav
|
1961 |
+
p363/p363_278.wav
|
1962 |
+
p363/p363_320.wav
|
1963 |
+
p363/p363_037.wav
|
1964 |
+
p363/p363_113.wav
|
1965 |
+
p363/p363_204.wav
|
1966 |
+
p363/p363_161.wav
|
1967 |
+
p363/p363_276.wav
|
1968 |
+
p363/p363_039.wav
|
1969 |
+
p363/p363_352.wav
|
1970 |
+
p363/p363_094.wav
|
1971 |
+
p363/p363_045.wav
|
1972 |
+
p363/p363_383.wav
|
1973 |
+
p363/p363_355.wav
|
1974 |
+
p363/p363_093.wav
|
1975 |
+
p363/p363_042.wav
|
1976 |
+
p363/p363_423.wav
|
1977 |
+
p363/p363_384.wav
|
1978 |
+
p363/p363_166.wav
|
1979 |
+
p363/p363_271.wav
|
1980 |
+
p363/p363_329.wav
|
1981 |
+
p351/p351_399.wav
|
1982 |
+
p351/p351_348.wav
|
1983 |
+
p351/p351_210.wav
|
1984 |
+
p351/p351_107.wav
|
1985 |
+
p351/p351_023.wav
|
1986 |
+
p351/p351_334.wav
|
1987 |
+
p351/p351_024.wav
|
1988 |
+
p351/p351_333.wav
|
1989 |
+
p351/p351_058.wav
|
1990 |
+
p351/p351_089.wav
|
1991 |
+
p351/p351_217.wav
|
1992 |
+
p351/p351_100.wav
|
1993 |
+
p351/p351_265.wav
|
1994 |
+
p351/p351_172.wav
|
1995 |
+
p351/p351_390.wav
|
1996 |
+
p351/p351_056.wav
|
1997 |
+
p351/p351_087.wav
|
1998 |
+
p351/p351_341.wav
|
1999 |
+
p351/p351_219.wav
|
2000 |
+
p351/p351_397.wav
|
2001 |
+
p351/p351_051.wav
|
2002 |
+
p351/p351_080.wav
|
2003 |
+
p351/p351_346.wav
|
2004 |
+
p351/p351_109.wav
|
2005 |
+
p351/p351_262.wav
|
2006 |
+
p351/p351_175.wav
|
2007 |
+
p351/p351_373.wav
|
2008 |
+
p351/p351_064.wav
|
2009 |
+
p351/p351_405.wav
|
2010 |
+
p351/p351_018.wav
|
2011 |
+
p351/p351_140.wav
|
2012 |
+
p351/p351_286.wav
|
2013 |
+
p351/p351_257.wav
|
2014 |
+
p351/p351_191.wav
|
2015 |
+
p351/p351_308.wav
|
2016 |
+
p351/p351_147.wav
|
2017 |
+
p351/p351_281.wav
|
2018 |
+
p351/p351_250.wav
|
2019 |
+
p351/p351_196.wav
|
2020 |
+
p351/p351_374.wav
|
2021 |
+
p351/p351_063.wav
|
2022 |
+
p351/p351_402.wav
|
2023 |
+
p351/p351_306.wav
|
2024 |
+
p351/p351_011.wav
|
2025 |
+
p351/p351_149.wav
|
2026 |
+
p351/p351_198.wav
|
2027 |
+
p351/p351_135.wav
|
2028 |
+
p351/p351_222.wav
|
2029 |
+
p351/p351_132.wav
|
2030 |
+
p351/p351_225.wav
|
2031 |
+
p351/p351_301.wav
|
2032 |
+
p351/p351_016.wav
|
2033 |
+
p351/p351_288.wav
|
2034 |
+
p351/p351_259.wav
|
2035 |
+
p351/p351_234.wav
|
2036 |
+
p351/p351_123.wav
|
2037 |
+
p351/p351_248.wav
|
2038 |
+
p351/p351_299.wav
|
2039 |
+
p351/p351_007.wav
|
2040 |
+
p351/p351_310.wav
|
2041 |
+
p351/p351_189.wav
|
2042 |
+
p351/p351_158.wav
|
2043 |
+
p351/p351_317.wav
|
2044 |
+
p351/p351_233.wav
|
2045 |
+
p351/p351_124.wav
|
2046 |
+
p351/p351_241.wav
|
2047 |
+
p351/p351_187.wav
|
2048 |
+
p351/p351_156.wav
|
2049 |
+
p351/p351_290.wav
|
2050 |
+
p351/p351_319.wav
|
2051 |
+
p351/p351_072.wav
|
2052 |
+
p351/p351_413.wav
|
2053 |
+
p351/p351_365.wav
|
2054 |
+
p351/p351_075.wav
|
2055 |
+
p351/p351_414.wav
|
2056 |
+
p351/p351_362.wav
|
2057 |
+
p351/p351_246.wav
|
2058 |
+
p351/p351_180.wav
|
2059 |
+
p351/p351_151.wav
|
2060 |
+
p351/p351_297.wav
|
2061 |
+
p351/p351_009.wav
|
2062 |
+
p351/p351_118.wav
|
2063 |
+
p351/p351_091.wav
|
2064 |
+
p351/p351_357.wav
|
2065 |
+
p351/p351_386.wav
|
2066 |
+
p351/p351_421.wav
|
2067 |
+
p351/p351_040.wav
|
2068 |
+
p351/p351_164.wav
|
2069 |
+
p351/p351_273.wav
|
2070 |
+
p351/p351_163.wav
|
2071 |
+
p351/p351_274.wav
|
2072 |
+
p351/p351_208.wav
|
2073 |
+
p351/p351_096.wav
|
2074 |
+
p351/p351_350.wav
|
2075 |
+
p351/p351_381.wav
|
2076 |
+
p351/p351_047.wav
|
2077 |
+
p351/p351_322.wav
|
2078 |
+
p351/p351_035.wav
|
2079 |
+
p351/p351_111.wav
|
2080 |
+
p351/p351_206.wav
|
2081 |
+
p351/p351_098.wav
|
2082 |
+
p351/p351_049.wav
|
2083 |
+
p351/p351_116.wav
|
2084 |
+
p351/p351_201.wav
|
2085 |
+
p351/p351_359.wav
|
2086 |
+
p351/p351_388.wav
|
2087 |
+
p351/p351_325.wav
|
2088 |
+
p351/p351_032.wav
|
2089 |
+
p351/p351_133.wav
|
2090 |
+
p351/p351_224.wav
|
2091 |
+
p351/p351_300.wav
|
2092 |
+
p351/p351_017.wav
|
2093 |
+
p351/p351_289.wav
|
2094 |
+
p351/p351_258.wav
|
2095 |
+
p351/p351_307.wav
|
2096 |
+
p351/p351_010.wav
|
2097 |
+
p351/p351_148.wav
|
2098 |
+
p351/p351_199.wav
|
2099 |
+
p351/p351_134.wav
|
2100 |
+
p351/p351_223.wav
|
2101 |
+
p351/p351_309.wav
|
2102 |
+
p351/p351_146.wav
|
2103 |
+
p351/p351_280.wav
|
2104 |
+
p351/p351_251.wav
|
2105 |
+
p351/p351_197.wav
|
2106 |
+
p351/p351_375.wav
|
2107 |
+
p351/p351_062.wav
|
2108 |
+
p351/p351_403.wav
|
2109 |
+
p351/p351_372.wav
|
2110 |
+
p351/p351_065.wav
|
2111 |
+
p351/p351_404.wav
|
2112 |
+
p351/p351_019.wav
|
2113 |
+
p351/p351_141.wav
|
2114 |
+
p351/p351_287.wav
|
2115 |
+
p351/p351_256.wav
|
2116 |
+
p351/p351_190.wav
|
2117 |
+
p351/p351_396.wav
|
2118 |
+
p351/p351_050.wav
|
2119 |
+
p351/p351_081.wav
|
2120 |
+
p351/p351_347.wav
|
2121 |
+
p351/p351_108.wav
|
2122 |
+
p351/p351_263.wav
|
2123 |
+
p351/p351_174.wav
|
2124 |
+
p351/p351_264.wav
|
2125 |
+
p351/p351_173.wav
|
2126 |
+
p351/p351_391.wav
|
2127 |
+
p351/p351_057.wav
|
2128 |
+
p351/p351_086.wav
|
2129 |
+
p351/p351_340.wav
|
2130 |
+
p351/p351_218.wav
|
2131 |
+
p351/p351_025.wav
|
2132 |
+
p351/p351_332.wav
|
2133 |
+
p351/p351_059.wav
|
2134 |
+
p351/p351_088.wav
|
2135 |
+
p351/p351_216.wav
|
2136 |
+
p351/p351_101.wav
|
2137 |
+
p351/p351_398.wav
|
2138 |
+
p351/p351_349.wav
|
2139 |
+
p351/p351_211.wav
|
2140 |
+
p351/p351_106.wav
|
2141 |
+
p351/p351_022.wav
|
2142 |
+
p351/p351_335.wav
|
2143 |
+
p351/p351_117.wav
|
2144 |
+
p351/p351_200.wav
|
2145 |
+
p351/p351_358.wav
|
2146 |
+
p351/p351_389.wav
|
2147 |
+
p351/p351_324.wav
|
2148 |
+
p351/p351_033.wav
|
2149 |
+
p351/p351_323.wav
|
2150 |
+
p351/p351_034.wav
|
2151 |
+
p351/p351_110.wav
|
2152 |
+
p351/p351_207.wav
|
2153 |
+
p351/p351_099.wav
|
2154 |
+
p351/p351_048.wav
|
2155 |
+
p351/p351_162.wav
|
2156 |
+
p351/p351_275.wav
|
2157 |
+
p351/p351_209.wav
|
2158 |
+
p351/p351_097.wav
|
2159 |
+
p351/p351_351.wav
|
2160 |
+
p351/p351_380.wav
|
2161 |
+
p351/p351_046.wav
|
2162 |
+
p351/p351_119.wav
|
2163 |
+
p351/p351_090.wav
|
2164 |
+
p351/p351_356.wav
|
2165 |
+
p351/p351_420.wav
|
2166 |
+
p351/p351_387.wav
|
2167 |
+
p351/p351_041.wav
|
2168 |
+
p351/p351_165.wav
|
2169 |
+
p351/p351_272.wav
|
2170 |
+
p351/p351_074.wav
|
2171 |
+
p351/p351_415.wav
|
2172 |
+
p351/p351_363.wav
|
2173 |
+
p351/p351_247.wav
|
2174 |
+
p351/p351_181.wav
|
2175 |
+
p351/p351_150.wav
|
2176 |
+
p351/p351_296.wav
|
2177 |
+
p351/p351_008.wav
|
2178 |
+
p351/p351_240.wav
|
2179 |
+
p351/p351_186.wav
|
2180 |
+
p351/p351_157.wav
|
2181 |
+
p351/p351_291.wav
|
2182 |
+
p351/p351_318.wav
|
2183 |
+
p351/p351_073.wav
|
2184 |
+
p351/p351_412.wav
|
2185 |
+
p351/p351_364.wav
|
2186 |
+
p351/p351_188.wav
|
2187 |
+
p351/p351_159.wav
|
2188 |
+
p351/p351_001.wav
|
2189 |
+
p351/p351_316.wav
|
2190 |
+
p351/p351_232.wav
|
2191 |
+
p351/p351_125.wav
|
2192 |
+
p351/p351_235.wav
|
2193 |
+
p351/p351_122.wav
|
2194 |
+
p351/p351_249.wav
|
2195 |
+
p351/p351_298.wav
|
2196 |
+
p351/p351_006.wav
|
2197 |
+
p351/p351_311.wav
|
2198 |
+
p351/p351_278.wav
|
2199 |
+
p351/p351_320.wav
|
2200 |
+
p351/p351_037.wav
|
2201 |
+
p351/p351_113.wav
|
2202 |
+
p351/p351_204.wav
|
2203 |
+
p351/p351_114.wav
|
2204 |
+
p351/p351_203.wav
|
2205 |
+
p351/p351_168.wav
|
2206 |
+
p351/p351_327.wav
|
2207 |
+
p351/p351_030.wav
|
2208 |
+
p351/p351_355.wav
|
2209 |
+
p351/p351_093.wav
|
2210 |
+
p351/p351_042.wav
|
2211 |
+
p351/p351_423.wav
|
2212 |
+
p351/p351_384.wav
|
2213 |
+
p351/p351_166.wav
|
2214 |
+
p351/p351_271.wav
|
2215 |
+
p351/p351_329.wav
|
2216 |
+
p351/p351_161.wav
|
2217 |
+
p351/p351_276.wav
|
2218 |
+
p351/p351_039.wav
|
2219 |
+
p351/p351_352.wav
|
2220 |
+
p351/p351_094.wav
|
2221 |
+
p351/p351_045.wav
|
2222 |
+
p351/p351_383.wav
|
2223 |
+
p351/p351_424.wav
|
2224 |
+
p351/p351_185.wav
|
2225 |
+
p351/p351_243.wav
|
2226 |
+
p351/p351_292.wav
|
2227 |
+
p351/p351_154.wav
|
2228 |
+
p351/p351_128.wav
|
2229 |
+
p351/p351_411.wav
|
2230 |
+
p351/p351_070.wav
|
2231 |
+
p351/p351_367.wav
|
2232 |
+
p351/p351_238.wav
|
2233 |
+
p351/p351_416.wav
|
2234 |
+
p351/p351_077.wav
|
2235 |
+
p351/p351_360.wav
|
2236 |
+
p351/p351_182.wav
|
2237 |
+
p351/p351_244.wav
|
2238 |
+
p351/p351_295.wav
|
2239 |
+
p351/p351_153.wav
|
2240 |
+
p351/p351_236.wav
|
2241 |
+
p351/p351_121.wav
|
2242 |
+
p351/p351_418.wav
|
2243 |
+
p351/p351_079.wav
|
2244 |
+
p351/p351_005.wav
|
2245 |
+
p351/p351_312.wav
|
2246 |
+
p351/p351_002.wav
|
2247 |
+
p351/p351_315.wav
|
2248 |
+
p351/p351_231.wav
|
2249 |
+
p351/p351_126.wav
|
2250 |
+
p351/p351_369.wav
|
2251 |
+
p351/p351_304.wav
|
2252 |
+
p351/p351_013.wav
|
2253 |
+
p351/p351_378.wav
|
2254 |
+
p351/p351_137.wav
|
2255 |
+
p351/p351_220.wav
|
2256 |
+
p351/p351_409.wav
|
2257 |
+
p351/p351_068.wav
|
2258 |
+
p351/p351_130.wav
|
2259 |
+
p351/p351_227.wav
|
2260 |
+
p351/p351_303.wav
|
2261 |
+
p351/p351_014.wav
|
2262 |
+
p351/p351_371.wav
|
2263 |
+
p351/p351_407.wav
|
2264 |
+
p351/p351_066.wav
|
2265 |
+
p351/p351_229.wav
|
2266 |
+
p351/p351_284.wav
|
2267 |
+
p351/p351_142.wav
|
2268 |
+
p351/p351_193.wav
|
2269 |
+
p351/p351_255.wav
|
2270 |
+
p351/p351_283.wav
|
2271 |
+
p351/p351_145.wav
|
2272 |
+
p351/p351_194.wav
|
2273 |
+
p351/p351_252.wav
|
2274 |
+
p351/p351_376.wav
|
2275 |
+
p351/p351_400.wav
|
2276 |
+
p351/p351_061.wav
|
2277 |
+
p351/p351_139.wav
|
2278 |
+
p351/p351_028.wav
|
2279 |
+
p351/p351_267.wav
|
2280 |
+
p351/p351_170.wav
|
2281 |
+
p351/p351_054.wav
|
2282 |
+
p351/p351_392.wav
|
2283 |
+
p351/p351_343.wav
|
2284 |
+
p351/p351_085.wav
|
2285 |
+
p351/p351_053.wav
|
2286 |
+
p351/p351_395.wav
|
2287 |
+
p351/p351_344.wav
|
2288 |
+
p351/p351_082.wav
|
2289 |
+
p351/p351_338.wav
|
2290 |
+
p351/p351_260.wav
|
2291 |
+
p351/p351_177.wav
|
2292 |
+
p351/p351_212.wav
|
2293 |
+
p351/p351_021.wav
|
2294 |
+
p351/p351_336.wav
|
2295 |
+
p351/p351_179.wav
|
2296 |
+
p351/p351_026.wav
|
2297 |
+
p351/p351_331.wav
|
2298 |
+
p351/p351_269.wav
|
2299 |
+
p351/p351_215.wav
|
2300 |
+
p351/p351_102.wav
|
2301 |
+
p351/p351_003.wav
|
2302 |
+
p351/p351_314.wav
|
2303 |
+
p351/p351_230.wav
|
2304 |
+
p351/p351_127.wav
|
2305 |
+
p351/p351_368.wav
|
2306 |
+
p351/p351_237.wav
|
2307 |
+
p351/p351_120.wav
|
2308 |
+
p351/p351_419.wav
|
2309 |
+
p351/p351_078.wav
|
2310 |
+
p351/p351_004.wav
|
2311 |
+
p351/p351_313.wav
|
2312 |
+
p351/p351_239.wav
|
2313 |
+
p351/p351_417.wav
|
2314 |
+
p351/p351_076.wav
|
2315 |
+
p351/p351_361.wav
|
2316 |
+
p351/p351_183.wav
|
2317 |
+
p351/p351_245.wav
|
2318 |
+
p351/p351_294.wav
|
2319 |
+
p351/p351_152.wav
|
2320 |
+
p351/p351_184.wav
|
2321 |
+
p351/p351_242.wav
|
2322 |
+
p351/p351_293.wav
|
2323 |
+
p351/p351_155.wav
|
2324 |
+
p351/p351_129.wav
|
2325 |
+
p351/p351_410.wav
|
2326 |
+
p351/p351_071.wav
|
2327 |
+
p351/p351_366.wav
|
2328 |
+
p351/p351_160.wav
|
2329 |
+
p351/p351_277.wav
|
2330 |
+
p351/p351_038.wav
|
2331 |
+
p351/p351_353.wav
|
2332 |
+
p351/p351_095.wav
|
2333 |
+
p351/p351_044.wav
|
2334 |
+
p351/p351_382.wav
|
2335 |
+
p351/p351_354.wav
|
2336 |
+
p351/p351_092.wav
|
2337 |
+
p351/p351_043.wav
|
2338 |
+
p351/p351_385.wav
|
2339 |
+
p351/p351_422.wav
|
2340 |
+
p351/p351_167.wav
|
2341 |
+
p351/p351_270.wav
|
2342 |
+
p351/p351_328.wav
|
2343 |
+
p351/p351_115.wav
|
2344 |
+
p351/p351_202.wav
|
2345 |
+
p351/p351_169.wav
|
2346 |
+
p351/p351_326.wav
|
2347 |
+
p351/p351_031.wav
|
2348 |
+
p351/p351_279.wav
|
2349 |
+
p351/p351_321.wav
|
2350 |
+
p351/p351_036.wav
|
2351 |
+
p351/p351_112.wav
|
2352 |
+
p351/p351_205.wav
|
2353 |
+
p351/p351_027.wav
|
2354 |
+
p351/p351_330.wav
|
2355 |
+
p351/p351_268.wav
|
2356 |
+
p351/p351_214.wav
|
2357 |
+
p351/p351_103.wav
|
2358 |
+
p351/p351_213.wav
|
2359 |
+
p351/p351_104.wav
|
2360 |
+
p351/p351_020.wav
|
2361 |
+
p351/p351_337.wav
|
2362 |
+
p351/p351_178.wav
|
2363 |
+
p351/p351_052.wav
|
2364 |
+
p351/p351_394.wav
|
2365 |
+
p351/p351_345.wav
|
2366 |
+
p351/p351_083.wav
|
2367 |
+
p351/p351_339.wav
|
2368 |
+
p351/p351_261.wav
|
2369 |
+
p351/p351_176.wav
|
2370 |
+
p351/p351_029.wav
|
2371 |
+
p351/p351_266.wav
|
2372 |
+
p351/p351_171.wav
|
2373 |
+
p351/p351_055.wav
|
2374 |
+
p351/p351_393.wav
|
2375 |
+
p351/p351_342.wav
|
2376 |
+
p351/p351_084.wav
|
2377 |
+
p351/p351_282.wav
|
2378 |
+
p351/p351_144.wav
|
2379 |
+
p351/p351_195.wav
|
2380 |
+
p351/p351_253.wav
|
2381 |
+
p351/p351_377.wav
|
2382 |
+
p351/p351_401.wav
|
2383 |
+
p351/p351_060.wav
|
2384 |
+
p351/p351_138.wav
|
2385 |
+
p351/p351_370.wav
|
2386 |
+
p351/p351_406.wav
|
2387 |
+
p351/p351_067.wav
|
2388 |
+
p351/p351_228.wav
|
2389 |
+
p351/p351_285.wav
|
2390 |
+
p351/p351_143.wav
|
2391 |
+
p351/p351_192.wav
|
2392 |
+
p351/p351_254.wav
|
2393 |
+
p351/p351_408.wav
|
2394 |
+
p351/p351_069.wav
|
2395 |
+
p351/p351_131.wav
|
2396 |
+
p351/p351_226.wav
|
2397 |
+
p351/p351_302.wav
|
2398 |
+
p351/p351_015.wav
|
2399 |
+
p351/p351_305.wav
|
2400 |
+
p351/p351_012.wav
|
2401 |
+
p351/p351_379.wav
|
2402 |
+
p351/p351_136.wav
|
2403 |
+
p351/p351_221.wav
|
2404 |
+
p364/p364_007.wav
|
2405 |
+
p364/p364_248.wav
|
2406 |
+
p364/p364_299.wav
|
2407 |
+
p364/p364_234.wav
|
2408 |
+
p364/p364_123.wav
|
2409 |
+
p364/p364_233.wav
|
2410 |
+
p364/p364_124.wav
|
2411 |
+
p364/p364_189.wav
|
2412 |
+
p364/p364_158.wav
|
2413 |
+
p364/p364_072.wav
|
2414 |
+
p364/p364_187.wav
|
2415 |
+
p364/p364_241.wav
|
2416 |
+
p364/p364_290.wav
|
2417 |
+
p364/p364_156.wav
|
2418 |
+
p364/p364_009.wav
|
2419 |
+
p364/p364_180.wav
|
2420 |
+
p364/p364_246.wav
|
2421 |
+
p364/p364_297.wav
|
2422 |
+
p364/p364_151.wav
|
2423 |
+
p364/p364_075.wav
|
2424 |
+
p364/p364_164.wav
|
2425 |
+
p364/p364_273.wav
|
2426 |
+
p364/p364_091.wav
|
2427 |
+
p364/p364_040.wav
|
2428 |
+
p364/p364_118.wav
|
2429 |
+
p364/p364_096.wav
|
2430 |
+
p364/p364_047.wav
|
2431 |
+
p364/p364_208.wav
|
2432 |
+
p364/p364_163.wav
|
2433 |
+
p364/p364_274.wav
|
2434 |
+
p364/p364_098.wav
|
2435 |
+
p364/p364_049.wav
|
2436 |
+
p364/p364_111.wav
|
2437 |
+
p364/p364_206.wav
|
2438 |
+
p364/p364_035.wav
|
2439 |
+
p364/p364_032.wav
|
2440 |
+
p364/p364_116.wav
|
2441 |
+
p364/p364_201.wav
|
2442 |
+
p364/p364_023.wav
|
2443 |
+
p364/p364_210.wav
|
2444 |
+
p364/p364_107.wav
|
2445 |
+
p364/p364_217.wav
|
2446 |
+
p364/p364_100.wav
|
2447 |
+
p364/p364_058.wav
|
2448 |
+
p364/p364_089.wav
|
2449 |
+
p364/p364_024.wav
|
2450 |
+
p364/p364_219.wav
|
2451 |
+
p364/p364_056.wav
|
2452 |
+
p364/p364_087.wav
|
2453 |
+
p364/p364_265.wav
|
2454 |
+
p364/p364_172.wav
|
2455 |
+
p364/p364_262.wav
|
2456 |
+
p364/p364_175.wav
|
2457 |
+
p364/p364_109.wav
|
2458 |
+
p364/p364_051.wav
|
2459 |
+
p364/p364_286.wav
|
2460 |
+
p364/p364_140.wav
|
2461 |
+
p364/p364_191.wav
|
2462 |
+
p364/p364_257.wav
|
2463 |
+
p364/p364_018.wav
|
2464 |
+
p364/p364_064.wav
|
2465 |
+
p364/p364_063.wav
|
2466 |
+
p364/p364_281.wav
|
2467 |
+
p364/p364_147.wav
|
2468 |
+
p364/p364_196.wav
|
2469 |
+
p364/p364_250.wav
|
2470 |
+
p364/p364_308.wav
|
2471 |
+
p364/p364_135.wav
|
2472 |
+
p364/p364_222.wav
|
2473 |
+
p364/p364_149.wav
|
2474 |
+
p364/p364_198.wav
|
2475 |
+
p364/p364_306.wav
|
2476 |
+
p364/p364_011.wav
|
2477 |
+
p364/p364_288.wav
|
2478 |
+
p364/p364_259.wav
|
2479 |
+
p364/p364_301.wav
|
2480 |
+
p364/p364_016.wav
|
2481 |
+
p364/p364_132.wav
|
2482 |
+
p364/p364_225.wav
|
2483 |
+
p364/p364_033.wav
|
2484 |
+
p364/p364_117.wav
|
2485 |
+
p364/p364_200.wav
|
2486 |
+
p364/p364_099.wav
|
2487 |
+
p364/p364_048.wav
|
2488 |
+
p364/p364_110.wav
|
2489 |
+
p364/p364_207.wav
|
2490 |
+
p364/p364_034.wav
|
2491 |
+
p364/p364_097.wav
|
2492 |
+
p364/p364_046.wav
|
2493 |
+
p364/p364_209.wav
|
2494 |
+
p364/p364_162.wav
|
2495 |
+
p364/p364_275.wav
|
2496 |
+
p364/p364_165.wav
|
2497 |
+
p364/p364_272.wav
|
2498 |
+
p364/p364_090.wav
|
2499 |
+
p364/p364_041.wav
|
2500 |
+
p364/p364_119.wav
|
2501 |
+
p364/p364_008.wav
|
2502 |
+
p364/p364_181.wav
|
2503 |
+
p364/p364_247.wav
|
2504 |
+
p364/p364_150.wav
|
2505 |
+
p364/p364_074.wav
|
2506 |
+
p364/p364_073.wav
|
2507 |
+
p364/p364_240.wav
|
2508 |
+
p364/p364_291.wav
|
2509 |
+
p364/p364_157.wav
|
2510 |
+
p364/p364_232.wav
|
2511 |
+
p364/p364_125.wav
|
2512 |
+
p364/p364_001.wav
|
2513 |
+
p364/p364_188.wav
|
2514 |
+
p364/p364_159.wav
|
2515 |
+
p364/p364_006.wav
|
2516 |
+
p364/p364_249.wav
|
2517 |
+
p364/p364_298.wav
|
2518 |
+
p364/p364_235.wav
|
2519 |
+
p364/p364_122.wav
|
2520 |
+
p364/p364_289.wav
|
2521 |
+
p364/p364_258.wav
|
2522 |
+
p364/p364_300.wav
|
2523 |
+
p364/p364_017.wav
|
2524 |
+
p364/p364_133.wav
|
2525 |
+
p364/p364_224.wav
|
2526 |
+
p364/p364_134.wav
|
2527 |
+
p364/p364_223.wav
|
2528 |
+
p364/p364_148.wav
|
2529 |
+
p364/p364_199.wav
|
2530 |
+
p364/p364_010.wav
|
2531 |
+
p364/p364_062.wav
|
2532 |
+
p364/p364_280.wav
|
2533 |
+
p364/p364_146.wav
|
2534 |
+
p364/p364_197.wav
|
2535 |
+
p364/p364_251.wav
|
2536 |
+
p364/p364_309.wav
|
2537 |
+
p364/p364_287.wav
|
2538 |
+
p364/p364_141.wav
|
2539 |
+
p364/p364_190.wav
|
2540 |
+
p364/p364_256.wav
|
2541 |
+
p364/p364_019.wav
|
2542 |
+
p364/p364_065.wav
|
2543 |
+
p364/p364_263.wav
|
2544 |
+
p364/p364_174.wav
|
2545 |
+
p364/p364_108.wav
|
2546 |
+
p364/p364_050.wav
|
2547 |
+
p364/p364_081.wav
|
2548 |
+
p364/p364_218.wav
|
2549 |
+
p364/p364_057.wav
|
2550 |
+
p364/p364_086.wav
|
2551 |
+
p364/p364_264.wav
|
2552 |
+
p364/p364_173.wav
|
2553 |
+
p364/p364_216.wav
|
2554 |
+
p364/p364_101.wav
|
2555 |
+
p364/p364_059.wav
|
2556 |
+
p364/p364_088.wav
|
2557 |
+
p364/p364_025.wav
|
2558 |
+
p364/p364_022.wav
|
2559 |
+
p364/p364_211.wav
|
2560 |
+
p364/p364_106.wav
|
2561 |
+
p364/p364_137.wav
|
2562 |
+
p364/p364_220.wav
|
2563 |
+
p364/p364_304.wav
|
2564 |
+
p364/p364_013.wav
|
2565 |
+
p364/p364_303.wav
|
2566 |
+
p364/p364_014.wav
|
2567 |
+
p364/p364_130.wav
|
2568 |
+
p364/p364_227.wav
|
2569 |
+
p364/p364_068.wav
|
2570 |
+
p364/p364_142.wav
|
2571 |
+
p364/p364_284.wav
|
2572 |
+
p364/p364_255.wav
|
2573 |
+
p364/p364_193.wav
|
2574 |
+
p364/p364_229.wav
|
2575 |
+
p364/p364_066.wav
|
2576 |
+
p364/p364_061.wav
|
2577 |
+
p364/p364_145.wav
|
2578 |
+
p364/p364_283.wav
|
2579 |
+
p364/p364_252.wav
|
2580 |
+
p364/p364_194.wav
|
2581 |
+
p364/p364_054.wav
|
2582 |
+
p364/p364_085.wav
|
2583 |
+
p364/p364_267.wav
|
2584 |
+
p364/p364_170.wav
|
2585 |
+
p364/p364_028.wav
|
2586 |
+
p364/p364_260.wav
|
2587 |
+
p364/p364_177.wav
|
2588 |
+
p364/p364_053.wav
|
2589 |
+
p364/p364_082.wav
|
2590 |
+
p364/p364_179.wav
|
2591 |
+
p364/p364_021.wav
|
2592 |
+
p364/p364_212.wav
|
2593 |
+
p364/p364_105.wav
|
2594 |
+
p364/p364_215.wav
|
2595 |
+
p364/p364_102.wav
|
2596 |
+
p364/p364_269.wav
|
2597 |
+
p364/p364_026.wav
|
2598 |
+
p364/p364_113.wav
|
2599 |
+
p364/p364_204.wav
|
2600 |
+
p364/p364_037.wav
|
2601 |
+
p364/p364_278.wav
|
2602 |
+
p364/p364_030.wav
|
2603 |
+
p364/p364_168.wav
|
2604 |
+
p364/p364_114.wav
|
2605 |
+
p364/p364_203.wav
|
2606 |
+
p364/p364_166.wav
|
2607 |
+
p364/p364_271.wav
|
2608 |
+
p364/p364_042.wav
|
2609 |
+
p364/p364_094.wav
|
2610 |
+
p364/p364_045.wav
|
2611 |
+
p364/p364_039.wav
|
2612 |
+
p364/p364_161.wav
|
2613 |
+
p364/p364_276.wav
|
2614 |
+
p364/p364_070.wav
|
2615 |
+
p364/p364_128.wav
|
2616 |
+
p364/p364_243.wav
|
2617 |
+
p364/p364_185.wav
|
2618 |
+
p364/p364_154.wav
|
2619 |
+
p364/p364_292.wav
|
2620 |
+
p364/p364_244.wav
|
2621 |
+
p364/p364_182.wav
|
2622 |
+
p364/p364_153.wav
|
2623 |
+
p364/p364_077.wav
|
2624 |
+
p364/p364_238.wav
|
2625 |
+
p364/p364_005.wav
|
2626 |
+
p364/p364_079.wav
|
2627 |
+
p364/p364_236.wav
|
2628 |
+
p364/p364_121.wav
|
2629 |
+
p364/p364_231.wav
|
2630 |
+
p364/p364_126.wav
|
2631 |
+
p364/p364_002.wav
|
2632 |
+
p364/p364_214.wav
|
2633 |
+
p364/p364_103.wav
|
2634 |
+
p364/p364_268.wav
|
2635 |
+
p364/p364_027.wav
|
2636 |
+
p364/p364_178.wav
|
2637 |
+
p364/p364_020.wav
|
2638 |
+
p364/p364_213.wav
|
2639 |
+
p364/p364_104.wav
|
2640 |
+
p364/p364_261.wav
|
2641 |
+
p364/p364_176.wav
|
2642 |
+
p364/p364_083.wav
|
2643 |
+
p364/p364_055.wav
|
2644 |
+
p364/p364_084.wav
|
2645 |
+
p364/p364_266.wav
|
2646 |
+
p364/p364_171.wav
|
2647 |
+
p364/p364_029.wav
|
2648 |
+
p364/p364_138.wav
|
2649 |
+
p364/p364_060.wav
|
2650 |
+
p364/p364_144.wav
|
2651 |
+
p364/p364_282.wav
|
2652 |
+
p364/p364_253.wav
|
2653 |
+
p364/p364_195.wav
|
2654 |
+
p364/p364_143.wav
|
2655 |
+
p364/p364_285.wav
|
2656 |
+
p364/p364_254.wav
|
2657 |
+
p364/p364_192.wav
|
2658 |
+
p364/p364_228.wav
|
2659 |
+
p364/p364_067.wav
|
2660 |
+
p364/p364_302.wav
|
2661 |
+
p364/p364_015.wav
|
2662 |
+
p364/p364_131.wav
|
2663 |
+
p364/p364_226.wav
|
2664 |
+
p364/p364_069.wav
|
2665 |
+
p364/p364_136.wav
|
2666 |
+
p364/p364_221.wav
|
2667 |
+
p364/p364_305.wav
|
2668 |
+
p364/p364_012.wav
|
2669 |
+
p364/p364_230.wav
|
2670 |
+
p364/p364_127.wav
|
2671 |
+
p364/p364_003.wav
|
2672 |
+
p364/p364_004.wav
|
2673 |
+
p364/p364_078.wav
|
2674 |
+
p364/p364_237.wav
|
2675 |
+
p364/p364_120.wav
|
2676 |
+
p364/p364_245.wav
|
2677 |
+
p364/p364_183.wav
|
2678 |
+
p364/p364_152.wav
|
2679 |
+
p364/p364_294.wav
|
2680 |
+
p364/p364_076.wav
|
2681 |
+
p364/p364_239.wav
|
2682 |
+
p364/p364_071.wav
|
2683 |
+
p364/p364_129.wav
|
2684 |
+
p364/p364_242.wav
|
2685 |
+
p364/p364_184.wav
|
2686 |
+
p364/p364_155.wav
|
2687 |
+
p364/p364_293.wav
|
2688 |
+
p364/p364_095.wav
|
2689 |
+
p364/p364_044.wav
|
2690 |
+
p364/p364_038.wav
|
2691 |
+
p364/p364_160.wav
|
2692 |
+
p364/p364_277.wav
|
2693 |
+
p364/p364_167.wav
|
2694 |
+
p364/p364_270.wav
|
2695 |
+
p364/p364_092.wav
|
2696 |
+
p364/p364_043.wav
|
2697 |
+
p364/p364_031.wav
|
2698 |
+
p364/p364_169.wav
|
2699 |
+
p364/p364_115.wav
|
2700 |
+
p364/p364_202.wav
|
2701 |
+
p364/p364_112.wav
|
2702 |
+
p364/p364_205.wav
|
2703 |
+
p364/p364_036.wav
|
2704 |
+
p364/p364_279.wav
|
2705 |
+
p360/p360_149.wav
|
2706 |
+
p360/p360_198.wav
|
2707 |
+
p360/p360_306.wav
|
2708 |
+
p360/p360_011.wav
|
2709 |
+
p360/p360_135.wav
|
2710 |
+
p360/p360_222.wav
|
2711 |
+
p360/p360_132.wav
|
2712 |
+
p360/p360_225.wav
|
2713 |
+
p360/p360_288.wav
|
2714 |
+
p360/p360_259.wav
|
2715 |
+
p360/p360_301.wav
|
2716 |
+
p360/p360_016.wav
|
2717 |
+
p360/p360_373.wav
|
2718 |
+
p360/p360_405.wav
|
2719 |
+
p360/p360_064.wav
|
2720 |
+
p360/p360_286.wav
|
2721 |
+
p360/p360_140.wav
|
2722 |
+
p360/p360_191.wav
|
2723 |
+
p360/p360_257.wav
|
2724 |
+
p360/p360_018.wav
|
2725 |
+
p360/p360_281.wav
|
2726 |
+
p360/p360_147.wav
|
2727 |
+
p360/p360_196.wav
|
2728 |
+
p360/p360_250.wav
|
2729 |
+
p360/p360_308.wav
|
2730 |
+
p360/p360_374.wav
|
2731 |
+
p360/p360_402.wav
|
2732 |
+
p360/p360_063.wav
|
2733 |
+
p360/p360_265.wav
|
2734 |
+
p360/p360_172.wav
|
2735 |
+
p360/p360_219.wav
|
2736 |
+
p360/p360_056.wav
|
2737 |
+
p360/p360_390.wav
|
2738 |
+
p360/p360_341.wav
|
2739 |
+
p360/p360_087.wav
|
2740 |
+
p360/p360_109.wav
|
2741 |
+
p360/p360_051.wav
|
2742 |
+
p360/p360_397.wav
|
2743 |
+
p360/p360_346.wav
|
2744 |
+
p360/p360_080.wav
|
2745 |
+
p360/p360_262.wav
|
2746 |
+
p360/p360_175.wav
|
2747 |
+
p360/p360_210.wav
|
2748 |
+
p360/p360_107.wav
|
2749 |
+
p360/p360_399.wav
|
2750 |
+
p360/p360_348.wav
|
2751 |
+
p360/p360_023.wav
|
2752 |
+
p360/p360_334.wav
|
2753 |
+
p360/p360_024.wav
|
2754 |
+
p360/p360_333.wav
|
2755 |
+
p360/p360_217.wav
|
2756 |
+
p360/p360_100.wav
|
2757 |
+
p360/p360_058.wav
|
2758 |
+
p360/p360_089.wav
|
2759 |
+
p360/p360_322.wav
|
2760 |
+
p360/p360_035.wav
|
2761 |
+
p360/p360_098.wav
|
2762 |
+
p360/p360_049.wav
|
2763 |
+
p360/p360_111.wav
|
2764 |
+
p360/p360_206.wav
|
2765 |
+
p360/p360_359.wav
|
2766 |
+
p360/p360_388.wav
|
2767 |
+
p360/p360_116.wav
|
2768 |
+
p360/p360_201.wav
|
2769 |
+
p360/p360_325.wav
|
2770 |
+
p360/p360_032.wav
|
2771 |
+
p360/p360_357.wav
|
2772 |
+
p360/p360_091.wav
|
2773 |
+
p360/p360_040.wav
|
2774 |
+
p360/p360_421.wav
|
2775 |
+
p360/p360_386.wav
|
2776 |
+
p360/p360_118.wav
|
2777 |
+
p360/p360_164.wav
|
2778 |
+
p360/p360_273.wav
|
2779 |
+
p360/p360_163.wav
|
2780 |
+
p360/p360_274.wav
|
2781 |
+
p360/p360_350.wav
|
2782 |
+
p360/p360_096.wav
|
2783 |
+
p360/p360_047.wav
|
2784 |
+
p360/p360_381.wav
|
2785 |
+
p360/p360_208.wav
|
2786 |
+
p360/p360_319.wav
|
2787 |
+
p360/p360_187.wav
|
2788 |
+
p360/p360_241.wav
|
2789 |
+
p360/p360_290.wav
|
2790 |
+
p360/p360_156.wav
|
2791 |
+
p360/p360_413.wav
|
2792 |
+
p360/p360_072.wav
|
2793 |
+
p360/p360_365.wav
|
2794 |
+
p360/p360_414.wav
|
2795 |
+
p360/p360_075.wav
|
2796 |
+
p360/p360_362.wav
|
2797 |
+
p360/p360_009.wav
|
2798 |
+
p360/p360_180.wav
|
2799 |
+
p360/p360_246.wav
|
2800 |
+
p360/p360_297.wav
|
2801 |
+
p360/p360_151.wav
|
2802 |
+
p360/p360_234.wav
|
2803 |
+
p360/p360_123.wav
|
2804 |
+
p360/p360_007.wav
|
2805 |
+
p360/p360_310.wav
|
2806 |
+
p360/p360_248.wav
|
2807 |
+
p360/p360_299.wav
|
2808 |
+
p360/p360_317.wav
|
2809 |
+
p360/p360_189.wav
|
2810 |
+
p360/p360_158.wav
|
2811 |
+
p360/p360_233.wav
|
2812 |
+
p360/p360_124.wav
|
2813 |
+
p360/p360_025.wav
|
2814 |
+
p360/p360_332.wav
|
2815 |
+
p360/p360_216.wav
|
2816 |
+
p360/p360_101.wav
|
2817 |
+
p360/p360_059.wav
|
2818 |
+
p360/p360_088.wav
|
2819 |
+
p360/p360_211.wav
|
2820 |
+
p360/p360_106.wav
|
2821 |
+
p360/p360_398.wav
|
2822 |
+
p360/p360_349.wav
|
2823 |
+
p360/p360_022.wav
|
2824 |
+
p360/p360_335.wav
|
2825 |
+
p360/p360_108.wav
|
2826 |
+
p360/p360_050.wav
|
2827 |
+
p360/p360_396.wav
|
2828 |
+
p360/p360_347.wav
|
2829 |
+
p360/p360_081.wav
|
2830 |
+
p360/p360_263.wav
|
2831 |
+
p360/p360_174.wav
|
2832 |
+
p360/p360_264.wav
|
2833 |
+
p360/p360_173.wav
|
2834 |
+
p360/p360_218.wav
|
2835 |
+
p360/p360_057.wav
|
2836 |
+
p360/p360_391.wav
|
2837 |
+
p360/p360_340.wav
|
2838 |
+
p360/p360_086.wav
|
2839 |
+
p360/p360_280.wav
|
2840 |
+
p360/p360_146.wav
|
2841 |
+
p360/p360_197.wav
|
2842 |
+
p360/p360_251.wav
|
2843 |
+
p360/p360_309.wav
|
2844 |
+
p360/p360_375.wav
|
2845 |
+
p360/p360_403.wav
|
2846 |
+
p360/p360_062.wav
|
2847 |
+
p360/p360_372.wav
|
2848 |
+
p360/p360_404.wav
|
2849 |
+
p360/p360_065.wav
|
2850 |
+
p360/p360_287.wav
|
2851 |
+
p360/p360_141.wav
|
2852 |
+
p360/p360_190.wav
|
2853 |
+
p360/p360_256.wav
|
2854 |
+
p360/p360_019.wav
|
2855 |
+
p360/p360_133.wav
|
2856 |
+
p360/p360_224.wav
|
2857 |
+
p360/p360_289.wav
|
2858 |
+
p360/p360_258.wav
|
2859 |
+
p360/p360_300.wav
|
2860 |
+
p360/p360_017.wav
|
2861 |
+
p360/p360_148.wav
|
2862 |
+
p360/p360_199.wav
|
2863 |
+
p360/p360_307.wav
|
2864 |
+
p360/p360_010.wav
|
2865 |
+
p360/p360_134.wav
|
2866 |
+
p360/p360_223.wav
|
2867 |
+
p360/p360_001.wav
|
2868 |
+
p360/p360_316.wav
|
2869 |
+
p360/p360_188.wav
|
2870 |
+
p360/p360_159.wav
|
2871 |
+
p360/p360_232.wav
|
2872 |
+
p360/p360_125.wav
|
2873 |
+
p360/p360_235.wav
|
2874 |
+
p360/p360_122.wav
|
2875 |
+
p360/p360_006.wav
|
2876 |
+
p360/p360_311.wav
|
2877 |
+
p360/p360_249.wav
|
2878 |
+
p360/p360_298.wav
|
2879 |
+
p360/p360_415.wav
|
2880 |
+
p360/p360_074.wav
|
2881 |
+
p360/p360_363.wav
|
2882 |
+
p360/p360_008.wav
|
2883 |
+
p360/p360_181.wav
|
2884 |
+
p360/p360_247.wav
|
2885 |
+
p360/p360_296.wav
|
2886 |
+
p360/p360_150.wav
|
2887 |
+
p360/p360_318.wav
|
2888 |
+
p360/p360_186.wav
|
2889 |
+
p360/p360_240.wav
|
2890 |
+
p360/p360_291.wav
|
2891 |
+
p360/p360_157.wav
|
2892 |
+
p360/p360_412.wav
|
2893 |
+
p360/p360_073.wav
|
2894 |
+
p360/p360_364.wav
|
2895 |
+
p360/p360_162.wav
|
2896 |
+
p360/p360_275.wav
|
2897 |
+
p360/p360_351.wav
|
2898 |
+
p360/p360_097.wav
|
2899 |
+
p360/p360_046.wav
|
2900 |
+
p360/p360_380.wav
|
2901 |
+
p360/p360_209.wav
|
2902 |
+
p360/p360_356.wav
|
2903 |
+
p360/p360_090.wav
|
2904 |
+
p360/p360_041.wav
|
2905 |
+
p360/p360_387.wav
|
2906 |
+
p360/p360_420.wav
|
2907 |
+
p360/p360_119.wav
|
2908 |
+
p360/p360_165.wav
|
2909 |
+
p360/p360_272.wav
|
2910 |
+
p360/p360_358.wav
|
2911 |
+
p360/p360_389.wav
|
2912 |
+
p360/p360_117.wav
|
2913 |
+
p360/p360_200.wav
|
2914 |
+
p360/p360_324.wav
|
2915 |
+
p360/p360_033.wav
|
2916 |
+
p360/p360_323.wav
|
2917 |
+
p360/p360_034.wav
|
2918 |
+
p360/p360_099.wav
|
2919 |
+
p360/p360_048.wav
|
2920 |
+
p360/p360_110.wav
|
2921 |
+
p360/p360_207.wav
|
2922 |
+
p360/p360_079.wav
|
2923 |
+
p360/p360_418.wav
|
2924 |
+
p360/p360_236.wav
|
2925 |
+
p360/p360_121.wav
|
2926 |
+
p360/p360_005.wav
|
2927 |
+
p360/p360_312.wav
|
2928 |
+
p360/p360_002.wav
|
2929 |
+
p360/p360_315.wav
|
2930 |
+
p360/p360_369.wav
|
2931 |
+
p360/p360_231.wav
|
2932 |
+
p360/p360_126.wav
|
2933 |
+
p360/p360_243.wav
|
2934 |
+
p360/p360_185.wav
|
2935 |
+
p360/p360_154.wav
|
2936 |
+
p360/p360_292.wav
|
2937 |
+
p360/p360_070.wav
|
2938 |
+
p360/p360_411.wav
|
2939 |
+
p360/p360_367.wav
|
2940 |
+
p360/p360_128.wav
|
2941 |
+
p360/p360_077.wav
|
2942 |
+
p360/p360_416.wav
|
2943 |
+
p360/p360_360.wav
|
2944 |
+
p360/p360_238.wav
|
2945 |
+
p360/p360_244.wav
|
2946 |
+
p360/p360_182.wav
|
2947 |
+
p360/p360_153.wav
|
2948 |
+
p360/p360_295.wav
|
2949 |
+
p360/p360_093.wav
|
2950 |
+
p360/p360_355.wav
|
2951 |
+
p360/p360_384.wav
|
2952 |
+
p360/p360_423.wav
|
2953 |
+
p360/p360_042.wav
|
2954 |
+
p360/p360_329.wav
|
2955 |
+
p360/p360_166.wav
|
2956 |
+
p360/p360_271.wav
|
2957 |
+
p360/p360_039.wav
|
2958 |
+
p360/p360_161.wav
|
2959 |
+
p360/p360_276.wav
|
2960 |
+
p360/p360_094.wav
|
2961 |
+
p360/p360_352.wav
|
2962 |
+
p360/p360_424.wav
|
2963 |
+
p360/p360_383.wav
|
2964 |
+
p360/p360_045.wav
|
2965 |
+
p360/p360_320.wav
|
2966 |
+
p360/p360_037.wav
|
2967 |
+
p360/p360_278.wav
|
2968 |
+
p360/p360_113.wav
|
2969 |
+
p360/p360_204.wav
|
2970 |
+
p360/p360_114.wav
|
2971 |
+
p360/p360_203.wav
|
2972 |
+
p360/p360_327.wav
|
2973 |
+
p360/p360_030.wav
|
2974 |
+
p360/p360_168.wav
|
2975 |
+
p360/p360_212.wav
|
2976 |
+
p360/p360_105.wav
|
2977 |
+
p360/p360_179.wav
|
2978 |
+
p360/p360_021.wav
|
2979 |
+
p360/p360_336.wav
|
2980 |
+
p360/p360_269.wav
|
2981 |
+
p360/p360_026.wav
|
2982 |
+
p360/p360_331.wav
|
2983 |
+
p360/p360_215.wav
|
2984 |
+
p360/p360_102.wav
|
2985 |
+
p360/p360_267.wav
|
2986 |
+
p360/p360_170.wav
|
2987 |
+
p360/p360_028.wav
|
2988 |
+
p360/p360_392.wav
|
2989 |
+
p360/p360_054.wav
|
2990 |
+
p360/p360_085.wav
|
2991 |
+
p360/p360_343.wav
|
2992 |
+
p360/p360_395.wav
|
2993 |
+
p360/p360_053.wav
|
2994 |
+
p360/p360_082.wav
|
2995 |
+
p360/p360_344.wav
|
2996 |
+
p360/p360_260.wav
|
2997 |
+
p360/p360_177.wav
|
2998 |
+
p360/p360_338.wav
|
2999 |
+
p360/p360_229.wav
|
3000 |
+
p360/p360_371.wav
|
3001 |
+
p360/p360_066.wav
|
3002 |
+
p360/p360_407.wav
|
3003 |
+
p360/p360_142.wav
|
3004 |
+
p360/p360_284.wav
|
3005 |
+
p360/p360_255.wav
|
3006 |
+
p360/p360_193.wav
|
3007 |
+
p360/p360_145.wav
|
3008 |
+
p360/p360_283.wav
|
3009 |
+
p360/p360_252.wav
|
3010 |
+
p360/p360_194.wav
|
3011 |
+
p360/p360_139.wav
|
3012 |
+
p360/p360_376.wav
|
3013 |
+
p360/p360_061.wav
|
3014 |
+
p360/p360_400.wav
|
3015 |
+
p360/p360_304.wav
|
3016 |
+
p360/p360_013.wav
|
3017 |
+
p360/p360_137.wav
|
3018 |
+
p360/p360_220.wav
|
3019 |
+
p360/p360_378.wav
|
3020 |
+
p360/p360_130.wav
|
3021 |
+
p360/p360_227.wav
|
3022 |
+
p360/p360_068.wav
|
3023 |
+
p360/p360_409.wav
|
3024 |
+
p360/p360_303.wav
|
3025 |
+
p360/p360_014.wav
|
3026 |
+
p360/p360_115.wav
|
3027 |
+
p360/p360_202.wav
|
3028 |
+
p360/p360_326.wav
|
3029 |
+
p360/p360_031.wav
|
3030 |
+
p360/p360_169.wav
|
3031 |
+
p360/p360_321.wav
|
3032 |
+
p360/p360_036.wav
|
3033 |
+
p360/p360_279.wav
|
3034 |
+
p360/p360_112.wav
|
3035 |
+
p360/p360_205.wav
|
3036 |
+
p360/p360_038.wav
|
3037 |
+
p360/p360_160.wav
|
3038 |
+
p360/p360_277.wav
|
3039 |
+
p360/p360_095.wav
|
3040 |
+
p360/p360_353.wav
|
3041 |
+
p360/p360_382.wav
|
3042 |
+
p360/p360_044.wav
|
3043 |
+
p360/p360_092.wav
|
3044 |
+
p360/p360_354.wav
|
3045 |
+
p360/p360_422.wav
|
3046 |
+
p360/p360_385.wav
|
3047 |
+
p360/p360_043.wav
|
3048 |
+
p360/p360_328.wav
|
3049 |
+
p360/p360_167.wav
|
3050 |
+
p360/p360_270.wav
|
3051 |
+
p360/p360_076.wav
|
3052 |
+
p360/p360_417.wav
|
3053 |
+
p360/p360_361.wav
|
3054 |
+
p360/p360_239.wav
|
3055 |
+
p360/p360_245.wav
|
3056 |
+
p360/p360_183.wav
|
3057 |
+
p360/p360_152.wav
|
3058 |
+
p360/p360_294.wav
|
3059 |
+
p360/p360_242.wav
|
3060 |
+
p360/p360_184.wav
|
3061 |
+
p360/p360_155.wav
|
3062 |
+
p360/p360_293.wav
|
3063 |
+
p360/p360_071.wav
|
3064 |
+
p360/p360_410.wav
|
3065 |
+
p360/p360_366.wav
|
3066 |
+
p360/p360_129.wav
|
3067 |
+
p360/p360_003.wav
|
3068 |
+
p360/p360_314.wav
|
3069 |
+
p360/p360_368.wav
|
3070 |
+
p360/p360_230.wav
|
3071 |
+
p360/p360_127.wav
|
3072 |
+
p360/p360_078.wav
|
3073 |
+
p360/p360_419.wav
|
3074 |
+
p360/p360_237.wav
|
3075 |
+
p360/p360_120.wav
|
3076 |
+
p360/p360_004.wav
|
3077 |
+
p360/p360_313.wav
|
3078 |
+
p360/p360_131.wav
|
3079 |
+
p360/p360_226.wav
|
3080 |
+
p360/p360_069.wav
|
3081 |
+
p360/p360_408.wav
|
3082 |
+
p360/p360_302.wav
|
3083 |
+
p360/p360_015.wav
|
3084 |
+
p360/p360_305.wav
|
3085 |
+
p360/p360_012.wav
|
3086 |
+
p360/p360_136.wav
|
3087 |
+
p360/p360_221.wav
|
3088 |
+
p360/p360_379.wav
|
3089 |
+
p360/p360_144.wav
|
3090 |
+
p360/p360_282.wav
|
3091 |
+
p360/p360_253.wav
|
3092 |
+
p360/p360_195.wav
|
3093 |
+
p360/p360_138.wav
|
3094 |
+
p360/p360_377.wav
|
3095 |
+
p360/p360_060.wav
|
3096 |
+
p360/p360_401.wav
|
3097 |
+
p360/p360_228.wav
|
3098 |
+
p360/p360_370.wav
|
3099 |
+
p360/p360_067.wav
|
3100 |
+
p360/p360_406.wav
|
3101 |
+
p360/p360_143.wav
|
3102 |
+
p360/p360_285.wav
|
3103 |
+
p360/p360_254.wav
|
3104 |
+
p360/p360_192.wav
|
3105 |
+
p360/p360_394.wav
|
3106 |
+
p360/p360_052.wav
|
3107 |
+
p360/p360_083.wav
|
3108 |
+
p360/p360_345.wav
|
3109 |
+
p360/p360_261.wav
|
3110 |
+
p360/p360_176.wav
|
3111 |
+
p360/p360_339.wav
|
3112 |
+
p360/p360_266.wav
|
3113 |
+
p360/p360_171.wav
|
3114 |
+
p360/p360_029.wav
|
3115 |
+
p360/p360_393.wav
|
3116 |
+
p360/p360_055.wav
|
3117 |
+
p360/p360_084.wav
|
3118 |
+
p360/p360_342.wav
|
3119 |
+
p360/p360_268.wav
|
3120 |
+
p360/p360_027.wav
|
3121 |
+
p360/p360_330.wav
|
3122 |
+
p360/p360_214.wav
|
3123 |
+
p360/p360_103.wav
|
3124 |
+
p360/p360_213.wav
|
3125 |
+
p360/p360_104.wav
|
3126 |
+
p360/p360_178.wav
|
3127 |
+
p360/p360_020.wav
|
3128 |
+
p360/p360_337.wav
|
3129 |
+
p374/p374_417.wav
|
3130 |
+
p374/p374_076.wav
|
3131 |
+
p374/p374_361.wav
|
3132 |
+
p374/p374_239.wav
|
3133 |
+
p374/p374_183.wav
|
3134 |
+
p374/p374_245.wav
|
3135 |
+
p374/p374_294.wav
|
3136 |
+
p374/p374_152.wav
|
3137 |
+
p374/p374_184.wav
|
3138 |
+
p374/p374_242.wav
|
3139 |
+
p374/p374_293.wav
|
3140 |
+
p374/p374_155.wav
|
3141 |
+
p374/p374_410.wav
|
3142 |
+
p374/p374_071.wav
|
3143 |
+
p374/p374_366.wav
|
3144 |
+
p374/p374_129.wav
|
3145 |
+
p374/p374_003.wav
|
3146 |
+
p374/p374_314.wav
|
3147 |
+
p374/p374_368.wav
|
3148 |
+
p374/p374_230.wav
|
3149 |
+
p374/p374_127.wav
|
3150 |
+
p374/p374_419.wav
|
3151 |
+
p374/p374_078.wav
|
3152 |
+
p374/p374_237.wav
|
3153 |
+
p374/p374_120.wav
|
3154 |
+
p374/p374_004.wav
|
3155 |
+
p374/p374_313.wav
|
3156 |
+
p374/p374_115.wav
|
3157 |
+
p374/p374_202.wav
|
3158 |
+
p374/p374_326.wav
|
3159 |
+
p374/p374_031.wav
|
3160 |
+
p374/p374_169.wav
|
3161 |
+
p374/p374_321.wav
|
3162 |
+
p374/p374_036.wav
|
3163 |
+
p374/p374_279.wav
|
3164 |
+
p374/p374_112.wav
|
3165 |
+
p374/p374_205.wav
|
3166 |
+
p374/p374_038.wav
|
3167 |
+
p374/p374_160.wav
|
3168 |
+
p374/p374_277.wav
|
3169 |
+
p374/p374_353.wav
|
3170 |
+
p374/p374_095.wav
|
3171 |
+
p374/p374_044.wav
|
3172 |
+
p374/p374_382.wav
|
3173 |
+
p374/p374_354.wav
|
3174 |
+
p374/p374_092.wav
|
3175 |
+
p374/p374_043.wav
|
3176 |
+
p374/p374_422.wav
|
3177 |
+
p374/p374_385.wav
|
3178 |
+
p374/p374_328.wav
|
3179 |
+
p374/p374_167.wav
|
3180 |
+
p374/p374_270.wav
|
3181 |
+
p374/p374_052.wav
|
3182 |
+
p374/p374_394.wav
|
3183 |
+
p374/p374_345.wav
|
3184 |
+
p374/p374_083.wav
|
3185 |
+
p374/p374_261.wav
|
3186 |
+
p374/p374_176.wav
|
3187 |
+
p374/p374_339.wav
|
3188 |
+
p374/p374_266.wav
|
3189 |
+
p374/p374_171.wav
|
3190 |
+
p374/p374_029.wav
|
3191 |
+
p374/p374_055.wav
|
3192 |
+
p374/p374_393.wav
|
3193 |
+
p374/p374_342.wav
|
3194 |
+
p374/p374_084.wav
|
3195 |
+
p374/p374_268.wav
|
3196 |
+
p374/p374_027.wav
|
3197 |
+
p374/p374_330.wav
|
3198 |
+
p374/p374_214.wav
|
3199 |
+
p374/p374_103.wav
|
3200 |
+
p374/p374_213.wav
|
3201 |
+
p374/p374_104.wav
|
3202 |
+
p374/p374_178.wav
|
3203 |
+
p374/p374_020.wav
|
3204 |
+
p374/p374_337.wav
|
3205 |
+
p374/p374_131.wav
|
3206 |
+
p374/p374_226.wav
|
3207 |
+
p374/p374_408.wav
|
3208 |
+
p374/p374_069.wav
|
3209 |
+
p374/p374_302.wav
|
3210 |
+
p374/p374_015.wav
|
3211 |
+
p374/p374_305.wav
|
3212 |
+
p374/p374_012.wav
|
3213 |
+
p374/p374_136.wav
|
3214 |
+
p374/p374_221.wav
|
3215 |
+
p374/p374_379.wav
|
3216 |
+
p374/p374_282.wav
|
3217 |
+
p374/p374_144.wav
|
3218 |
+
p374/p374_195.wav
|
3219 |
+
p374/p374_253.wav
|
3220 |
+
p374/p374_138.wav
|
3221 |
+
p374/p374_377.wav
|
3222 |
+
p374/p374_401.wav
|
3223 |
+
p374/p374_060.wav
|
3224 |
+
p374/p374_228.wav
|
3225 |
+
p374/p374_370.wav
|
3226 |
+
p374/p374_406.wav
|
3227 |
+
p374/p374_067.wav
|
3228 |
+
p374/p374_285.wav
|
3229 |
+
p374/p374_143.wav
|
3230 |
+
p374/p374_192.wav
|
3231 |
+
p374/p374_254.wav
|
3232 |
+
p374/p374_355.wav
|
3233 |
+
p374/p374_093.wav
|
3234 |
+
p374/p374_042.wav
|
3235 |
+
p374/p374_384.wav
|
3236 |
+
p374/p374_423.wav
|
3237 |
+
p374/p374_329.wav
|
3238 |
+
p374/p374_166.wav
|
3239 |
+
p374/p374_271.wav
|
3240 |
+
p374/p374_039.wav
|
3241 |
+
p374/p374_161.wav
|
3242 |
+
p374/p374_276.wav
|
3243 |
+
p374/p374_352.wav
|
3244 |
+
p374/p374_094.wav
|
3245 |
+
p374/p374_045.wav
|
3246 |
+
p374/p374_424.wav
|
3247 |
+
p374/p374_383.wav
|
3248 |
+
p374/p374_320.wav
|
3249 |
+
p374/p374_037.wav
|
3250 |
+
p374/p374_278.wav
|
3251 |
+
p374/p374_113.wav
|
3252 |
+
p374/p374_204.wav
|
3253 |
+
p374/p374_114.wav
|
3254 |
+
p374/p374_203.wav
|
3255 |
+
p374/p374_327.wav
|
3256 |
+
p374/p374_030.wav
|
3257 |
+
p374/p374_168.wav
|
3258 |
+
p374/p374_418.wav
|
3259 |
+
p374/p374_079.wav
|
3260 |
+
p374/p374_236.wav
|
3261 |
+
p374/p374_121.wav
|
3262 |
+
p374/p374_005.wav
|
3263 |
+
p374/p374_312.wav
|
3264 |
+
p374/p374_002.wav
|
3265 |
+
p374/p374_315.wav
|
3266 |
+
p374/p374_369.wav
|
3267 |
+
p374/p374_231.wav
|
3268 |
+
p374/p374_126.wav
|
3269 |
+
p374/p374_185.wav
|
3270 |
+
p374/p374_243.wav
|
3271 |
+
p374/p374_292.wav
|
3272 |
+
p374/p374_154.wav
|
3273 |
+
p374/p374_411.wav
|
3274 |
+
p374/p374_070.wav
|
3275 |
+
p374/p374_367.wav
|
3276 |
+
p374/p374_128.wav
|
3277 |
+
p374/p374_416.wav
|
3278 |
+
p374/p374_077.wav
|
3279 |
+
p374/p374_360.wav
|
3280 |
+
p374/p374_238.wav
|
3281 |
+
p374/p374_182.wav
|
3282 |
+
p374/p374_244.wav
|
3283 |
+
p374/p374_295.wav
|
3284 |
+
p374/p374_153.wav
|
3285 |
+
p374/p374_229.wav
|
3286 |
+
p374/p374_371.wav
|
3287 |
+
p374/p374_407.wav
|
3288 |
+
p374/p374_066.wav
|
3289 |
+
p374/p374_284.wav
|
3290 |
+
p374/p374_142.wav
|
3291 |
+
p374/p374_193.wav
|
3292 |
+
p374/p374_255.wav
|
3293 |
+
p374/p374_283.wav
|
3294 |
+
p374/p374_145.wav
|
3295 |
+
p374/p374_194.wav
|
3296 |
+
p374/p374_252.wav
|
3297 |
+
p374/p374_139.wav
|
3298 |
+
p374/p374_376.wav
|
3299 |
+
p374/p374_400.wav
|
3300 |
+
p374/p374_061.wav
|
3301 |
+
p374/p374_304.wav
|
3302 |
+
p374/p374_013.wav
|
3303 |
+
p374/p374_137.wav
|
3304 |
+
p374/p374_220.wav
|
3305 |
+
p374/p374_378.wav
|
3306 |
+
p374/p374_130.wav
|
3307 |
+
p374/p374_227.wav
|
3308 |
+
p374/p374_409.wav
|
3309 |
+
p374/p374_068.wav
|
3310 |
+
p374/p374_303.wav
|
3311 |
+
p374/p374_014.wav
|
3312 |
+
p374/p374_212.wav
|
3313 |
+
p374/p374_105.wav
|
3314 |
+
p374/p374_179.wav
|
3315 |
+
p374/p374_021.wav
|
3316 |
+
p374/p374_336.wav
|
3317 |
+
p374/p374_269.wav
|
3318 |
+
p374/p374_026.wav
|
3319 |
+
p374/p374_331.wav
|
3320 |
+
p374/p374_215.wav
|
3321 |
+
p374/p374_102.wav
|
3322 |
+
p374/p374_267.wav
|
3323 |
+
p374/p374_170.wav
|
3324 |
+
p374/p374_028.wav
|
3325 |
+
p374/p374_054.wav
|
3326 |
+
p374/p374_392.wav
|
3327 |
+
p374/p374_343.wav
|
3328 |
+
p374/p374_085.wav
|
3329 |
+
p374/p374_053.wav
|
3330 |
+
p374/p374_395.wav
|
3331 |
+
p374/p374_344.wav
|
3332 |
+
p374/p374_082.wav
|
3333 |
+
p374/p374_260.wav
|
3334 |
+
p374/p374_177.wav
|
3335 |
+
p374/p374_338.wav
|
3336 |
+
p374/p374_146.wav
|
3337 |
+
p374/p374_280.wav
|
3338 |
+
p374/p374_251.wav
|
3339 |
+
p374/p374_197.wav
|
3340 |
+
p374/p374_309.wav
|
3341 |
+
p374/p374_375.wav
|
3342 |
+
p374/p374_062.wav
|
3343 |
+
p374/p374_403.wav
|
3344 |
+
p374/p374_372.wav
|
3345 |
+
p374/p374_065.wav
|
3346 |
+
p374/p374_404.wav
|
3347 |
+
p374/p374_141.wav
|
3348 |
+
p374/p374_287.wav
|
3349 |
+
p374/p374_256.wav
|
3350 |
+
p374/p374_190.wav
|
3351 |
+
p374/p374_019.wav
|
3352 |
+
p374/p374_133.wav
|
3353 |
+
p374/p374_224.wav
|
3354 |
+
p374/p374_289.wav
|
3355 |
+
p374/p374_258.wav
|
3356 |
+
p374/p374_300.wav
|
3357 |
+
p374/p374_017.wav
|
3358 |
+
p374/p374_148.wav
|
3359 |
+
p374/p374_199.wav
|
3360 |
+
p374/p374_307.wav
|
3361 |
+
p374/p374_010.wav
|
3362 |
+
p374/p374_134.wav
|
3363 |
+
p374/p374_223.wav
|
3364 |
+
p374/p374_025.wav
|
3365 |
+
p374/p374_332.wav
|
3366 |
+
p374/p374_216.wav
|
3367 |
+
p374/p374_101.wav
|
3368 |
+
p374/p374_059.wav
|
3369 |
+
p374/p374_088.wav
|
3370 |
+
p374/p374_211.wav
|
3371 |
+
p374/p374_106.wav
|
3372 |
+
p374/p374_398.wav
|
3373 |
+
p374/p374_349.wav
|
3374 |
+
p374/p374_022.wav
|
3375 |
+
p374/p374_335.wav
|
3376 |
+
p374/p374_108.wav
|
3377 |
+
p374/p374_396.wav
|
3378 |
+
p374/p374_050.wav
|
3379 |
+
p374/p374_081.wav
|
3380 |
+
p374/p374_347.wav
|
3381 |
+
p374/p374_263.wav
|
3382 |
+
p374/p374_174.wav
|
3383 |
+
p374/p374_264.wav
|
3384 |
+
p374/p374_173.wav
|
3385 |
+
p374/p374_218.wav
|
3386 |
+
p374/p374_391.wav
|
3387 |
+
p374/p374_057.wav
|
3388 |
+
p374/p374_086.wav
|
3389 |
+
p374/p374_340.wav
|
3390 |
+
p374/p374_162.wav
|
3391 |
+
p374/p374_275.wav
|
3392 |
+
p374/p374_097.wav
|
3393 |
+
p374/p374_351.wav
|
3394 |
+
p374/p374_380.wav
|
3395 |
+
p374/p374_046.wav
|
3396 |
+
p374/p374_209.wav
|
3397 |
+
p374/p374_090.wav
|
3398 |
+
p374/p374_356.wav
|
3399 |
+
p374/p374_387.wav
|
3400 |
+
p374/p374_420.wav
|
3401 |
+
p374/p374_041.wav
|
3402 |
+
p374/p374_119.wav
|
3403 |
+
p374/p374_165.wav
|
3404 |
+
p374/p374_272.wav
|
3405 |
+
p374/p374_358.wav
|
3406 |
+
p374/p374_389.wav
|
3407 |
+
p374/p374_117.wav
|
3408 |
+
p374/p374_200.wav
|
3409 |
+
p374/p374_324.wav
|
3410 |
+
p374/p374_033.wav
|
3411 |
+
p374/p374_323.wav
|
3412 |
+
p374/p374_034.wav
|
3413 |
+
p374/p374_099.wav
|
3414 |
+
p374/p374_048.wav
|
3415 |
+
p374/p374_110.wav
|
3416 |
+
p374/p374_207.wav
|
3417 |
+
p374/p374_001.wav
|
3418 |
+
p374/p374_316.wav
|
3419 |
+
p374/p374_188.wav
|
3420 |
+
p374/p374_159.wav
|
3421 |
+
p374/p374_232.wav
|
3422 |
+
p374/p374_125.wav
|
3423 |
+
p374/p374_235.wav
|
3424 |
+
p374/p374_122.wav
|
3425 |
+
p374/p374_006.wav
|
3426 |
+
p374/p374_311.wav
|
3427 |
+
p374/p374_249.wav
|
3428 |
+
p374/p374_298.wav
|
3429 |
+
p374/p374_074.wav
|
3430 |
+
p374/p374_415.wav
|
3431 |
+
p374/p374_363.wav
|
3432 |
+
p374/p374_008.wav
|
3433 |
+
p374/p374_247.wav
|
3434 |
+
p374/p374_181.wav
|
3435 |
+
p374/p374_150.wav
|
3436 |
+
p374/p374_296.wav
|
3437 |
+
p374/p374_318.wav
|
3438 |
+
p374/p374_240.wav
|
3439 |
+
p374/p374_186.wav
|
3440 |
+
p374/p374_157.wav
|
3441 |
+
p374/p374_291.wav
|
3442 |
+
p374/p374_073.wav
|
3443 |
+
p374/p374_412.wav
|
3444 |
+
p374/p374_364.wav
|
3445 |
+
p374/p374_265.wav
|
3446 |
+
p374/p374_172.wav
|
3447 |
+
p374/p374_219.wav
|
3448 |
+
p374/p374_390.wav
|
3449 |
+
p374/p374_056.wav
|
3450 |
+
p374/p374_087.wav
|
3451 |
+
p374/p374_341.wav
|
3452 |
+
p374/p374_109.wav
|
3453 |
+
p374/p374_397.wav
|
3454 |
+
p374/p374_051.wav
|
3455 |
+
p374/p374_080.wav
|
3456 |
+
p374/p374_346.wav
|
3457 |
+
p374/p374_262.wav
|
3458 |
+
p374/p374_175.wav
|
3459 |
+
p374/p374_210.wav
|
3460 |
+
p374/p374_107.wav
|
3461 |
+
p374/p374_399.wav
|
3462 |
+
p374/p374_348.wav
|
3463 |
+
p374/p374_023.wav
|
3464 |
+
p374/p374_334.wav
|
3465 |
+
p374/p374_024.wav
|
3466 |
+
p374/p374_333.wav
|
3467 |
+
p374/p374_217.wav
|
3468 |
+
p374/p374_100.wav
|
3469 |
+
p374/p374_058.wav
|
3470 |
+
p374/p374_089.wav
|
3471 |
+
p374/p374_149.wav
|
3472 |
+
p374/p374_198.wav
|
3473 |
+
p374/p374_306.wav
|
3474 |
+
p374/p374_011.wav
|
3475 |
+
p374/p374_135.wav
|
3476 |
+
p374/p374_222.wav
|
3477 |
+
p374/p374_132.wav
|
3478 |
+
p374/p374_225.wav
|
3479 |
+
p374/p374_288.wav
|
3480 |
+
p374/p374_259.wav
|
3481 |
+
p374/p374_301.wav
|
3482 |
+
p374/p374_016.wav
|
3483 |
+
p374/p374_373.wav
|
3484 |
+
p374/p374_064.wav
|
3485 |
+
p374/p374_405.wav
|
3486 |
+
p374/p374_140.wav
|
3487 |
+
p374/p374_286.wav
|
3488 |
+
p374/p374_257.wav
|
3489 |
+
p374/p374_191.wav
|
3490 |
+
p374/p374_018.wav
|
3491 |
+
p374/p374_147.wav
|
3492 |
+
p374/p374_281.wav
|
3493 |
+
p374/p374_250.wav
|
3494 |
+
p374/p374_196.wav
|
3495 |
+
p374/p374_308.wav
|
3496 |
+
p374/p374_374.wav
|
3497 |
+
p374/p374_063.wav
|
3498 |
+
p374/p374_402.wav
|
3499 |
+
p374/p374_319.wav
|
3500 |
+
p374/p374_241.wav
|
3501 |
+
p374/p374_187.wav
|
3502 |
+
p374/p374_156.wav
|
3503 |
+
p374/p374_290.wav
|
3504 |
+
p374/p374_072.wav
|
3505 |
+
p374/p374_413.wav
|
3506 |
+
p374/p374_365.wav
|
3507 |
+
p374/p374_075.wav
|
3508 |
+
p374/p374_414.wav
|
3509 |
+
p374/p374_362.wav
|
3510 |
+
p374/p374_009.wav
|
3511 |
+
p374/p374_246.wav
|
3512 |
+
p374/p374_180.wav
|
3513 |
+
p374/p374_151.wav
|
3514 |
+
p374/p374_297.wav
|
3515 |
+
p374/p374_234.wav
|
3516 |
+
p374/p374_123.wav
|
3517 |
+
p374/p374_007.wav
|
3518 |
+
p374/p374_310.wav
|
3519 |
+
p374/p374_248.wav
|
3520 |
+
p374/p374_299.wav
|
3521 |
+
p374/p374_317.wav
|
3522 |
+
p374/p374_189.wav
|
3523 |
+
p374/p374_158.wav
|
3524 |
+
p374/p374_233.wav
|
3525 |
+
p374/p374_124.wav
|
3526 |
+
p374/p374_322.wav
|
3527 |
+
p374/p374_035.wav
|
3528 |
+
p374/p374_098.wav
|
3529 |
+
p374/p374_049.wav
|
3530 |
+
p374/p374_111.wav
|
3531 |
+
p374/p374_206.wav
|
3532 |
+
p374/p374_359.wav
|
3533 |
+
p374/p374_388.wav
|
3534 |
+
p374/p374_116.wav
|
3535 |
+
p374/p374_201.wav
|
3536 |
+
p374/p374_325.wav
|
3537 |
+
p374/p374_032.wav
|
3538 |
+
p374/p374_091.wav
|
3539 |
+
p374/p374_357.wav
|
3540 |
+
p374/p374_421.wav
|
3541 |
+
p374/p374_386.wav
|
3542 |
+
p374/p374_040.wav
|
3543 |
+
p374/p374_118.wav
|
3544 |
+
p374/p374_164.wav
|
3545 |
+
p374/p374_273.wav
|
3546 |
+
p374/p374_163.wav
|
3547 |
+
p374/p374_274.wav
|
3548 |
+
p374/p374_096.wav
|
3549 |
+
p374/p374_350.wav
|
3550 |
+
p374/p374_381.wav
|
3551 |
+
p374/p374_047.wav
|
3552 |
+
p374/p374_208.wav
|
data/vctk/train.txt
ADDED
The diff for this file is too large to render.
See raw diff
|
|
dataset.py
ADDED
@@ -0,0 +1,227 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import glob
|
2 |
+
import os
|
3 |
+
import random
|
4 |
+
|
5 |
+
import librosa
|
6 |
+
import numpy as np
|
7 |
+
import soundfile as sf
|
8 |
+
import torch
|
9 |
+
from numpy.random import default_rng
|
10 |
+
from pydtmc import MarkovChain
|
11 |
+
from sklearn.model_selection import train_test_split
|
12 |
+
from torch.utils.data import Dataset
|
13 |
+
|
14 |
+
from config import CONFIG
|
15 |
+
|
16 |
+
np.random.seed(0)
|
17 |
+
rng = default_rng()
|
18 |
+
|
19 |
+
|
20 |
+
def load_audio(
|
21 |
+
path,
|
22 |
+
sample_rate: int = 16000,
|
23 |
+
chunk_len=None,
|
24 |
+
):
|
25 |
+
with sf.SoundFile(path) as f:
|
26 |
+
sr = f.samplerate
|
27 |
+
audio_len = f.frames
|
28 |
+
|
29 |
+
if chunk_len is not None and chunk_len < audio_len:
|
30 |
+
start_index = torch.randint(0, audio_len - chunk_len, (1,))[0]
|
31 |
+
|
32 |
+
frames = f._prepare_read(start_index, start_index + chunk_len, -1)
|
33 |
+
audio = f.read(frames, always_2d=True, dtype="float32")
|
34 |
+
|
35 |
+
else:
|
36 |
+
audio = f.read(always_2d=True, dtype="float32")
|
37 |
+
|
38 |
+
if sr != sample_rate:
|
39 |
+
audio = librosa.resample(np.squeeze(audio), sr, sample_rate)[:, np.newaxis]
|
40 |
+
|
41 |
+
return audio.T
|
42 |
+
|
43 |
+
|
44 |
+
def pad(sig, length):
|
45 |
+
if sig.shape[1] < length:
|
46 |
+
pad_len = length - sig.shape[1]
|
47 |
+
sig = torch.hstack((sig, torch.zeros((sig.shape[0], pad_len))))
|
48 |
+
|
49 |
+
else:
|
50 |
+
start = random.randint(0, sig.shape[1] - length)
|
51 |
+
sig = sig[:, start:start + length]
|
52 |
+
return sig
|
53 |
+
|
54 |
+
|
55 |
+
class MaskGenerator:
|
56 |
+
def __init__(self, is_train=True, probs=((0.9, 0.1), (0.5, 0.1), (0.5, 0.5))):
|
57 |
+
'''
|
58 |
+
is_train: if True, mask generator for training otherwise for evaluation
|
59 |
+
probs: a list of transition probability (p_N, p_L) for Markov Chain. Only allow 1 tuple if 'is_train=False'
|
60 |
+
'''
|
61 |
+
self.is_train = is_train
|
62 |
+
self.probs = probs
|
63 |
+
self.mcs = []
|
64 |
+
if self.is_train:
|
65 |
+
for prob in probs:
|
66 |
+
self.mcs.append(MarkovChain([[prob[0], 1 - prob[0]], [1 - prob[1], prob[1]]], ['1', '0']))
|
67 |
+
else:
|
68 |
+
assert len(probs) == 1
|
69 |
+
prob = self.probs[0]
|
70 |
+
self.mcs.append(MarkovChain([[probs[0], 1 - prob[0]], [1 - prob[1], prob[1]]], ['1', '0']))
|
71 |
+
|
72 |
+
def gen_mask(self, length, seed=0):
|
73 |
+
if self.is_train:
|
74 |
+
mc = random.choice(self.mcs)
|
75 |
+
else:
|
76 |
+
mc = self.mcs[0]
|
77 |
+
mask = mc.walk(length - 1, seed=seed)
|
78 |
+
mask = np.array(list(map(int, mask)))
|
79 |
+
return mask
|
80 |
+
|
81 |
+
|
82 |
+
class TestLoader(Dataset):
|
83 |
+
def __init__(self):
|
84 |
+
dataset_name = CONFIG.DATA.dataset
|
85 |
+
self.mask = CONFIG.DATA.EVAL.masking
|
86 |
+
|
87 |
+
self.target_root = CONFIG.DATA.data_dir[dataset_name]['root']
|
88 |
+
txt_list = CONFIG.DATA.data_dir[dataset_name]['test']
|
89 |
+
self.data_list = self.load_txt(txt_list)
|
90 |
+
if self.mask == 'real':
|
91 |
+
trace_txt = glob.glob(os.path.join(CONFIG.DATA.EVAL.trace_path, '*.txt'))
|
92 |
+
trace_txt.sort()
|
93 |
+
self.trace_list = [1 - np.array(list(map(int, open(txt, 'r').read().strip('\n').split('\n')))) for txt in
|
94 |
+
trace_txt]
|
95 |
+
else:
|
96 |
+
self.mask_generator = MaskGenerator(is_train=False, probs=CONFIG.DATA.EVAL.transition_probs)
|
97 |
+
|
98 |
+
self.sr = CONFIG.DATA.sr
|
99 |
+
self.stride = CONFIG.DATA.stride
|
100 |
+
self.window_size = CONFIG.DATA.window_size
|
101 |
+
self.audio_chunk_len = CONFIG.DATA.audio_chunk_len
|
102 |
+
self.p_size = CONFIG.DATA.EVAL.packet_size # 20ms
|
103 |
+
self.hann = torch.sqrt(torch.hann_window(self.window_size))
|
104 |
+
|
105 |
+
def __len__(self):
|
106 |
+
return len(self.data_list)
|
107 |
+
|
108 |
+
def load_txt(self, txt_list):
|
109 |
+
target = []
|
110 |
+
with open(txt_list) as f:
|
111 |
+
for line in f:
|
112 |
+
target.append(os.path.join(self.target_root, line.strip('\n')))
|
113 |
+
target = list(set(target))
|
114 |
+
target.sort()
|
115 |
+
return target
|
116 |
+
|
117 |
+
def __getitem__(self, index):
|
118 |
+
target = load_audio(self.data_list[index], sample_rate=self.sr)
|
119 |
+
target = target[:, :(target.shape[1] // self.p_size) * self.p_size]
|
120 |
+
|
121 |
+
sig = np.reshape(target, (-1, self.p_size)).copy()
|
122 |
+
if self.mask == 'real':
|
123 |
+
mask = self.trace_list[index % len(self.trace_list)]
|
124 |
+
mask = np.repeat(mask, np.ceil(len(sig) / len(mask)), 0)[:len(sig)][:, np.newaxis]
|
125 |
+
else:
|
126 |
+
mask = self.mask_generator.gen_mask(len(sig), seed=index)[:, np.newaxis]
|
127 |
+
sig *= mask
|
128 |
+
sig = torch.tensor(sig).reshape(-1)
|
129 |
+
|
130 |
+
target = torch.tensor(target).squeeze(0)
|
131 |
+
|
132 |
+
sig_wav = sig.clone()
|
133 |
+
target_wav = target.clone()
|
134 |
+
|
135 |
+
target = torch.stft(target, self.window_size, self.stride, window=self.hann,
|
136 |
+
return_complex=False).permute(2, 0, 1)
|
137 |
+
sig = torch.stft(sig, self.window_size, self.stride, window=self.hann, return_complex=False).permute(2, 0, 1)
|
138 |
+
return sig.float(), target.float(), sig_wav, target_wav
|
139 |
+
|
140 |
+
|
141 |
+
class BlindTestLoader(Dataset):
|
142 |
+
def __init__(self, test_dir):
|
143 |
+
self.data_list = glob.glob(os.path.join(test_dir, '*.wav'))[:10]
|
144 |
+
self.sr = CONFIG.DATA.sr
|
145 |
+
self.stride = CONFIG.DATA.stride
|
146 |
+
self.chunk_len = CONFIG.DATA.window_size
|
147 |
+
self.hann = torch.sqrt(torch.hann_window(self.chunk_len))
|
148 |
+
|
149 |
+
def __len__(self):
|
150 |
+
return len(self.data_list)
|
151 |
+
|
152 |
+
def __getitem__(self, index):
|
153 |
+
sig = load_audio(self.data_list[index], sample_rate=self.sr)
|
154 |
+
sig = torch.from_numpy(sig).squeeze(0)
|
155 |
+
sig = torch.stft(sig, self.chunk_len, self.stride, window=self.hann, return_complex=False).permute(2, 0, 1)
|
156 |
+
return sig.float()
|
157 |
+
|
158 |
+
|
159 |
+
class TrainDataset(Dataset):
|
160 |
+
|
161 |
+
def __init__(self, mode='train'):
|
162 |
+
dataset_name = CONFIG.DATA.dataset
|
163 |
+
self.target_root = CONFIG.DATA.data_dir[dataset_name]['root']
|
164 |
+
|
165 |
+
txt_list = CONFIG.DATA.data_dir[dataset_name]['train']
|
166 |
+
self.data_list = self.load_txt(txt_list)
|
167 |
+
|
168 |
+
if mode == 'train':
|
169 |
+
self.data_list, _ = train_test_split(self.data_list, test_size=CONFIG.TRAIN.val_split, random_state=0)
|
170 |
+
|
171 |
+
elif mode == 'val':
|
172 |
+
_, self.data_list = train_test_split(self.data_list, test_size=CONFIG.TRAIN.val_split, random_state=0)
|
173 |
+
|
174 |
+
self.p_sizes = CONFIG.DATA.TRAIN.packet_sizes
|
175 |
+
self.mode = mode
|
176 |
+
self.sr = CONFIG.DATA.sr
|
177 |
+
self.window = CONFIG.DATA.audio_chunk_len
|
178 |
+
self.stride = CONFIG.DATA.stride
|
179 |
+
self.chunk_len = CONFIG.DATA.window_size
|
180 |
+
self.hann = torch.sqrt(torch.hann_window(self.chunk_len))
|
181 |
+
self.mask_generator = MaskGenerator(is_train=True, probs=CONFIG.DATA.TRAIN.transition_probs)
|
182 |
+
|
183 |
+
def __len__(self):
|
184 |
+
return len(self.data_list)
|
185 |
+
|
186 |
+
def load_txt(self, txt_list):
|
187 |
+
target = []
|
188 |
+
with open(txt_list) as f:
|
189 |
+
for line in f:
|
190 |
+
target.append(os.path.join(self.target_root, line.strip('\n')))
|
191 |
+
target = list(set(target))
|
192 |
+
target.sort()
|
193 |
+
return target
|
194 |
+
|
195 |
+
def fetch_audio(self, index):
|
196 |
+
sig = load_audio(self.data_list[index], sample_rate=self.sr, chunk_len=self.window)
|
197 |
+
while sig.shape[1] < self.window:
|
198 |
+
idx = torch.randint(0, len(self.data_list), (1,))[0]
|
199 |
+
pad_len = self.window - sig.shape[1]
|
200 |
+
if pad_len < 0.02 * self.sr:
|
201 |
+
padding = np.zeros((1, pad_len), dtype=np.float)
|
202 |
+
else:
|
203 |
+
padding = load_audio(self.data_list[idx], sample_rate=self.sr, chunk_len=pad_len)
|
204 |
+
sig = np.hstack((sig, padding))
|
205 |
+
return sig
|
206 |
+
|
207 |
+
def __getitem__(self, index):
|
208 |
+
sig = self.fetch_audio(index)
|
209 |
+
|
210 |
+
sig = sig.reshape(-1).astype(np.float32)
|
211 |
+
|
212 |
+
sig = sig.reshape((1, -1))
|
213 |
+
target = torch.tensor(sig.copy())
|
214 |
+
p_size = random.choice(self.p_sizes)
|
215 |
+
|
216 |
+
sig = np.reshape(sig, (-1, p_size))
|
217 |
+
mask = self.mask_generator.gen_mask(len(sig), seed=index)[:, np.newaxis]
|
218 |
+
sig *= mask
|
219 |
+
sig = torch.tensor(sig.copy())
|
220 |
+
|
221 |
+
sig = sig.reshape(1, -1)
|
222 |
+
|
223 |
+
target = torch.stft(target.squeeze(0), self.chunk_len, self.stride, window=self.hann,
|
224 |
+
return_complex=False).permute(2, 0, 1).float()
|
225 |
+
sig = torch.stft(sig.squeeze(0), self.chunk_len, self.stride, window=self.hann, return_complex=False)
|
226 |
+
sig = sig.permute(2, 0, 1).float()
|
227 |
+
return sig, target
|
index.html
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<link href="css/styles.css" rel="stylesheet">
|
5 |
+
|
6 |
+
<title>Full-band Recurrent Network</title>
|
7 |
+
</head>
|
8 |
+
<body>
|
9 |
+
<nav>
|
10 |
+
<ul>
|
11 |
+
<!-- <li><a href="/">Home</a></li> -->
|
12 |
+
<li><a href="https://github.com/Crystalsound/FRN/">Github</a></li>
|
13 |
+
<li><a href="https://arxiv.org/abs/2211.04071">Arxiv</a></li>
|
14 |
+
<li><a href="https://www.namitech.io/">Website</a></li>
|
15 |
+
</ul>
|
16 |
+
</nav>
|
17 |
+
<div class=”container”>
|
18 |
+
<div class=”blurb”>
|
19 |
+
<h1>Audio samples</h1>
|
20 |
+
<p><b>Improving performance of real-time full-band blind packet-loss concealment with predictive network</b></a>
|
21 |
+
</p>
|
22 |
+
<p><i>Viet-Anh Nguyen<sup>1</sup>, Anh H. T. Nguyen<sup>1</sup>, and Andy W. H. Khong<sup>2</sup></i>
|
23 |
+
<br><sup>1</sup>Crystalsound Team, NamiTech JSC, Ho Chi Minh City, Vietnam
|
24 |
+
<br><sup>2</sup>Nanyang Technological University, Singapore
|
25 |
+
<br><TT>{vietanh.nguyen, anh.nguyen}@namitech.io, [email protected]
|
26 |
+
</div>
|
27 |
+
</div>
|
28 |
+
<h3> Audio samples of our full-band recurrent network (FRN) versus TFGAN and tPLCNet for blind packet loss concealment
|
29 |
+
(PLC)</h3>
|
30 |
+
Audio files are at 48 kHz sampling rate with packet size of 20 ms. Our FRN is a causal and blind PLC model while TFGAN
|
31 |
+
is non-causal and tPLC is an informed PLC model.
|
32 |
+
<br> </br>
|
33 |
+
<table>
|
34 |
+
<thead>
|
35 |
+
<tr>
|
36 |
+
<th align="middle">Clean target</th>
|
37 |
+
<th align="middle">Lossy input</th>
|
38 |
+
<th align="middle">TFGAN</th>
|
39 |
+
<th align="middle">tPLCNet</th>
|
40 |
+
<th align="middle">FRN (Ours)</th>
|
41 |
+
</tr>
|
42 |
+
</thead>
|
43 |
+
|
44 |
+
<tbody>
|
45 |
+
<tr>
|
46 |
+
<td>
|
47 |
+
<audio controls style="width: 250px; height: 50px">
|
48 |
+
<source src="audio_samples/sample_1/clean.wav" type="audio/wav">
|
49 |
+
</audio>
|
50 |
+
</td>
|
51 |
+
<td>
|
52 |
+
<audio controls style="width: 250px; height: 50px">
|
53 |
+
<source src="audio_samples/sample_1/lossy.wav" type="audio/wav">
|
54 |
+
</audio>
|
55 |
+
</td>
|
56 |
+
<td>
|
57 |
+
<audio controls style="width: 250px; height: 50px">
|
58 |
+
<source src="audio_samples/sample_1/TFGAN_enhanced.wav" type="audio/wav">
|
59 |
+
</audio>
|
60 |
+
</td>
|
61 |
+
<td>
|
62 |
+
<audio controls style="width: 250px; height: 50px">
|
63 |
+
<source src="audio_samples/sample_1/tPLC_enhanced.wav" type="audio/wav">
|
64 |
+
</audio>
|
65 |
+
</td>
|
66 |
+
<td>
|
67 |
+
<audio controls style="width: 250px; height: 50px">
|
68 |
+
<source src="audio_samples/sample_1/FRN_enhanced.wav" type="audio/wav">
|
69 |
+
</audio>
|
70 |
+
</td>
|
71 |
+
</tr>
|
72 |
+
|
73 |
+
<tr>
|
74 |
+
<td>
|
75 |
+
<audio controls style="width: 250px; height: 50px">
|
76 |
+
<source src="audio_samples/sample_2/clean.wav" type="audio/wav">
|
77 |
+
</audio>
|
78 |
+
</td>
|
79 |
+
<td>
|
80 |
+
<audio controls style="width: 250px; height: 50px">
|
81 |
+
<source src="audio_samples/sample_2/lossy.wav" type="audio/wav">
|
82 |
+
</audio>
|
83 |
+
</td>
|
84 |
+
<td>
|
85 |
+
<audio controls style="width: 250px; height: 50px">
|
86 |
+
<source src="audio_samples/sample_2/TFGAN_enhanced.wav" type="audio/wav">
|
87 |
+
</audio>
|
88 |
+
</td>
|
89 |
+
<td>
|
90 |
+
<audio controls style="width: 250px; height: 50px">
|
91 |
+
<source src="audio_samples/sample_2/tPLC_enhanced.wav" type="audio/wav">
|
92 |
+
</audio>
|
93 |
+
</td>
|
94 |
+
<td>
|
95 |
+
<audio controls style="width: 250px; height: 50px">
|
96 |
+
<source src="audio_samples/sample_2/FRN_enhanced.wav" type="audio/wav">
|
97 |
+
</audio>
|
98 |
+
</td>
|
99 |
+
</tr>
|
100 |
+
|
101 |
+
<tr>
|
102 |
+
<td>
|
103 |
+
<audio controls style="width: 250px; height: 50px">
|
104 |
+
<source src="audio_samples/sample_3/clean.wav" type="audio/wav">
|
105 |
+
</audio>
|
106 |
+
</td>
|
107 |
+
<td>
|
108 |
+
<audio controls style="width: 250px; height: 50px">
|
109 |
+
<source src="audio_samples/sample_3/lossy.wav" type="audio/wav">
|
110 |
+
</audio>
|
111 |
+
</td>
|
112 |
+
<td>
|
113 |
+
<audio controls style="width: 250px; height: 50px">
|
114 |
+
<source src="audio_samples/sample_3/TFGAN_enhanced.wav" type="audio/wav">
|
115 |
+
</audio>
|
116 |
+
</td>
|
117 |
+
<td>
|
118 |
+
<audio controls style="width: 250px; height: 50px">
|
119 |
+
<source src="audio_samples/sample_3/tPLC_enhanced.wav" type="audio/wav">
|
120 |
+
</audio>
|
121 |
+
</td>
|
122 |
+
<td>
|
123 |
+
<audio controls style="width: 250px; height: 50px">
|
124 |
+
<source src="audio_samples/sample_3/FRN_enhanced.wav" type="audio/wav">
|
125 |
+
</audio>
|
126 |
+
</td>
|
127 |
+
</tr>
|
128 |
+
|
129 |
+
|
130 |
+
</tbody>
|
131 |
+
</table>
|
132 |
+
<!-- <footer>
|
133 |
+
<ul>
|
134 |
+
<li><a href=”mailto:YOUREMAIL”>YOUREMAIL</a></li>
|
135 |
+
</ul>
|
136 |
+
</footer> -->
|
137 |
+
|
138 |
+
</body>
|
139 |
+
</html>
|
inference_onnx.py
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import argparse
|
2 |
+
import glob
|
3 |
+
import os
|
4 |
+
|
5 |
+
import librosa
|
6 |
+
import numpy as np
|
7 |
+
import onnx
|
8 |
+
import onnxruntime
|
9 |
+
import soundfile as sf
|
10 |
+
import torch
|
11 |
+
import tqdm
|
12 |
+
|
13 |
+
from config import CONFIG
|
14 |
+
|
15 |
+
parser = argparse.ArgumentParser()
|
16 |
+
|
17 |
+
parser.add_argument('--onnx_path', default=None,
|
18 |
+
help='path to onnx')
|
19 |
+
args = parser.parse_args()
|
20 |
+
|
21 |
+
if __name__ == '__main__':
|
22 |
+
path = args.onnx_path
|
23 |
+
window = CONFIG.DATA.window_size
|
24 |
+
stride = CONFIG.DATA.stride
|
25 |
+
onnx_model = onnx.load(path)
|
26 |
+
options = onnxruntime.SessionOptions()
|
27 |
+
options.intra_op_num_threads = 8
|
28 |
+
options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_ENABLE_ALL
|
29 |
+
session = onnxruntime.InferenceSession(path, options)
|
30 |
+
input_names = [x.name for x in session.get_inputs()]
|
31 |
+
output_names = [x.name for x in session.get_outputs()]
|
32 |
+
print(input_names)
|
33 |
+
print(output_names)
|
34 |
+
|
35 |
+
audio_files = glob.glob(os.path.join(CONFIG.TEST.in_dir, '*.wav'))
|
36 |
+
hann = torch.sqrt(torch.hann_window(window))
|
37 |
+
os.makedirs(CONFIG.TEST.out_dir, exist_ok=True)
|
38 |
+
for file in tqdm.tqdm(audio_files, total=len(audio_files)):
|
39 |
+
sig, _ = librosa.load(file, sr=48000)
|
40 |
+
sig = torch.tensor(sig)
|
41 |
+
re_im = torch.stft(sig, window, stride, window=hann, return_complex=False).permute(2, 0, 1).unsqueeze(
|
42 |
+
0).numpy().astype(np.float32)
|
43 |
+
|
44 |
+
inputs = {input_names[i]: np.zeros([d.dim_value for d in _input.type.tensor_type.shape.dim],
|
45 |
+
dtype=np.float32)
|
46 |
+
for i, _input in enumerate(onnx_model.graph.input)
|
47 |
+
}
|
48 |
+
|
49 |
+
output_audio = []
|
50 |
+
for t in range(re_im.shape[-1]):
|
51 |
+
ri_t = re_im[:, :, :, t:t + 1]
|
52 |
+
out, prev_mag, predictor_state, mlp_state = session.run(output_names, inputs)
|
53 |
+
inputs[input_names[1]] = prev_mag
|
54 |
+
inputs[input_names[2]] = predictor_state
|
55 |
+
inputs[input_names[3]] = mlp_state
|
56 |
+
output_audio.append(out)
|
57 |
+
|
58 |
+
output_audio = torch.tensor(np.concatenate(output_audio, 0))
|
59 |
+
output_audio = output_audio.permute(1, 0, 2).contiguous()
|
60 |
+
output_audio = torch.view_as_complex(output_audio)
|
61 |
+
output_audio = torch.istft(output_audio, window, stride, window=hann)
|
62 |
+
sf.write(os.path.join(CONFIG.TEST.out_dir, os.path.basename(file)), output_audio, samplerate=48000,
|
63 |
+
subtype='PCM_16')
|
lightning_logs/predictor/checkpoints/predictor.ckpt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:1f3679c9431666575eb7899e556d040073aa74956c48f122b16b30b9efa2e93b
|
3 |
+
size 14985163
|
lightning_logs/predictor/hparams.yaml
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
batch_size: 90
|
2 |
+
input: mag
|
3 |
+
lstm_dim: 512
|
4 |
+
lstm_layers: 1
|
5 |
+
output: mag
|
6 |
+
window_size: 960
|
lightning_logs/version_0/checkpoints/frn-epoch=65-val_loss=0.2290.ckpt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:4061bb0f6e669315e00878009440dab749f60f823d5bf863bfa4b8172d96d073
|
3 |
+
size 109184745
|
lightning_logs/version_0/checkpoints/frn.onnx
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:e373d149496278e2368fb371802878f22ed650ce65f4bf13f73446c9df6ac56e
|
3 |
+
size 36527867
|
lightning_logs/version_0/hparams.yaml
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
batch_size: 90
|
2 |
+
cnn_dim: 64
|
3 |
+
cnn_layers: 5
|
4 |
+
lstm_dim: 512
|
5 |
+
lstm_layers: 1
|
6 |
+
window_size: 960
|
loss.py
ADDED
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import librosa
|
2 |
+
import pytorch_lightning as pl
|
3 |
+
import torch
|
4 |
+
from auraloss.freq import STFTLoss, MultiResolutionSTFTLoss, apply_reduction, SpectralConvergenceLoss, STFTMagnitudeLoss
|
5 |
+
|
6 |
+
from config import CONFIG
|
7 |
+
|
8 |
+
|
9 |
+
class STFTLossDDP(STFTLoss):
|
10 |
+
def __init__(self,
|
11 |
+
fft_size=1024,
|
12 |
+
hop_size=256,
|
13 |
+
win_length=1024,
|
14 |
+
window="hann_window",
|
15 |
+
w_sc=1.0,
|
16 |
+
w_log_mag=1.0,
|
17 |
+
w_lin_mag=0.0,
|
18 |
+
w_phs=0.0,
|
19 |
+
sample_rate=None,
|
20 |
+
scale=None,
|
21 |
+
n_bins=None,
|
22 |
+
scale_invariance=False,
|
23 |
+
eps=1e-8,
|
24 |
+
output="loss",
|
25 |
+
reduction="mean",
|
26 |
+
device=None):
|
27 |
+
super(STFTLoss, self).__init__()
|
28 |
+
self.fft_size = fft_size
|
29 |
+
self.hop_size = hop_size
|
30 |
+
self.win_length = win_length
|
31 |
+
self.window = getattr(torch, window)(win_length)
|
32 |
+
self.w_sc = w_sc
|
33 |
+
self.w_log_mag = w_log_mag
|
34 |
+
self.w_lin_mag = w_lin_mag
|
35 |
+
self.w_phs = w_phs
|
36 |
+
self.sample_rate = sample_rate
|
37 |
+
self.scale = scale
|
38 |
+
self.n_bins = n_bins
|
39 |
+
self.scale_invariance = scale_invariance
|
40 |
+
self.eps = eps
|
41 |
+
self.output = output
|
42 |
+
self.reduction = reduction
|
43 |
+
self.device = device
|
44 |
+
|
45 |
+
self.spectralconv = SpectralConvergenceLoss()
|
46 |
+
self.logstft = STFTMagnitudeLoss(log=True, reduction=reduction)
|
47 |
+
self.linstft = STFTMagnitudeLoss(log=False, reduction=reduction)
|
48 |
+
|
49 |
+
# setup mel filterbank
|
50 |
+
if self.scale == "mel":
|
51 |
+
assert (sample_rate is not None) # Must set sample rate to use mel scale
|
52 |
+
assert (n_bins <= fft_size) # Must be more FFT bins than Mel bins
|
53 |
+
fb = librosa.filters.mel(sample_rate, fft_size, n_mels=n_bins)
|
54 |
+
self.fb = torch.tensor(fb).unsqueeze(0)
|
55 |
+
elif self.scale == "chroma":
|
56 |
+
assert (sample_rate is not None) # Must set sample rate to use chroma scale
|
57 |
+
assert (n_bins <= fft_size) # Must be more FFT bins than chroma bins
|
58 |
+
fb = librosa.filters.chroma(sample_rate, fft_size, n_chroma=n_bins)
|
59 |
+
self.fb = torch.tensor(fb).unsqueeze(0)
|
60 |
+
|
61 |
+
if scale is not None and device is not None:
|
62 |
+
self.fb = self.fb.to(self.device) # move filterbank to device
|
63 |
+
|
64 |
+
def compressed_loss(self, x, y, alpha=None):
|
65 |
+
self.window = self.window.to(x.device)
|
66 |
+
x_mag, x_phs = self.stft(x.view(-1, x.size(-1)))
|
67 |
+
y_mag, y_phs = self.stft(y.view(-1, y.size(-1)))
|
68 |
+
|
69 |
+
if alpha is not None:
|
70 |
+
x_mag = x_mag ** alpha
|
71 |
+
y_mag = y_mag ** alpha
|
72 |
+
|
73 |
+
# apply relevant transforms
|
74 |
+
if self.scale is not None:
|
75 |
+
x_mag = torch.matmul(self.fb.to(x_mag.device), x_mag)
|
76 |
+
y_mag = torch.matmul(self.fb.to(y_mag.device), y_mag)
|
77 |
+
|
78 |
+
# normalize scales
|
79 |
+
if self.scale_invariance:
|
80 |
+
alpha = (x_mag * y_mag).sum([-2, -1]) / ((y_mag ** 2).sum([-2, -1]))
|
81 |
+
y_mag = y_mag * alpha.unsqueeze(-1)
|
82 |
+
|
83 |
+
# compute loss terms
|
84 |
+
sc_loss = self.spectralconv(x_mag, y_mag) if self.w_sc else 0.0
|
85 |
+
mag_loss = self.logstft(x_mag, y_mag) if self.w_log_mag else 0.0
|
86 |
+
lin_loss = self.linstft(x_mag, y_mag) if self.w_lin_mag else 0.0
|
87 |
+
|
88 |
+
# combine loss terms
|
89 |
+
loss = (self.w_sc * sc_loss) + (self.w_log_mag * mag_loss) + (self.w_lin_mag * lin_loss)
|
90 |
+
loss = apply_reduction(loss, reduction=self.reduction)
|
91 |
+
return loss
|
92 |
+
|
93 |
+
def forward(self, x, y):
|
94 |
+
return self.compressed_loss(x, y, 0.3)
|
95 |
+
|
96 |
+
|
97 |
+
class MRSTFTLossDDP(MultiResolutionSTFTLoss):
|
98 |
+
def __init__(self,
|
99 |
+
fft_sizes=(1024, 2048, 512),
|
100 |
+
hop_sizes=(120, 240, 50),
|
101 |
+
win_lengths=(600, 1200, 240),
|
102 |
+
window="hann_window",
|
103 |
+
w_sc=1.0,
|
104 |
+
w_log_mag=1.0,
|
105 |
+
w_lin_mag=0.0,
|
106 |
+
w_phs=0.0,
|
107 |
+
sample_rate=None,
|
108 |
+
scale=None,
|
109 |
+
n_bins=None,
|
110 |
+
scale_invariance=False,
|
111 |
+
**kwargs):
|
112 |
+
super(MultiResolutionSTFTLoss, self).__init__()
|
113 |
+
assert len(fft_sizes) == len(hop_sizes) == len(win_lengths) # must define all
|
114 |
+
self.stft_losses = torch.nn.ModuleList()
|
115 |
+
for fs, ss, wl in zip(fft_sizes, hop_sizes, win_lengths):
|
116 |
+
self.stft_losses += [STFTLossDDP(fs,
|
117 |
+
ss,
|
118 |
+
wl,
|
119 |
+
window,
|
120 |
+
w_sc,
|
121 |
+
w_log_mag,
|
122 |
+
w_lin_mag,
|
123 |
+
w_phs,
|
124 |
+
sample_rate,
|
125 |
+
scale,
|
126 |
+
n_bins,
|
127 |
+
scale_invariance,
|
128 |
+
**kwargs)]
|
129 |
+
|
130 |
+
|
131 |
+
class Loss(pl.LightningModule):
|
132 |
+
def __init__(self):
|
133 |
+
super(Loss, self).__init__()
|
134 |
+
self.stft_loss = MRSTFTLossDDP(sample_rate=CONFIG.DATA.sr, device="cpu", w_log_mag=0.0, w_lin_mag=1.0)
|
135 |
+
self.window = torch.sqrt(torch.hann_window(CONFIG.DATA.window_size))
|
136 |
+
|
137 |
+
def forward(self, x, y):
|
138 |
+
x = x.permute(0, 2, 3, 1)
|
139 |
+
y = y.permute(0, 2, 3, 1)
|
140 |
+
wave_x = torch.istft(torch.view_as_complex(x.contiguous()), CONFIG.DATA.window_size, CONFIG.DATA.stride,
|
141 |
+
window=self.window.to(x.device))
|
142 |
+
wave_y = torch.istft(torch.view_as_complex(y.contiguous()), CONFIG.DATA.window_size, CONFIG.DATA.stride,
|
143 |
+
window=self.window.to(y.device))
|
144 |
+
loss = self.stft_loss(wave_x, wave_y)
|
145 |
+
return loss
|
main.py
ADDED
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import argparse
|
2 |
+
import os
|
3 |
+
|
4 |
+
import pytorch_lightning as pl
|
5 |
+
import soundfile as sf
|
6 |
+
import torch
|
7 |
+
from pytorch_lightning.callbacks import ModelCheckpoint
|
8 |
+
from pytorch_lightning.utilities.model_summary import summarize
|
9 |
+
from torch.utils.data import DataLoader
|
10 |
+
|
11 |
+
from config import CONFIG
|
12 |
+
from dataset import TrainDataset, TestLoader, BlindTestLoader
|
13 |
+
from models.frn import PLCModel, OnnxWrapper
|
14 |
+
from utils.tblogger import TensorBoardLoggerExpanded
|
15 |
+
from utils.utils import mkdir_p
|
16 |
+
|
17 |
+
parser = argparse.ArgumentParser()
|
18 |
+
|
19 |
+
parser.add_argument('--version', default=None,
|
20 |
+
help='version to resume')
|
21 |
+
parser.add_argument('--mode', default='train',
|
22 |
+
help='training or testing mode')
|
23 |
+
|
24 |
+
args = parser.parse_args()
|
25 |
+
os.environ["CUDA_VISIBLE_DEVICES"] = str(CONFIG.gpus)
|
26 |
+
assert args.mode in ['train', 'eval', 'test', 'onnx'], "--mode should be 'train', 'eval', 'test' or 'onnx'"
|
27 |
+
|
28 |
+
|
29 |
+
def resume(train_dataset, val_dataset, version):
|
30 |
+
print("Version", version)
|
31 |
+
model_path = os.path.join(CONFIG.LOG.log_dir, 'version_{}/checkpoints/'.format(str(version)))
|
32 |
+
config_path = os.path.join(CONFIG.LOG.log_dir, 'version_{}/'.format(str(version)) + 'hparams.yaml')
|
33 |
+
model_name = [x for x in os.listdir(model_path) if x.endswith(".ckpt")][0]
|
34 |
+
ckpt_path = model_path + model_name
|
35 |
+
checkpoint = PLCModel.load_from_checkpoint(ckpt_path,
|
36 |
+
strict=True,
|
37 |
+
hparams_file=config_path,
|
38 |
+
train_dataset=train_dataset,
|
39 |
+
val_dataset=val_dataset,
|
40 |
+
window_size=CONFIG.DATA.window_size)
|
41 |
+
|
42 |
+
return checkpoint
|
43 |
+
|
44 |
+
|
45 |
+
def train():
|
46 |
+
train_dataset = TrainDataset('train')
|
47 |
+
val_dataset = TrainDataset('val')
|
48 |
+
checkpoint_callback = ModelCheckpoint(monitor='val_loss', mode='min', verbose=True,
|
49 |
+
filename='frn-{epoch:02d}-{val_loss:.4f}', save_weights_only=False)
|
50 |
+
gpus = CONFIG.gpus.split(',')
|
51 |
+
logger = TensorBoardLoggerExpanded(CONFIG.DATA.sr)
|
52 |
+
if args.version is not None:
|
53 |
+
model = resume(train_dataset, val_dataset, args.version)
|
54 |
+
else:
|
55 |
+
model = PLCModel(train_dataset,
|
56 |
+
val_dataset,
|
57 |
+
window_size=CONFIG.DATA.window_size,
|
58 |
+
enc_layers=CONFIG.MODEL.enc_layers,
|
59 |
+
enc_in_dim=CONFIG.MODEL.enc_in_dim,
|
60 |
+
enc_dim=CONFIG.MODEL.enc_dim,
|
61 |
+
pred_dim=CONFIG.MODEL.pred_dim,
|
62 |
+
pred_layers=CONFIG.MODEL.pred_layers)
|
63 |
+
|
64 |
+
trainer = pl.Trainer(logger=logger,
|
65 |
+
gradient_clip_val=CONFIG.TRAIN.clipping_val,
|
66 |
+
gpus=len(gpus),
|
67 |
+
max_epochs=CONFIG.TRAIN.epochs,
|
68 |
+
accelerator="ddp" if len(gpus) > 1 else None,
|
69 |
+
stochastic_weight_avg=True,
|
70 |
+
callbacks=[checkpoint_callback]
|
71 |
+
)
|
72 |
+
|
73 |
+
print(model.hparams)
|
74 |
+
print(
|
75 |
+
'Dataset: {}, Train files: {}, Val files {}'.format(CONFIG.DATA.dataset, len(train_dataset), len(val_dataset)))
|
76 |
+
trainer.fit(model)
|
77 |
+
|
78 |
+
|
79 |
+
def to_onnx(model, onnx_path):
|
80 |
+
model.eval()
|
81 |
+
|
82 |
+
model = OnnxWrapper(model)
|
83 |
+
|
84 |
+
torch.onnx.export(model,
|
85 |
+
model.sample,
|
86 |
+
onnx_path,
|
87 |
+
export_params=True,
|
88 |
+
opset_version=12,
|
89 |
+
input_names=model.input_names,
|
90 |
+
output_names=model.output_names,
|
91 |
+
do_constant_folding=True,
|
92 |
+
verbose=False)
|
93 |
+
|
94 |
+
|
95 |
+
if __name__ == '__main__':
|
96 |
+
|
97 |
+
if args.mode == 'train':
|
98 |
+
train()
|
99 |
+
else:
|
100 |
+
model = resume(None, None, args.version)
|
101 |
+
print(model.hparams)
|
102 |
+
print(summarize(model))
|
103 |
+
|
104 |
+
model.eval()
|
105 |
+
model.freeze()
|
106 |
+
if args.mode == 'eval':
|
107 |
+
model.cuda(device=0)
|
108 |
+
trainer = pl.Trainer(gpus=1)
|
109 |
+
testset = TestLoader()
|
110 |
+
test_loader = DataLoader(testset, batch_size=1, num_workers=4)
|
111 |
+
trainer.test(model, test_loader)
|
112 |
+
print('Version', args.version)
|
113 |
+
masking = CONFIG.DATA.EVAL.masking
|
114 |
+
prob = CONFIG.DATA.EVAL.transition_probs[0]
|
115 |
+
loss_percent = (1 - prob[0]) / (2 - prob[0][prob[1]]) * 100
|
116 |
+
print('Evaluate with real trace' if masking == 'real' else
|
117 |
+
'Evaluate with generated trace {}% packet loss'.format(str(prob)))
|
118 |
+
elif args.mode == 'test':
|
119 |
+
model.cuda(device=0)
|
120 |
+
testset = BlindTestLoader(test_dir=CONFIG.TEST.in_dir)
|
121 |
+
test_loader = DataLoader(testset, batch_size=1, num_workers=4)
|
122 |
+
trainer = pl.Trainer(gpus=1)
|
123 |
+
preds = trainer.predict(model, test_loader, return_predictions=True)
|
124 |
+
mkdir_p(CONFIG.TEST.out_dir)
|
125 |
+
for idx, path in enumerate(test_loader.dataset.data_list):
|
126 |
+
out_path = os.path.join(CONFIG.TEST.out_dir, os.path.basename(path))
|
127 |
+
sf.write(out_path, preds[idx], samplerate=CONFIG.DATA.sr, subtype='PCM_16')
|
128 |
+
|
129 |
+
else:
|
130 |
+
onnx_path = 'lightning_logs/version_{}/checkpoints/frn.onnx'.format(str(args.version))
|
131 |
+
to_onnx(model, onnx_path)
|
132 |
+
print('ONNX model saved to', onnx_path)
|
models/__init__.py
ADDED
File without changes
|
models/blocks.py
ADDED
@@ -0,0 +1,142 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import librosa
|
2 |
+
import pytorch_lightning as pl
|
3 |
+
import torch
|
4 |
+
from einops.layers.torch import Rearrange
|
5 |
+
from torch import nn
|
6 |
+
|
7 |
+
|
8 |
+
class Aff(nn.Module):
|
9 |
+
def __init__(self, dim):
|
10 |
+
super().__init__()
|
11 |
+
|
12 |
+
self.alpha = nn.Parameter(torch.ones([1, 1, dim]))
|
13 |
+
self.beta = nn.Parameter(torch.zeros([1, 1, dim]))
|
14 |
+
|
15 |
+
def forward(self, x):
|
16 |
+
x = x * self.alpha + self.beta
|
17 |
+
return x
|
18 |
+
|
19 |
+
|
20 |
+
class FeedForward(nn.Module):
|
21 |
+
def __init__(self, dim, hidden_dim, dropout=0.):
|
22 |
+
super().__init__()
|
23 |
+
self.net = nn.Sequential(
|
24 |
+
nn.Linear(dim, hidden_dim),
|
25 |
+
nn.GELU(),
|
26 |
+
nn.Dropout(dropout),
|
27 |
+
nn.Linear(hidden_dim, dim),
|
28 |
+
nn.Dropout(dropout)
|
29 |
+
)
|
30 |
+
|
31 |
+
def forward(self, x):
|
32 |
+
return self.net(x)
|
33 |
+
|
34 |
+
|
35 |
+
class MLPBlock(nn.Module):
|
36 |
+
|
37 |
+
def __init__(self, dim, mlp_dim, dropout=0., init_values=1e-4):
|
38 |
+
super().__init__()
|
39 |
+
|
40 |
+
self.pre_affine = Aff(dim)
|
41 |
+
self.inter = nn.LSTM(input_size=dim, hidden_size=dim, num_layers=1,
|
42 |
+
bidirectional=False, batch_first=True)
|
43 |
+
self.ff = nn.Sequential(
|
44 |
+
FeedForward(dim, mlp_dim, dropout),
|
45 |
+
)
|
46 |
+
self.post_affine = Aff(dim)
|
47 |
+
self.gamma_1 = nn.Parameter(init_values * torch.ones(dim), requires_grad=True)
|
48 |
+
self.gamma_2 = nn.Parameter(init_values * torch.ones(dim), requires_grad=True)
|
49 |
+
|
50 |
+
def forward(self, x, state=None):
|
51 |
+
x = self.pre_affine(x)
|
52 |
+
if state is None:
|
53 |
+
inter, _ = self.inter(x)
|
54 |
+
else:
|
55 |
+
inter, state = self.inter(x, (state[0], state[1]))
|
56 |
+
x = x + self.gamma_1 * inter
|
57 |
+
x = self.post_affine(x)
|
58 |
+
x = x + self.gamma_2 * self.ff(x)
|
59 |
+
if state is None:
|
60 |
+
return x
|
61 |
+
state = torch.stack(state, 0)
|
62 |
+
return x, state
|
63 |
+
|
64 |
+
|
65 |
+
class Encoder(nn.Module):
|
66 |
+
|
67 |
+
def __init__(self, in_dim, dim, depth, mlp_dim):
|
68 |
+
super().__init__()
|
69 |
+
self.in_dim = in_dim
|
70 |
+
self.dim = dim
|
71 |
+
self.depth = depth
|
72 |
+
self.mlp_dim = mlp_dim
|
73 |
+
self.to_patch_embedding = nn.Sequential(
|
74 |
+
Rearrange('b c f t -> b t (c f)'),
|
75 |
+
nn.Linear(in_dim, dim),
|
76 |
+
nn.GELU()
|
77 |
+
)
|
78 |
+
|
79 |
+
self.mlp_blocks = nn.ModuleList([])
|
80 |
+
|
81 |
+
for _ in range(depth):
|
82 |
+
self.mlp_blocks.append(MLPBlock(self.dim, mlp_dim, dropout=0.15))
|
83 |
+
|
84 |
+
self.affine = nn.Sequential(
|
85 |
+
Aff(self.dim),
|
86 |
+
nn.Linear(dim, in_dim),
|
87 |
+
Rearrange('b t (c f) -> b c f t', c=2),
|
88 |
+
)
|
89 |
+
|
90 |
+
def forward(self, x_in, states=None):
|
91 |
+
x = self.to_patch_embedding(x_in)
|
92 |
+
if states is not None:
|
93 |
+
out_states = []
|
94 |
+
for i, mlp_block in enumerate(self.mlp_blocks):
|
95 |
+
if states is None:
|
96 |
+
x = mlp_block(x)
|
97 |
+
else:
|
98 |
+
x, state = mlp_block(x, states[i])
|
99 |
+
out_states.append(state)
|
100 |
+
x = self.affine(x)
|
101 |
+
x = x + x_in
|
102 |
+
if states is None:
|
103 |
+
return x
|
104 |
+
else:
|
105 |
+
return x, torch.stack(out_states, 0)
|
106 |
+
|
107 |
+
|
108 |
+
class Predictor(pl.LightningModule): # mel
|
109 |
+
def __init__(self, window_size=1536, sr=48000, lstm_dim=256, lstm_layers=3, n_mels=64):
|
110 |
+
super(Predictor, self).__init__()
|
111 |
+
self.window_size = window_size
|
112 |
+
self.hop_size = window_size // 2
|
113 |
+
self.lstm_dim = lstm_dim
|
114 |
+
self.n_mels = n_mels
|
115 |
+
self.lstm_layers = lstm_layers
|
116 |
+
|
117 |
+
fb = librosa.filters.mel(sr=sr, n_fft=self.window_size, n_mels=self.n_mels)[:, 1:]
|
118 |
+
self.fb = torch.from_numpy(fb).unsqueeze(0).unsqueeze(0)
|
119 |
+
self.lstm = nn.LSTM(input_size=self.n_mels, hidden_size=self.lstm_dim, bidirectional=False,
|
120 |
+
num_layers=self.lstm_layers)
|
121 |
+
self.expand_dim = nn.Linear(self.lstm_dim, self.n_mels)
|
122 |
+
self.inv_mel = nn.Linear(self.n_mels, self.hop_size)
|
123 |
+
|
124 |
+
def forward(self, x, state=None): # B, 2, F, T
|
125 |
+
|
126 |
+
self.fb = self.fb.to(x.device)
|
127 |
+
x = torch.log(torch.matmul(self.fb, x) + 1e-8)
|
128 |
+
B, C, F, T = x.shape
|
129 |
+
x = x.reshape(B, F * C, T)
|
130 |
+
x = x.permute(0, 2, 1)
|
131 |
+
if state is None:
|
132 |
+
x, _ = self.lstm(x)
|
133 |
+
else:
|
134 |
+
x, state = self.lstm(x, (state[0], state[1]))
|
135 |
+
x = self.expand_dim(x)
|
136 |
+
x = torch.abs(self.inv_mel(torch.exp(x)))
|
137 |
+
x = x.permute(0, 2, 1)
|
138 |
+
x = x.reshape(B, C, -1, T)
|
139 |
+
if state is None:
|
140 |
+
return x
|
141 |
+
else:
|
142 |
+
return x, torch.stack(state, 0)
|
models/frn.py
ADDED
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
|
3 |
+
import librosa
|
4 |
+
import pytorch_lightning as pl
|
5 |
+
import soundfile as sf
|
6 |
+
import torch
|
7 |
+
from torch import nn
|
8 |
+
from torch.utils.data import DataLoader
|
9 |
+
from torchmetrics.audio.pesq import PerceptualEvaluationSpeechQuality as PESQ
|
10 |
+
from torchmetrics.audio.stoi import ShortTimeObjectiveIntelligibility as STOI
|
11 |
+
|
12 |
+
from PLCMOS.plc_mos import PLCMOSEstimator
|
13 |
+
from config import CONFIG
|
14 |
+
from loss import Loss
|
15 |
+
from models.blocks import Encoder, Predictor
|
16 |
+
from utils.utils import visualize, LSD
|
17 |
+
|
18 |
+
plcmos = PLCMOSEstimator()
|
19 |
+
|
20 |
+
|
21 |
+
class PLCModel(pl.LightningModule):
|
22 |
+
def __init__(self, train_dataset=None, val_dataset=None, window_size=960, enc_layers=4, enc_in_dim=384, enc_dim=768,
|
23 |
+
pred_dim=512, pred_layers=1, pred_ckpt_path='lightning_logs/predictor/checkpoints/predictor.ckpt'):
|
24 |
+
super(PLCModel, self).__init__()
|
25 |
+
self.window_size = window_size
|
26 |
+
self.hop_size = window_size // 2
|
27 |
+
self.learning_rate = CONFIG.TRAIN.lr
|
28 |
+
self.hparams.batch_size = CONFIG.TRAIN.batch_size
|
29 |
+
|
30 |
+
self.enc_layers = enc_layers
|
31 |
+
self.enc_in_dim = enc_in_dim
|
32 |
+
self.enc_dim = enc_dim
|
33 |
+
self.pred_dim = pred_dim
|
34 |
+
self.pred_layers = pred_layers
|
35 |
+
self.train_dataset = train_dataset
|
36 |
+
self.val_dataset = val_dataset
|
37 |
+
self.stoi = STOI(48000)
|
38 |
+
self.pesq = PESQ(16000, 'wb')
|
39 |
+
|
40 |
+
if pred_ckpt_path is not None:
|
41 |
+
self.predictor = Predictor.load_from_checkpoint(pred_ckpt_path)
|
42 |
+
else:
|
43 |
+
self.predictor = Predictor(window_size=self.window_size, lstm_dim=self.pred_dim,
|
44 |
+
lstm_layers=self.pred_layers)
|
45 |
+
self.joiner = nn.Sequential(
|
46 |
+
nn.Conv2d(3, 48, kernel_size=(9, 1), stride=1, padding=(4, 0), padding_mode='reflect',
|
47 |
+
groups=3),
|
48 |
+
nn.LeakyReLU(0.2),
|
49 |
+
nn.Conv2d(48, 2, kernel_size=1, stride=1, padding=0, groups=2),
|
50 |
+
)
|
51 |
+
|
52 |
+
self.encoder = Encoder(in_dim=self.window_size, dim=self.enc_in_dim, depth=self.enc_layers,
|
53 |
+
mlp_dim=self.enc_dim)
|
54 |
+
|
55 |
+
self.loss = Loss()
|
56 |
+
self.window = torch.sqrt(torch.hann_window(self.window_size))
|
57 |
+
self.save_hyperparameters('window_size', 'enc_layers', 'enc_in_dim', 'enc_dim', 'pred_dim', 'pred_layers')
|
58 |
+
|
59 |
+
def forward(self, x):
|
60 |
+
"""
|
61 |
+
Input: real-imaginary; shape (B, F, T, 2); F = hop_size + 1
|
62 |
+
Output: real-imaginary
|
63 |
+
"""
|
64 |
+
|
65 |
+
B, C, F, T = x.shape
|
66 |
+
|
67 |
+
x = x.permute(3, 0, 1, 2).unsqueeze(-1)
|
68 |
+
prev_mag = torch.zeros((B, 1, F, 1), device=x.device)
|
69 |
+
predictor_state = torch.zeros((2, self.predictor.lstm_layers, 1, self.predictor.lstm_dim), device=x.device)
|
70 |
+
mlp_state = torch.zeros((self.encoder.depth, 2, 1, B, self.encoder.dim), device=x.device)
|
71 |
+
result = []
|
72 |
+
for step in x:
|
73 |
+
feat, mlp_state = self.encoder(step, mlp_state)
|
74 |
+
prev_mag, predictor_state = self.predictor(prev_mag, predictor_state)
|
75 |
+
feat = torch.cat((feat, prev_mag), 1)
|
76 |
+
feat = self.joiner(feat)
|
77 |
+
feat = feat + step
|
78 |
+
result.append(feat)
|
79 |
+
prev_mag = torch.linalg.norm(feat, dim=1, ord=1, keepdims=True) # compute magnitude
|
80 |
+
output = torch.cat(result, -1)
|
81 |
+
return output
|
82 |
+
|
83 |
+
def forward_onnx(self, x, prev_mag, predictor_state=None, mlp_state=None):
|
84 |
+
prev_mag, predictor_state = self.predictor(prev_mag, predictor_state)
|
85 |
+
feat, mlp_state = self.encoder(x, mlp_state)
|
86 |
+
|
87 |
+
feat = torch.cat((feat, prev_mag), 1)
|
88 |
+
feat = self.joiner(feat)
|
89 |
+
prev_mag = torch.linalg.norm(feat, dim=1, ord=1, keepdims=True)
|
90 |
+
feat = feat + x
|
91 |
+
return feat, prev_mag, predictor_state, mlp_state
|
92 |
+
|
93 |
+
def train_dataloader(self):
|
94 |
+
return DataLoader(self.train_dataset, shuffle=False, batch_size=self.hparams.batch_size,
|
95 |
+
num_workers=CONFIG.TRAIN.workers)
|
96 |
+
|
97 |
+
def val_dataloader(self):
|
98 |
+
return DataLoader(self.val_dataset, shuffle=False, batch_size=self.hparams.batch_size,
|
99 |
+
num_workers=CONFIG.TRAIN.workers)
|
100 |
+
|
101 |
+
def training_step(self, batch, batch_idx):
|
102 |
+
x_in, y = batch
|
103 |
+
f_0 = x_in[:, :, 0:1, :]
|
104 |
+
x = x_in[:, :, 1:, :]
|
105 |
+
|
106 |
+
x = self(x)
|
107 |
+
x = torch.cat([f_0, x], dim=2)
|
108 |
+
|
109 |
+
loss = self.loss(x, y)
|
110 |
+
self.log('train_loss', loss, logger=True)
|
111 |
+
return loss
|
112 |
+
|
113 |
+
def validation_step(self, val_batch, batch_idx):
|
114 |
+
x, y = val_batch
|
115 |
+
f_0 = x[:, :, 0:1, :]
|
116 |
+
x_in = x[:, :, 1:, :]
|
117 |
+
|
118 |
+
pred = self(x_in)
|
119 |
+
pred = torch.cat([f_0, pred], dim=2)
|
120 |
+
|
121 |
+
loss = self.loss(pred, y)
|
122 |
+
self.window = self.window.to(pred.device)
|
123 |
+
pred = torch.view_as_complex(pred.permute(0, 2, 3, 1).contiguous())
|
124 |
+
pred = torch.istft(pred, self.window_size, self.hop_size, window=self.window)
|
125 |
+
y = torch.view_as_complex(y.permute(0, 2, 3, 1).contiguous())
|
126 |
+
y = torch.istft(y, self.window_size, self.hop_size, window=self.window)
|
127 |
+
|
128 |
+
self.log('val_loss', loss, on_step=False, on_epoch=True, logger=True, prog_bar=True, sync_dist=True)
|
129 |
+
|
130 |
+
if batch_idx == 0:
|
131 |
+
i = torch.randint(0, x.shape[0], (1,)).item()
|
132 |
+
x = torch.view_as_complex(x.permute(0, 2, 3, 1).contiguous())
|
133 |
+
x = torch.istft(x[i], self.window_size, self.hop_size, window=self.window)
|
134 |
+
|
135 |
+
self.trainer.logger.log_spectrogram(y[i], x, pred[i], self.current_epoch)
|
136 |
+
self.trainer.logger.log_audio(y[i], x, pred[i], self.current_epoch)
|
137 |
+
|
138 |
+
def test_step(self, test_batch, batch_idx):
|
139 |
+
inp, tar, inp_wav, tar_wav = test_batch
|
140 |
+
inp_wav = inp_wav.squeeze()
|
141 |
+
tar_wav = tar_wav.squeeze()
|
142 |
+
f_0 = inp[:, :, 0:1, :]
|
143 |
+
x = inp[:, :, 1:, :]
|
144 |
+
pred = self(x)
|
145 |
+
pred = torch.cat([f_0, pred], dim=2)
|
146 |
+
pred = torch.istft(pred.squeeze(0).permute(1, 2, 0), self.window_size, self.hop_size,
|
147 |
+
window=self.window.to(pred.device))
|
148 |
+
stoi = self.stoi(pred, tar_wav)
|
149 |
+
|
150 |
+
tar_wav = tar_wav.cpu().numpy()
|
151 |
+
inp_wav = inp_wav.cpu().numpy()
|
152 |
+
pred = pred.detach().cpu().numpy()
|
153 |
+
lsd, _ = LSD(tar_wav, pred)
|
154 |
+
|
155 |
+
if batch_idx in [3, 5, 7]:
|
156 |
+
sample_path = os.path.join(CONFIG.LOG.sample_path)
|
157 |
+
path = os.path.join(sample_path, 'sample_' + str(batch_idx))
|
158 |
+
visualize(tar_wav, inp_wav, pred, path)
|
159 |
+
sf.write(os.path.join(path, 'enhanced_output.wav'), pred, samplerate=CONFIG.DATA.sr, subtype='PCM_16')
|
160 |
+
sf.write(os.path.join(path, 'lossy_input.wav'), inp_wav, samplerate=CONFIG.DATA.sr, subtype='PCM_16')
|
161 |
+
sf.write(os.path.join(path, 'target.wav'), tar_wav, samplerate=CONFIG.DATA.sr, subtype='PCM_16')
|
162 |
+
if CONFIG.DATA.sr != 16000:
|
163 |
+
pred = librosa.resample(pred, 48000, 16000)
|
164 |
+
tar_wav = librosa.resample(tar_wav, 48000, 16000, res_type='kaiser_fast')
|
165 |
+
ret = plcmos.run(pred, tar_wav)
|
166 |
+
pesq = self.pesq(torch.tensor(pred), torch.tensor(tar_wav))
|
167 |
+
metrics = {
|
168 |
+
"Intrusive": ret[0],
|
169 |
+
"Non-intrusive": ret[1],
|
170 |
+
'LSD': lsd,
|
171 |
+
'STOI': stoi,
|
172 |
+
'PESQ': pesq,
|
173 |
+
}
|
174 |
+
self.log_dict(metrics)
|
175 |
+
return metrics
|
176 |
+
|
177 |
+
def predict_step(self, batch, batch_idx: int, dataloader_idx: int = 0):
|
178 |
+
f_0 = batch[:, :, 0:1, :]
|
179 |
+
x = batch[:, :, 1:, :]
|
180 |
+
pred = self(x)
|
181 |
+
pred = torch.cat([f_0, pred], dim=2)
|
182 |
+
pred = torch.istft(pred.squeeze(0).permute(1, 2, 0), self.window_size, self.hop_size,
|
183 |
+
window=self.window.to(pred.device))
|
184 |
+
return pred
|
185 |
+
|
186 |
+
def configure_optimizers(self):
|
187 |
+
optimizer = torch.optim.Adam(self.parameters(), lr=self.learning_rate)
|
188 |
+
lr_scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, patience=CONFIG.TRAIN.patience,
|
189 |
+
factor=CONFIG.TRAIN.factor, verbose=True)
|
190 |
+
|
191 |
+
scheduler = {
|
192 |
+
'scheduler': lr_scheduler,
|
193 |
+
'reduce_on_plateau': True,
|
194 |
+
'monitor': 'val_loss'
|
195 |
+
}
|
196 |
+
return [optimizer], [scheduler]
|
197 |
+
|
198 |
+
|
199 |
+
class OnnxWrapper(pl.LightningModule):
|
200 |
+
def __init__(self, model, *args, **kwargs):
|
201 |
+
super().__init__(*args, **kwargs)
|
202 |
+
self.model = model
|
203 |
+
batch_size = 1
|
204 |
+
pred_states = torch.zeros((2, 1, 1, model.predictor.lstm_dim))
|
205 |
+
mlp_states = torch.zeros((model.encoder.depth, 2, 1, batch_size, model.encoder.dim))
|
206 |
+
mag = torch.zeros((batch_size, 1, model.hop_size, 1))
|
207 |
+
x = torch.randn(batch_size, model.hop_size + 1, 2)
|
208 |
+
self.sample = (x, mag, pred_states, mlp_states)
|
209 |
+
self.input_names = ['input', 'mag_in_cached_', 'pred_state_in_cached_', 'mlp_state_in_cached_']
|
210 |
+
self.output_names = ['output', 'mag_out_cached_', 'pred_state_out_cached_', 'mlp_state_out_cached_']
|
211 |
+
|
212 |
+
def forward(self, x, prev_mag, predictor_state=None, mlp_state=None):
|
213 |
+
x = x.permute(0, 2, 1).unsqueeze(-1)
|
214 |
+
f_0 = x[:, :, 0:1, :]
|
215 |
+
x = x[:, :, 1:, :]
|
216 |
+
|
217 |
+
output, prev_mag, predictor_state, mlp_state = self.model.forward_onnx(x, prev_mag, predictor_state, mlp_state)
|
218 |
+
output = torch.cat([f_0, output], dim=2)
|
219 |
+
output = output.squeeze(-1).permute(0, 2, 1)
|
220 |
+
return output, prev_mag, predictor_state, mlp_state
|
requirements.txt
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
auraloss==0.3.0
|
2 |
+
einops==0.6.0
|
3 |
+
librosa==0.9.2
|
4 |
+
matplotlib==3.5.3
|
5 |
+
numpy==1.22.3
|
6 |
+
onnxruntime==1.13.1
|
7 |
+
pandas==1.5.3
|
8 |
+
pydtmc==7.0.0
|
9 |
+
pytorch_lightning==1.9.0
|
10 |
+
scikit_learn==1.2.1
|
11 |
+
soundfile==0.11.0
|
12 |
+
torch==1.13.1
|
13 |
+
torchmetrics==0.11.0
|
14 |
+
tqdm==4.64.0
|
15 |
+
stoi==0.3.3
|
16 |
+
pesq==0.0.4
|
17 |
+
onnx==1.13.0
|
utils/__init__.py
ADDED
File without changes
|
utils/stft.py
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import torch
|
2 |
+
import torch.nn as nn
|
3 |
+
|
4 |
+
|
5 |
+
class STFTMag(nn.Module):
|
6 |
+
def __init__(self,
|
7 |
+
nfft=1024,
|
8 |
+
hop=256):
|
9 |
+
super().__init__()
|
10 |
+
self.nfft = nfft
|
11 |
+
self.hop = hop
|
12 |
+
self.register_buffer('window', torch.hann_window(nfft), False)
|
13 |
+
|
14 |
+
# x: [B,T] or [T]
|
15 |
+
@torch.no_grad()
|
16 |
+
def forward(self, x):
|
17 |
+
stft = torch.stft(x.cpu(),
|
18 |
+
self.nfft,
|
19 |
+
self.hop,
|
20 |
+
window=self.window,
|
21 |
+
) # return_complex=False) #[B, F, TT,2]
|
22 |
+
mag = torch.norm(stft, p=2, dim=-1) # [B, F, TT]
|
23 |
+
return mag
|
utils/tblogger.py
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from os import path
|
2 |
+
|
3 |
+
import librosa as rosa
|
4 |
+
import matplotlib
|
5 |
+
import matplotlib.pyplot as plt
|
6 |
+
import numpy as np
|
7 |
+
from pytorch_lightning.loggers import TensorBoardLogger
|
8 |
+
from pytorch_lightning.utilities import rank_zero_only
|
9 |
+
|
10 |
+
from utils.stft import STFTMag
|
11 |
+
|
12 |
+
matplotlib.use('Agg')
|
13 |
+
|
14 |
+
|
15 |
+
class TensorBoardLoggerExpanded(TensorBoardLogger):
|
16 |
+
def __init__(self, sr=16000):
|
17 |
+
super().__init__(save_dir='lightning_logs', default_hp_metric=False, name='')
|
18 |
+
self.sr = sr
|
19 |
+
self.stftmag = STFTMag()
|
20 |
+
|
21 |
+
def fig2np(self, fig):
|
22 |
+
data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
|
23 |
+
data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))
|
24 |
+
return data
|
25 |
+
|
26 |
+
def plot_spectrogram_to_numpy(self, y, y_low, y_recon, step):
|
27 |
+
name_list = ['y', 'y_low', 'y_recon']
|
28 |
+
fig = plt.figure(figsize=(9, 15))
|
29 |
+
fig.suptitle(f'Epoch_{step}')
|
30 |
+
for i, yy in enumerate([y, y_low, y_recon]):
|
31 |
+
if yy.dim() == 1:
|
32 |
+
yy = self.stftmag(yy)
|
33 |
+
ax = plt.subplot(3, 1, i + 1)
|
34 |
+
ax.set_title(name_list[i])
|
35 |
+
plt.imshow(rosa.amplitude_to_db(yy.numpy(),
|
36 |
+
ref=np.max, top_db=80.),
|
37 |
+
# vmin = -20,
|
38 |
+
vmax=0.,
|
39 |
+
aspect='auto',
|
40 |
+
origin='lower',
|
41 |
+
interpolation='none')
|
42 |
+
plt.colorbar()
|
43 |
+
plt.xlabel('Frames')
|
44 |
+
plt.ylabel('Channels')
|
45 |
+
plt.tight_layout()
|
46 |
+
|
47 |
+
fig.canvas.draw()
|
48 |
+
data = self.fig2np(fig)
|
49 |
+
|
50 |
+
plt.close()
|
51 |
+
return data
|
52 |
+
|
53 |
+
@rank_zero_only
|
54 |
+
def log_spectrogram(self, y, y_low, y_recon, epoch):
|
55 |
+
y, y_low, y_recon = y.detach().cpu(), y_low.detach().cpu(), y_recon.detach().cpu()
|
56 |
+
spec_img = self.plot_spectrogram_to_numpy(y, y_low, y_recon, epoch)
|
57 |
+
self.experiment.add_image(path.join(self.save_dir, 'result'),
|
58 |
+
spec_img,
|
59 |
+
epoch,
|
60 |
+
dataformats='HWC')
|
61 |
+
self.experiment.flush()
|
62 |
+
return
|
63 |
+
|
64 |
+
@rank_zero_only
|
65 |
+
def log_audio(self, y, y_low, y_recon, epoch):
|
66 |
+
y, y_low, y_recon = y.detach().cpu(), y_low.detach().cpu(), y_recon.detach().cpu(),
|
67 |
+
name_list = ['y', 'y_low', 'y_recon']
|
68 |
+
for n, yy in zip(name_list, [y, y_low, y_recon]):
|
69 |
+
self.experiment.add_audio(n, yy, epoch, self.sr)
|
70 |
+
self.experiment.flush()
|
71 |
+
return
|
utils/utils.py
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
|
3 |
+
import librosa
|
4 |
+
import librosa.display
|
5 |
+
import matplotlib.pyplot as plt
|
6 |
+
import numpy as np
|
7 |
+
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
|
8 |
+
|
9 |
+
from config import CONFIG
|
10 |
+
|
11 |
+
|
12 |
+
def mkdir_p(mypath):
|
13 |
+
"""Creates a directory. equivalent to using mkdir -p on the command line"""
|
14 |
+
|
15 |
+
from errno import EEXIST
|
16 |
+
from os import makedirs, path
|
17 |
+
|
18 |
+
try:
|
19 |
+
makedirs(mypath)
|
20 |
+
except OSError as exc: # Python >2.5
|
21 |
+
if exc.errno == EEXIST and path.isdir(mypath):
|
22 |
+
pass
|
23 |
+
else:
|
24 |
+
raise
|
25 |
+
|
26 |
+
|
27 |
+
def visualize(hr, lr, recon, path):
|
28 |
+
sr = CONFIG.DATA.sr
|
29 |
+
window_size = 1024
|
30 |
+
window = np.hanning(window_size)
|
31 |
+
|
32 |
+
stft_hr = librosa.core.spectrum.stft(hr, n_fft=window_size, hop_length=512, window=window)
|
33 |
+
stft_hr = 2 * np.abs(stft_hr) / np.sum(window)
|
34 |
+
|
35 |
+
stft_lr = librosa.core.spectrum.stft(lr, n_fft=window_size, hop_length=512, window=window)
|
36 |
+
stft_lr = 2 * np.abs(stft_lr) / np.sum(window)
|
37 |
+
|
38 |
+
stft_recon = librosa.core.spectrum.stft(recon, n_fft=window_size, hop_length=512, window=window)
|
39 |
+
stft_recon = 2 * np.abs(stft_recon) / np.sum(window)
|
40 |
+
|
41 |
+
fig, (ax1, ax2, ax3) = plt.subplots(3, 1, sharey=True, sharex=True, figsize=(16, 10))
|
42 |
+
ax1.title.set_text('HR signal')
|
43 |
+
ax2.title.set_text('LR signal')
|
44 |
+
ax3.title.set_text('Reconstructed signal')
|
45 |
+
|
46 |
+
canvas = FigureCanvas(fig)
|
47 |
+
p = librosa.display.specshow(librosa.amplitude_to_db(stft_hr), ax=ax1, y_axis='linear', x_axis='time', sr=sr)
|
48 |
+
p = librosa.display.specshow(librosa.amplitude_to_db(stft_lr), ax=ax2, y_axis='linear', x_axis='time', sr=sr)
|
49 |
+
p = librosa.display.specshow(librosa.amplitude_to_db(stft_recon), ax=ax3, y_axis='linear', x_axis='time', sr=sr)
|
50 |
+
mkdir_p(path)
|
51 |
+
fig.savefig(os.path.join(path, 'spec.png'))
|
52 |
+
|
53 |
+
|
54 |
+
def get_power(x, nfft):
|
55 |
+
S = librosa.stft(x, nfft)
|
56 |
+
S = np.log(np.abs(S) ** 2 + 1e-8)
|
57 |
+
return S
|
58 |
+
|
59 |
+
|
60 |
+
def LSD(x_hr, x_pr):
|
61 |
+
S1 = get_power(x_hr, nfft=2048)
|
62 |
+
S2 = get_power(x_pr, nfft=2048)
|
63 |
+
lsd = np.mean(np.sqrt(np.mean((S1 - S2) ** 2 + 1e-8, axis=-1)), axis=0)
|
64 |
+
S1 = S1[-(len(S1) - 1) // 2:, :]
|
65 |
+
S2 = S2[-(len(S2) - 1) // 2:, :]
|
66 |
+
lsd_high = np.mean(np.sqrt(np.mean((S1 - S2) ** 2 + 1e-8, axis=-1)), axis=0)
|
67 |
+
return lsd, lsd_high
|