vietanhnami commited on
Commit
45916af
0 Parent(s):

first commit

Browse files
Files changed (44) hide show
  1. .gitattributes +5 -0
  2. LICENSE +400 -0
  3. PLCMOS/models/plcmos_v0.onnx +3 -0
  4. PLCMOS/models/plcmos_v1_intrusive.onnx +3 -0
  5. PLCMOS/models/plcmos_v1_nonintrusive.onnx +3 -0
  6. PLCMOS/plc_mos.py +247 -0
  7. README.md +193 -0
  8. audio_samples/sample_1/FRN_enhanced.wav +0 -0
  9. audio_samples/sample_1/TFGAN_enhanced.wav +0 -0
  10. audio_samples/sample_1/clean.wav +0 -0
  11. audio_samples/sample_1/lossy.wav +0 -0
  12. audio_samples/sample_1/tPLC_enhanced.wav +0 -0
  13. audio_samples/sample_2/FRN_enhanced.wav +0 -0
  14. audio_samples/sample_2/TFGAN_enhanced.wav +0 -0
  15. audio_samples/sample_2/clean.wav +0 -0
  16. audio_samples/sample_2/lossy.wav +0 -0
  17. audio_samples/sample_2/tPLC_enhanced.wav +0 -0
  18. audio_samples/sample_3/FRN_enhanced.wav +0 -0
  19. audio_samples/sample_3/TFGAN_enhanced.wav +0 -0
  20. audio_samples/sample_3/clean.wav +0 -0
  21. audio_samples/sample_3/lossy.wav +0 -0
  22. audio_samples/sample_3/tPLC_enhanced.wav +0 -0
  23. config.py +59 -0
  24. css/styles.css +50 -0
  25. data/vctk/test.txt +3552 -0
  26. data/vctk/train.txt +0 -0
  27. dataset.py +227 -0
  28. index.html +139 -0
  29. inference_onnx.py +63 -0
  30. lightning_logs/predictor/checkpoints/predictor.ckpt +3 -0
  31. lightning_logs/predictor/hparams.yaml +6 -0
  32. lightning_logs/version_0/checkpoints/frn-epoch=65-val_loss=0.2290.ckpt +3 -0
  33. lightning_logs/version_0/checkpoints/frn.onnx +3 -0
  34. lightning_logs/version_0/hparams.yaml +6 -0
  35. loss.py +145 -0
  36. main.py +132 -0
  37. models/__init__.py +0 -0
  38. models/blocks.py +142 -0
  39. models/frn.py +220 -0
  40. requirements.txt +17 -0
  41. utils/__init__.py +0 -0
  42. utils/stft.py +23 -0
  43. utils/tblogger.py +71 -0
  44. 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 [anh.nguyen@namitech.io](mailto:anh.nguyen@namitech.io).
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, andykhong@ntu.edu.sg
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