@scrypted/libav 1.0.167 → 1.0.169

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (722) hide show
  1. package/binding.gyp +2 -0
  2. package/opus/.gitattributes +10 -0
  3. package/opus/.gitlab-ci.yml +122 -0
  4. package/opus/AUTHORS +6 -0
  5. package/opus/CMakeLists.txt +755 -0
  6. package/opus/COPYING +44 -0
  7. package/opus/ChangeLog +0 -0
  8. package/opus/LICENSE_PLEASE_READ.txt +22 -0
  9. package/opus/Makefile.am +497 -0
  10. package/opus/Makefile.mips +169 -0
  11. package/opus/Makefile.unix +167 -0
  12. package/opus/NEWS +0 -0
  13. package/opus/README +189 -0
  14. package/opus/README.draft +54 -0
  15. package/opus/autogen.bat +13 -0
  16. package/opus/autogen.sh +16 -0
  17. package/opus/celt/_kiss_fft_guts.h +188 -0
  18. package/opus/celt/arch.h +390 -0
  19. package/opus/celt/arm/arm2gnu.pl +353 -0
  20. package/opus/celt/arm/arm_celt_map.c +171 -0
  21. package/opus/celt/arm/armcpu.c +291 -0
  22. package/opus/celt/arm/armcpu.h +90 -0
  23. package/opus/celt/arm/armopts.s.in +37 -0
  24. package/opus/celt/arm/celt_fft_ne10.c +173 -0
  25. package/opus/celt/arm/celt_mdct_ne10.c +258 -0
  26. package/opus/celt/arm/celt_neon_intr.c +272 -0
  27. package/opus/celt/arm/celt_pitch_xcorr_arm.s +551 -0
  28. package/opus/celt/arm/fft_arm.h +71 -0
  29. package/opus/celt/arm/fixed_arm64.h +35 -0
  30. package/opus/celt/arm/fixed_armv4.h +80 -0
  31. package/opus/celt/arm/fixed_armv5e.h +151 -0
  32. package/opus/celt/arm/kiss_fft_armv4.h +121 -0
  33. package/opus/celt/arm/kiss_fft_armv5e.h +118 -0
  34. package/opus/celt/arm/mdct_arm.h +59 -0
  35. package/opus/celt/arm/meson.build +12 -0
  36. package/opus/celt/arm/pitch_arm.h +160 -0
  37. package/opus/celt/arm/pitch_neon_intr.c +288 -0
  38. package/opus/celt/bands.c +1686 -0
  39. package/opus/celt/bands.h +123 -0
  40. package/opus/celt/celt.c +317 -0
  41. package/opus/celt/celt.h +255 -0
  42. package/opus/celt/celt_decoder.c +1616 -0
  43. package/opus/celt/celt_encoder.c +2854 -0
  44. package/opus/celt/celt_lpc.c +364 -0
  45. package/opus/celt/celt_lpc.h +66 -0
  46. package/opus/celt/cpu_support.h +72 -0
  47. package/opus/celt/cwrs.c +715 -0
  48. package/opus/celt/cwrs.h +48 -0
  49. package/opus/celt/dump_modes/dump_modes.c +400 -0
  50. package/opus/celt/dump_modes/dump_modes_arch.h +45 -0
  51. package/opus/celt/dump_modes/dump_modes_arm_ne10.c +152 -0
  52. package/opus/celt/ecintrin.h +91 -0
  53. package/opus/celt/entcode.c +153 -0
  54. package/opus/celt/entcode.h +152 -0
  55. package/opus/celt/entdec.c +266 -0
  56. package/opus/celt/entdec.h +110 -0
  57. package/opus/celt/entenc.c +305 -0
  58. package/opus/celt/entenc.h +119 -0
  59. package/opus/celt/fixed_c5x.h +79 -0
  60. package/opus/celt/fixed_c6x.h +70 -0
  61. package/opus/celt/fixed_debug.h +839 -0
  62. package/opus/celt/fixed_generic.h +201 -0
  63. package/opus/celt/float_cast.h +152 -0
  64. package/opus/celt/kiss_fft.c +648 -0
  65. package/opus/celt/kiss_fft.h +217 -0
  66. package/opus/celt/laplace.c +235 -0
  67. package/opus/celt/laplace.h +57 -0
  68. package/opus/celt/mathops.c +217 -0
  69. package/opus/celt/mathops.h +479 -0
  70. package/opus/celt/mdct.c +372 -0
  71. package/opus/celt/mdct.h +115 -0
  72. package/opus/celt/meson.build +64 -0
  73. package/opus/celt/mfrngcod.h +48 -0
  74. package/opus/celt/mips/celt_mipsr1.h +152 -0
  75. package/opus/celt/mips/fixed_generic_mipsr1.h +126 -0
  76. package/opus/celt/mips/kiss_fft_mipsr1.h +167 -0
  77. package/opus/celt/mips/mdct_mipsr1.h +288 -0
  78. package/opus/celt/mips/pitch_mipsr1.h +161 -0
  79. package/opus/celt/mips/vq_mipsr1.h +116 -0
  80. package/opus/celt/modes.c +450 -0
  81. package/opus/celt/modes.h +75 -0
  82. package/opus/celt/opus_custom_demo.c +451 -0
  83. package/opus/celt/os_support.h +99 -0
  84. package/opus/celt/pitch.c +555 -0
  85. package/opus/celt/pitch.h +203 -0
  86. package/opus/celt/quant_bands.c +562 -0
  87. package/opus/celt/quant_bands.h +66 -0
  88. package/opus/celt/rate.c +646 -0
  89. package/opus/celt/rate.h +101 -0
  90. package/opus/celt/stack_alloc.h +185 -0
  91. package/opus/celt/static_modes_fixed.h +1541 -0
  92. package/opus/celt/static_modes_fixed_arm_ne10.h +388 -0
  93. package/opus/celt/static_modes_float.h +888 -0
  94. package/opus/celt/static_modes_float_arm_ne10.h +404 -0
  95. package/opus/celt/tests/meson.build +19 -0
  96. package/opus/celt/tests/test_unit_cwrs32.c +162 -0
  97. package/opus/celt/tests/test_unit_dft.c +181 -0
  98. package/opus/celt/tests/test_unit_entropy.c +383 -0
  99. package/opus/celt/tests/test_unit_laplace.c +94 -0
  100. package/opus/celt/tests/test_unit_mathops.c +369 -0
  101. package/opus/celt/tests/test_unit_mdct.c +233 -0
  102. package/opus/celt/tests/test_unit_rotation.c +87 -0
  103. package/opus/celt/tests/test_unit_types.c +50 -0
  104. package/opus/celt/vq.c +442 -0
  105. package/opus/celt/vq.h +79 -0
  106. package/opus/celt/x86/celt_lpc_sse.h +67 -0
  107. package/opus/celt/x86/celt_lpc_sse4_1.c +96 -0
  108. package/opus/celt/x86/pitch_avx.c +101 -0
  109. package/opus/celt/x86/pitch_sse.c +185 -0
  110. package/opus/celt/x86/pitch_sse.h +216 -0
  111. package/opus/celt/x86/pitch_sse2.c +95 -0
  112. package/opus/celt/x86/pitch_sse4_1.c +240 -0
  113. package/opus/celt/x86/vq_sse.h +52 -0
  114. package/opus/celt/x86/vq_sse2.c +217 -0
  115. package/opus/celt/x86/x86_arch_macros.h +47 -0
  116. package/opus/celt/x86/x86_celt_map.c +187 -0
  117. package/opus/celt/x86/x86cpu.c +184 -0
  118. package/opus/celt/x86/x86cpu.h +112 -0
  119. package/opus/celt_headers.mk +54 -0
  120. package/opus/celt_sources.mk +55 -0
  121. package/opus/cmake/CFeatureCheck.cmake +39 -0
  122. package/opus/cmake/OpusBuildtype.cmake +27 -0
  123. package/opus/cmake/OpusConfig.cmake +118 -0
  124. package/opus/cmake/OpusConfig.cmake.in +20 -0
  125. package/opus/cmake/OpusFunctions.cmake +231 -0
  126. package/opus/cmake/OpusPackageVersion.cmake +70 -0
  127. package/opus/cmake/OpusSources.cmake +71 -0
  128. package/opus/cmake/README.md +132 -0
  129. package/opus/cmake/RunTest.cmake +61 -0
  130. package/opus/cmake/config.h.cmake.in +1 -0
  131. package/opus/cmake/cpu_info_by_asm.c +31 -0
  132. package/opus/cmake/cpu_info_by_c.c +9 -0
  133. package/opus/cmake/vla.c +7 -0
  134. package/opus/configure.ac +1091 -0
  135. package/opus/dnn/LPCNet.yml +24 -0
  136. package/opus/dnn/README +1 -0
  137. package/opus/dnn/README.md +126 -0
  138. package/opus/dnn/adaconvtest.c +449 -0
  139. package/opus/dnn/arm/arm_dnn_map.c +88 -0
  140. package/opus/dnn/arm/dnn_arm.h +104 -0
  141. package/opus/dnn/arm/nnet_dotprod.c +38 -0
  142. package/opus/dnn/arm/nnet_neon.c +38 -0
  143. package/opus/dnn/burg.c +246 -0
  144. package/opus/dnn/burg.h +41 -0
  145. package/opus/dnn/common.h +56 -0
  146. package/opus/dnn/datasets.txt +163 -0
  147. package/opus/dnn/download_model.bat +9 -0
  148. package/opus/dnn/download_model.sh +30 -0
  149. package/opus/dnn/dred_coding.c +44 -0
  150. package/opus/dnn/dred_coding.h +36 -0
  151. package/opus/dnn/dred_config.h +54 -0
  152. package/opus/dnn/dred_decoder.c +129 -0
  153. package/opus/dnn/dred_decoder.h +49 -0
  154. package/opus/dnn/dred_encoder.c +363 -0
  155. package/opus/dnn/dred_encoder.h +71 -0
  156. package/opus/dnn/dred_rdovae.h +42 -0
  157. package/opus/dnn/dred_rdovae_dec.c +139 -0
  158. package/opus/dnn/dred_rdovae_dec.h +53 -0
  159. package/opus/dnn/dred_rdovae_enc.c +110 -0
  160. package/opus/dnn/dred_rdovae_enc.h +52 -0
  161. package/opus/dnn/dump_data.c +238 -0
  162. package/opus/dnn/dump_lpcnet_tables.c +104 -0
  163. package/opus/dnn/fargan.c +225 -0
  164. package/opus/dnn/fargan.h +68 -0
  165. package/opus/dnn/fargan_demo.c +217 -0
  166. package/opus/dnn/freq.c +328 -0
  167. package/opus/dnn/freq.h +61 -0
  168. package/opus/dnn/fwgan.c +322 -0
  169. package/opus/dnn/fwgan.h +83 -0
  170. package/opus/dnn/kiss99.c +81 -0
  171. package/opus/dnn/kiss99.h +46 -0
  172. package/opus/dnn/lossgen.c +192 -0
  173. package/opus/dnn/lossgen.h +55 -0
  174. package/opus/dnn/lossgen_demo.c +22 -0
  175. package/opus/dnn/lpcnet.c +283 -0
  176. package/opus/dnn/lpcnet.h +183 -0
  177. package/opus/dnn/lpcnet_enc.c +230 -0
  178. package/opus/dnn/lpcnet_plc.c +211 -0
  179. package/opus/dnn/lpcnet_private.h +90 -0
  180. package/opus/dnn/lpcnet_tables.c +307 -0
  181. package/opus/dnn/meson.build +64 -0
  182. package/opus/dnn/nndsp.c +416 -0
  183. package/opus/dnn/nndsp.h +143 -0
  184. package/opus/dnn/nnet.c +149 -0
  185. package/opus/dnn/nnet.h +163 -0
  186. package/opus/dnn/nnet_arch.h +247 -0
  187. package/opus/dnn/nnet_default.c +35 -0
  188. package/opus/dnn/osce.c +1419 -0
  189. package/opus/dnn/osce.h +84 -0
  190. package/opus/dnn/osce_config.h +60 -0
  191. package/opus/dnn/osce_features.c +454 -0
  192. package/opus/dnn/osce_features.h +50 -0
  193. package/opus/dnn/osce_structs.h +125 -0
  194. package/opus/dnn/parse_lpcnet_weights.c +238 -0
  195. package/opus/dnn/pitchdnn.c +79 -0
  196. package/opus/dnn/pitchdnn.h +34 -0
  197. package/opus/dnn/tansig_table.h +50 -0
  198. package/opus/dnn/test_vec.c +128 -0
  199. package/opus/dnn/torch/dnntools/dnntools/__init__.py +2 -0
  200. package/opus/dnn/torch/dnntools/dnntools/quantization/__init__.py +1 -0
  201. package/opus/dnn/torch/dnntools/dnntools/quantization/softquant.py +113 -0
  202. package/opus/dnn/torch/dnntools/dnntools/relegance/__init__.py +2 -0
  203. package/opus/dnn/torch/dnntools/dnntools/relegance/meta_critic.py +85 -0
  204. package/opus/dnn/torch/dnntools/dnntools/relegance/relegance.py +449 -0
  205. package/opus/dnn/torch/dnntools/dnntools/sparsification/__init__.py +6 -0
  206. package/opus/dnn/torch/dnntools/dnntools/sparsification/base_sparsifier.py +58 -0
  207. package/opus/dnn/torch/dnntools/dnntools/sparsification/common.py +123 -0
  208. package/opus/dnn/torch/dnntools/dnntools/sparsification/conv1d_sparsifier.py +133 -0
  209. package/opus/dnn/torch/dnntools/dnntools/sparsification/conv_transpose1d_sparsifier.py +134 -0
  210. package/opus/dnn/torch/dnntools/dnntools/sparsification/gru_sparsifier.py +178 -0
  211. package/opus/dnn/torch/dnntools/dnntools/sparsification/linear_sparsifier.py +128 -0
  212. package/opus/dnn/torch/dnntools/dnntools/sparsification/utils.py +64 -0
  213. package/opus/dnn/torch/dnntools/requirements.txt +1 -0
  214. package/opus/dnn/torch/dnntools/setup.py +48 -0
  215. package/opus/dnn/torch/fargan/README.md +54 -0
  216. package/opus/dnn/torch/fargan/adv_train_fargan.py +277 -0
  217. package/opus/dnn/torch/fargan/dataset.py +61 -0
  218. package/opus/dnn/torch/fargan/dump_fargan_weights.py +112 -0
  219. package/opus/dnn/torch/fargan/fargan.py +322 -0
  220. package/opus/dnn/torch/fargan/filters.py +46 -0
  221. package/opus/dnn/torch/fargan/rc.py +29 -0
  222. package/opus/dnn/torch/fargan/stft_loss.py +186 -0
  223. package/opus/dnn/torch/fargan/test_fargan.py +128 -0
  224. package/opus/dnn/torch/fargan/train_fargan.py +168 -0
  225. package/opus/dnn/torch/fwgan/dump_model_weights.py +88 -0
  226. package/opus/dnn/torch/fwgan/inference.py +141 -0
  227. package/opus/dnn/torch/fwgan/models/__init__.py +7 -0
  228. package/opus/dnn/torch/fwgan/models/fwgan400.py +308 -0
  229. package/opus/dnn/torch/fwgan/models/fwgan500.py +260 -0
  230. package/opus/dnn/torch/lossgen/README.md +27 -0
  231. package/opus/dnn/torch/lossgen/export_lossgen.py +101 -0
  232. package/opus/dnn/torch/lossgen/lossgen.py +29 -0
  233. package/opus/dnn/torch/lossgen/process_data.sh +17 -0
  234. package/opus/dnn/torch/lossgen/test_lossgen.py +42 -0
  235. package/opus/dnn/torch/lossgen/train_lossgen.py +99 -0
  236. package/opus/dnn/torch/lpcnet/README.md +27 -0
  237. package/opus/dnn/torch/lpcnet/add_dataset_config.py +77 -0
  238. package/opus/dnn/torch/lpcnet/data/__init__.py +1 -0
  239. package/opus/dnn/torch/lpcnet/data/lpcnet_dataset.py +227 -0
  240. package/opus/dnn/torch/lpcnet/engine/lpcnet_engine.py +141 -0
  241. package/opus/dnn/torch/lpcnet/make_default_setup.py +56 -0
  242. package/opus/dnn/torch/lpcnet/make_test_config.py +78 -0
  243. package/opus/dnn/torch/lpcnet/models/__init__.py +8 -0
  244. package/opus/dnn/torch/lpcnet/models/lpcnet.py +303 -0
  245. package/opus/dnn/torch/lpcnet/models/multi_rate_lpcnet.py +437 -0
  246. package/opus/dnn/torch/lpcnet/print_lpcnet_complexity.py +64 -0
  247. package/opus/dnn/torch/lpcnet/scripts/collect_multi_run_results.py +190 -0
  248. package/opus/dnn/torch/lpcnet/scripts/loop_run.sh +52 -0
  249. package/opus/dnn/torch/lpcnet/scripts/make_animation.py +67 -0
  250. package/opus/dnn/torch/lpcnet/scripts/modify_dataset_target.py +17 -0
  251. package/opus/dnn/torch/lpcnet/scripts/multi_run.sh +17 -0
  252. package/opus/dnn/torch/lpcnet/scripts/run_inference_test.sh +22 -0
  253. package/opus/dnn/torch/lpcnet/scripts/update_checkpoints.py +54 -0
  254. package/opus/dnn/torch/lpcnet/scripts/update_output_folder.sh +22 -0
  255. package/opus/dnn/torch/lpcnet/scripts/update_setups.py +57 -0
  256. package/opus/dnn/torch/lpcnet/test_lpcnet.py +89 -0
  257. package/opus/dnn/torch/lpcnet/train_lpcnet.py +272 -0
  258. package/opus/dnn/torch/lpcnet/utils/__init__.py +4 -0
  259. package/opus/dnn/torch/lpcnet/utils/data.py +141 -0
  260. package/opus/dnn/torch/lpcnet/utils/endoscopy.py +234 -0
  261. package/opus/dnn/torch/lpcnet/utils/layers/__init__.py +3 -0
  262. package/opus/dnn/torch/lpcnet/utils/layers/dual_fc.py +44 -0
  263. package/opus/dnn/torch/lpcnet/utils/layers/pcm_embeddings.py +71 -0
  264. package/opus/dnn/torch/lpcnet/utils/layers/subconditioner.py +497 -0
  265. package/opus/dnn/torch/lpcnet/utils/misc.py +65 -0
  266. package/opus/dnn/torch/lpcnet/utils/pcm.py +35 -0
  267. package/opus/dnn/torch/lpcnet/utils/sample.py +44 -0
  268. package/opus/dnn/torch/lpcnet/utils/sparsification/__init__.py +2 -0
  269. package/opus/dnn/torch/lpcnet/utils/sparsification/common.py +121 -0
  270. package/opus/dnn/torch/lpcnet/utils/sparsification/gru_sparsifier.py +187 -0
  271. package/opus/dnn/torch/lpcnet/utils/templates.py +157 -0
  272. package/opus/dnn/torch/lpcnet/utils/ulaw.py +58 -0
  273. package/opus/dnn/torch/lpcnet/utils/wav.py +43 -0
  274. package/opus/dnn/torch/neural-pitch/README.md +18 -0
  275. package/opus/dnn/torch/neural-pitch/data_augmentation.py +149 -0
  276. package/opus/dnn/torch/neural-pitch/download_demand.sh +43 -0
  277. package/opus/dnn/torch/neural-pitch/evaluation.py +349 -0
  278. package/opus/dnn/torch/neural-pitch/experiments.py +38 -0
  279. package/opus/dnn/torch/neural-pitch/export_neuralpitch_weights.py +109 -0
  280. package/opus/dnn/torch/neural-pitch/models.py +178 -0
  281. package/opus/dnn/torch/neural-pitch/neural_pitch_update.py +179 -0
  282. package/opus/dnn/torch/neural-pitch/ptdb_process.sh +34 -0
  283. package/opus/dnn/torch/neural-pitch/run_crepe.py +72 -0
  284. package/opus/dnn/torch/neural-pitch/training.py +162 -0
  285. package/opus/dnn/torch/neural-pitch/utils.py +59 -0
  286. package/opus/dnn/torch/osce/README.md +66 -0
  287. package/opus/dnn/torch/osce/adv_train_model.py +462 -0
  288. package/opus/dnn/torch/osce/adv_train_vocoder.py +451 -0
  289. package/opus/dnn/torch/osce/create_testvectors.py +165 -0
  290. package/opus/dnn/torch/osce/data/__init__.py +2 -0
  291. package/opus/dnn/torch/osce/data/lpcnet_vocoding_dataset.py +225 -0
  292. package/opus/dnn/torch/osce/data/silk_conversion_set.py +132 -0
  293. package/opus/dnn/torch/osce/data/silk_enhancement_set.py +140 -0
  294. package/opus/dnn/torch/osce/engine/engine.py +103 -0
  295. package/opus/dnn/torch/osce/engine/vocoder_engine.py +101 -0
  296. package/opus/dnn/torch/osce/export_model_weights.py +174 -0
  297. package/opus/dnn/torch/osce/losses/stft_loss.py +277 -0
  298. package/opus/dnn/torch/osce/losses/td_lowpass.py +34 -0
  299. package/opus/dnn/torch/osce/make_default_setup.py +93 -0
  300. package/opus/dnn/torch/osce/models/__init__.py +42 -0
  301. package/opus/dnn/torch/osce/models/fd_discriminator.py +974 -0
  302. package/opus/dnn/torch/osce/models/lace.py +190 -0
  303. package/opus/dnn/torch/osce/models/lavoce.py +274 -0
  304. package/opus/dnn/torch/osce/models/lavoce_400.py +254 -0
  305. package/opus/dnn/torch/osce/models/lpcnet_feature_net.py +91 -0
  306. package/opus/dnn/torch/osce/models/nns_base.py +69 -0
  307. package/opus/dnn/torch/osce/models/no_lace.py +218 -0
  308. package/opus/dnn/torch/osce/models/scale_embedding.py +68 -0
  309. package/opus/dnn/torch/osce/models/shape_up_48.py +179 -0
  310. package/opus/dnn/torch/osce/models/silk_feature_net.py +86 -0
  311. package/opus/dnn/torch/osce/models/silk_feature_net_pl.py +127 -0
  312. package/opus/dnn/torch/osce/requirements.txt +9 -0
  313. package/opus/dnn/torch/osce/resources/training_files.txt +107716 -0
  314. package/opus/dnn/torch/osce/resources/validation_files.txt +26929 -0
  315. package/opus/dnn/torch/osce/scripts/concatenator.py +85 -0
  316. package/opus/dnn/torch/osce/silk_16_to_48.py +28 -0
  317. package/opus/dnn/torch/osce/stndrd/evaluation/commonvoice_clip_selection.py +123 -0
  318. package/opus/dnn/torch/osce/stndrd/evaluation/create_input_data.sh +25 -0
  319. package/opus/dnn/torch/osce/stndrd/evaluation/env.rc +7 -0
  320. package/opus/dnn/torch/osce/stndrd/evaluation/evaluate.py +113 -0
  321. package/opus/dnn/torch/osce/stndrd/evaluation/lace_loss_metric.py +330 -0
  322. package/opus/dnn/torch/osce/stndrd/evaluation/make_boxplots.py +116 -0
  323. package/opus/dnn/torch/osce/stndrd/evaluation/make_boxplots_moctest.py +109 -0
  324. package/opus/dnn/torch/osce/stndrd/evaluation/make_tables.py +124 -0
  325. package/opus/dnn/torch/osce/stndrd/evaluation/make_tables_moctest.py +121 -0
  326. package/opus/dnn/torch/osce/stndrd/evaluation/moc.py +182 -0
  327. package/opus/dnn/torch/osce/stndrd/evaluation/moc2.py +190 -0
  328. package/opus/dnn/torch/osce/stndrd/evaluation/process_dataset.sh +98 -0
  329. package/opus/dnn/torch/osce/stndrd/evaluation/run_nomad.py +138 -0
  330. package/opus/dnn/torch/osce/stndrd/evaluation/run_osce_test.py +196 -0
  331. package/opus/dnn/torch/osce/stndrd/presentation/endoscopy.py +205 -0
  332. package/opus/dnn/torch/osce/stndrd/presentation/lace_demo.ipynb +313 -0
  333. package/opus/dnn/torch/osce/stndrd/presentation/linear_prediction.ipynb +320 -0
  334. package/opus/dnn/torch/osce/stndrd/presentation/playback.py +25 -0
  335. package/opus/dnn/torch/osce/stndrd/presentation/postfilter.ipynb +275 -0
  336. package/opus/dnn/torch/osce/stndrd/presentation/spectrogram.ipynb +173 -0
  337. package/opus/dnn/torch/osce/test_model.py +96 -0
  338. package/opus/dnn/torch/osce/test_vocoder.py +103 -0
  339. package/opus/dnn/torch/osce/train_model.py +307 -0
  340. package/opus/dnn/torch/osce/train_vocoder.py +287 -0
  341. package/opus/dnn/torch/osce/utils/ada_conv.py +71 -0
  342. package/opus/dnn/torch/osce/utils/complexity.py +8 -0
  343. package/opus/dnn/torch/osce/utils/endoscopy.py +205 -0
  344. package/opus/dnn/torch/osce/utils/layers/fir.py +27 -0
  345. package/opus/dnn/torch/osce/utils/layers/limited_adaptive_comb1d.py +230 -0
  346. package/opus/dnn/torch/osce/utils/layers/limited_adaptive_conv1d.py +200 -0
  347. package/opus/dnn/torch/osce/utils/layers/noise_shaper.py +100 -0
  348. package/opus/dnn/torch/osce/utils/layers/pitch_auto_correlator.py +84 -0
  349. package/opus/dnn/torch/osce/utils/layers/silk_upsampler.py +167 -0
  350. package/opus/dnn/torch/osce/utils/layers/td_shaper.py +145 -0
  351. package/opus/dnn/torch/osce/utils/lpcnet_features.py +112 -0
  352. package/opus/dnn/torch/osce/utils/misc.py +95 -0
  353. package/opus/dnn/torch/osce/utils/moc.py +153 -0
  354. package/opus/dnn/torch/osce/utils/pitch.py +122 -0
  355. package/opus/dnn/torch/osce/utils/silk_features.py +144 -0
  356. package/opus/dnn/torch/osce/utils/softquant.py +110 -0
  357. package/opus/dnn/torch/osce/utils/spec.py +210 -0
  358. package/opus/dnn/torch/osce/utils/templates.py +347 -0
  359. package/opus/dnn/torch/plc/export_plc.py +100 -0
  360. package/opus/dnn/torch/plc/plc.py +144 -0
  361. package/opus/dnn/torch/plc/plc_dataset.py +60 -0
  362. package/opus/dnn/torch/plc/train_plc.py +145 -0
  363. package/opus/dnn/torch/rdovae/README.md +55 -0
  364. package/opus/dnn/torch/rdovae/download_datasets.sh +6 -0
  365. package/opus/dnn/torch/rdovae/export_rdovae_weights.py +365 -0
  366. package/opus/dnn/torch/rdovae/fec_encoder.py +212 -0
  367. package/opus/dnn/torch/rdovae/import_rdovae_weights.py +143 -0
  368. package/opus/dnn/torch/rdovae/packets/__init__.py +1 -0
  369. package/opus/dnn/torch/rdovae/packets/fec_packets.c +142 -0
  370. package/opus/dnn/torch/rdovae/packets/fec_packets.h +34 -0
  371. package/opus/dnn/torch/rdovae/packets/fec_packets.py +108 -0
  372. package/opus/dnn/torch/rdovae/process_speech.sh +7 -0
  373. package/opus/dnn/torch/rdovae/rdovae/__init__.py +2 -0
  374. package/opus/dnn/torch/rdovae/rdovae/dataset.py +67 -0
  375. package/opus/dnn/torch/rdovae/rdovae/rdovae.py +719 -0
  376. package/opus/dnn/torch/rdovae/requirements.txt +4 -0
  377. package/opus/dnn/torch/rdovae/train_rdovae.py +278 -0
  378. package/opus/dnn/torch/testsuite/README.md +46 -0
  379. package/opus/dnn/torch/testsuite/examples/lpcnet_c_example.yml +6 -0
  380. package/opus/dnn/torch/testsuite/examples/lpcnet_c_plc_example.yml +5 -0
  381. package/opus/dnn/torch/testsuite/examples/lpcnet_torch_example.yml +5 -0
  382. package/opus/dnn/torch/testsuite/requirements.txt +12 -0
  383. package/opus/dnn/torch/testsuite/run_test.py +375 -0
  384. package/opus/dnn/torch/testsuite/utils/__init__.py +0 -0
  385. package/opus/dnn/torch/testsuite/utils/files.py +54 -0
  386. package/opus/dnn/torch/testsuite/utils/pesq.py +43 -0
  387. package/opus/dnn/torch/testsuite/utils/pitch.py +61 -0
  388. package/opus/dnn/torch/weight-exchange/README.md +21 -0
  389. package/opus/dnn/torch/weight-exchange/requirements.txt +1 -0
  390. package/opus/dnn/torch/weight-exchange/setup.py +48 -0
  391. package/opus/dnn/torch/weight-exchange/wexchange/__init__.py +30 -0
  392. package/opus/dnn/torch/weight-exchange/wexchange/c_export/__init__.py +31 -0
  393. package/opus/dnn/torch/weight-exchange/wexchange/c_export/c_writer.py +181 -0
  394. package/opus/dnn/torch/weight-exchange/wexchange/c_export/common.py +386 -0
  395. package/opus/dnn/torch/weight-exchange/wexchange/tf/__init__.py +5 -0
  396. package/opus/dnn/torch/weight-exchange/wexchange/tf/tf.py +188 -0
  397. package/opus/dnn/torch/weight-exchange/wexchange/torch/__init__.py +37 -0
  398. package/opus/dnn/torch/weight-exchange/wexchange/torch/torch.py +433 -0
  399. package/opus/dnn/training_tf2/dataloader.py +49 -0
  400. package/opus/dnn/training_tf2/decode_rdovae.py +111 -0
  401. package/opus/dnn/training_tf2/diffembed.py +49 -0
  402. package/opus/dnn/training_tf2/dump_lpcnet.py +388 -0
  403. package/opus/dnn/training_tf2/dump_plc.py +296 -0
  404. package/opus/dnn/training_tf2/dump_rdovae.py +306 -0
  405. package/opus/dnn/training_tf2/encode_rdovae.py +125 -0
  406. package/opus/dnn/training_tf2/fec_encoder.py +256 -0
  407. package/opus/dnn/training_tf2/fec_packets.c +142 -0
  408. package/opus/dnn/training_tf2/fec_packets.h +34 -0
  409. package/opus/dnn/training_tf2/fec_packets.py +108 -0
  410. package/opus/dnn/training_tf2/keraslayerdump.py +189 -0
  411. package/opus/dnn/training_tf2/lossfuncs.py +99 -0
  412. package/opus/dnn/training_tf2/lpcnet.py +339 -0
  413. package/opus/dnn/training_tf2/lpcnet_plc.py +101 -0
  414. package/opus/dnn/training_tf2/mdense.py +95 -0
  415. package/opus/dnn/training_tf2/pade.py +70 -0
  416. package/opus/dnn/training_tf2/parameters.py +29 -0
  417. package/opus/dnn/training_tf2/plc_loader.py +73 -0
  418. package/opus/dnn/training_tf2/rdovae.py +372 -0
  419. package/opus/dnn/training_tf2/rdovae_exchange.py +138 -0
  420. package/opus/dnn/training_tf2/rdovae_import.py +123 -0
  421. package/opus/dnn/training_tf2/test_lpcnet.py +120 -0
  422. package/opus/dnn/training_tf2/test_plc.py +92 -0
  423. package/opus/dnn/training_tf2/tf_funcs.py +70 -0
  424. package/opus/dnn/training_tf2/train_lpcnet.py +214 -0
  425. package/opus/dnn/training_tf2/train_plc.py +197 -0
  426. package/opus/dnn/training_tf2/train_rdovae.py +151 -0
  427. package/opus/dnn/training_tf2/ulaw.py +19 -0
  428. package/opus/dnn/training_tf2/uniform_noise.py +78 -0
  429. package/opus/dnn/vec.h +389 -0
  430. package/opus/dnn/vec_avx.h +884 -0
  431. package/opus/dnn/vec_neon.h +473 -0
  432. package/opus/dnn/write_lpcnet_weights.c +97 -0
  433. package/opus/dnn/x86/dnn_x86.h +121 -0
  434. package/opus/dnn/x86/nnet_avx2.c +40 -0
  435. package/opus/dnn/x86/nnet_sse2.c +40 -0
  436. package/opus/dnn/x86/nnet_sse4_1.c +40 -0
  437. package/opus/dnn/x86/x86_dnn_map.c +83 -0
  438. package/opus/doc/Doxyfile.in +340 -0
  439. package/opus/doc/Makefile.am +45 -0
  440. package/opus/doc/build_draft.sh +113 -0
  441. package/opus/doc/build_isobmff.sh +50 -0
  442. package/opus/doc/build_oggdraft.sh +52 -0
  443. package/opus/doc/customdoxygen.css +1011 -0
  444. package/opus/doc/draft-ietf-codec-oggopus.xml +1873 -0
  445. package/opus/doc/draft-ietf-codec-opus-update.xml +513 -0
  446. package/opus/doc/draft-ietf-codec-opus.xml +8276 -0
  447. package/opus/doc/draft-ietf-payload-rtp-opus.xml +960 -0
  448. package/opus/doc/footer.html +32 -0
  449. package/opus/doc/header.html +61 -0
  450. package/opus/doc/meson.build +33 -0
  451. package/opus/doc/opus_in_isobmff.css +60 -0
  452. package/opus/doc/opus_in_isobmff.html +692 -0
  453. package/opus/doc/opus_logo.svg +157 -0
  454. package/opus/doc/opus_update.patch +244 -0
  455. package/opus/doc/release.txt +43 -0
  456. package/opus/doc/trivial_example.c +171 -0
  457. package/opus/include/meson.build +13 -0
  458. package/opus/include/opus.h +1172 -0
  459. package/opus/include/opus_custom.h +381 -0
  460. package/opus/include/opus_defines.h +830 -0
  461. package/opus/include/opus_multistream.h +736 -0
  462. package/opus/include/opus_projection.h +643 -0
  463. package/opus/include/opus_types.h +166 -0
  464. package/opus/lpcnet_headers.mk +44 -0
  465. package/opus/lpcnet_sources.mk +44 -0
  466. package/opus/m4/as-gcc-inline-assembly.m4 +98 -0
  467. package/opus/m4/ax_add_fortify_source.m4 +53 -0
  468. package/opus/m4/opus-intrinsics.m4 +29 -0
  469. package/opus/meson/README.md +88 -0
  470. package/opus/meson/get-version.py +86 -0
  471. package/opus/meson/read-sources-list.py +28 -0
  472. package/opus/meson.build +745 -0
  473. package/opus/meson_options.txt +27 -0
  474. package/opus/opus-uninstalled.pc.in +12 -0
  475. package/opus/opus.m4 +117 -0
  476. package/opus/opus.pc.in +16 -0
  477. package/opus/opus_headers.mk +8 -0
  478. package/opus/opus_sources.mk +17 -0
  479. package/opus/releases.sha2 +85 -0
  480. package/opus/scripts/dump_rnn.py +57 -0
  481. package/opus/scripts/local_build.py +220 -0
  482. package/opus/scripts/rnn_train.py +67 -0
  483. package/opus/scripts/shrink_model.sh +7 -0
  484. package/opus/silk/A2NLSF.c +267 -0
  485. package/opus/silk/API.h +156 -0
  486. package/opus/silk/CNG.c +188 -0
  487. package/opus/silk/HP_variable_cutoff.c +77 -0
  488. package/opus/silk/Inlines.h +188 -0
  489. package/opus/silk/LPC_analysis_filter.c +111 -0
  490. package/opus/silk/LPC_fit.c +82 -0
  491. package/opus/silk/LPC_inv_pred_gain.c +141 -0
  492. package/opus/silk/LP_variable_cutoff.c +135 -0
  493. package/opus/silk/MacroCount.h +710 -0
  494. package/opus/silk/MacroDebug.h +945 -0
  495. package/opus/silk/NLSF2A.c +141 -0
  496. package/opus/silk/NLSF_VQ.c +76 -0
  497. package/opus/silk/NLSF_VQ_weights_laroia.c +80 -0
  498. package/opus/silk/NLSF_decode.c +93 -0
  499. package/opus/silk/NLSF_del_dec_quant.c +215 -0
  500. package/opus/silk/NLSF_encode.c +124 -0
  501. package/opus/silk/NLSF_stabilize.c +142 -0
  502. package/opus/silk/NLSF_unpack.c +55 -0
  503. package/opus/silk/NSQ.c +437 -0
  504. package/opus/silk/NSQ.h +101 -0
  505. package/opus/silk/NSQ_del_dec.c +733 -0
  506. package/opus/silk/PLC.c +493 -0
  507. package/opus/silk/PLC.h +65 -0
  508. package/opus/silk/SigProc_FIX.h +643 -0
  509. package/opus/silk/VAD.c +360 -0
  510. package/opus/silk/VQ_WMat_EC.c +131 -0
  511. package/opus/silk/ana_filt_bank_1.c +74 -0
  512. package/opus/silk/arm/LPC_inv_pred_gain_arm.h +57 -0
  513. package/opus/silk/arm/LPC_inv_pred_gain_neon_intr.c +288 -0
  514. package/opus/silk/arm/NSQ_del_dec_arm.h +100 -0
  515. package/opus/silk/arm/NSQ_del_dec_neon_intr.c +1138 -0
  516. package/opus/silk/arm/NSQ_neon.c +112 -0
  517. package/opus/silk/arm/NSQ_neon.h +114 -0
  518. package/opus/silk/arm/SigProc_FIX_armv4.h +47 -0
  519. package/opus/silk/arm/SigProc_FIX_armv5e.h +61 -0
  520. package/opus/silk/arm/arm_silk_map.c +128 -0
  521. package/opus/silk/arm/biquad_alt_arm.h +68 -0
  522. package/opus/silk/arm/biquad_alt_neon_intr.c +156 -0
  523. package/opus/silk/arm/macros_arm64.h +39 -0
  524. package/opus/silk/arm/macros_armv4.h +110 -0
  525. package/opus/silk/arm/macros_armv5e.h +220 -0
  526. package/opus/silk/biquad_alt.c +121 -0
  527. package/opus/silk/bwexpander.c +51 -0
  528. package/opus/silk/bwexpander_32.c +51 -0
  529. package/opus/silk/check_control_input.c +106 -0
  530. package/opus/silk/code_signs.c +115 -0
  531. package/opus/silk/control.h +161 -0
  532. package/opus/silk/control_SNR.c +113 -0
  533. package/opus/silk/control_audio_bandwidth.c +132 -0
  534. package/opus/silk/control_codec.c +423 -0
  535. package/opus/silk/debug.c +174 -0
  536. package/opus/silk/debug.h +267 -0
  537. package/opus/silk/dec_API.c +465 -0
  538. package/opus/silk/decode_core.c +243 -0
  539. package/opus/silk/decode_frame.c +169 -0
  540. package/opus/silk/decode_indices.c +151 -0
  541. package/opus/silk/decode_parameters.c +115 -0
  542. package/opus/silk/decode_pitch.c +77 -0
  543. package/opus/silk/decode_pulses.c +115 -0
  544. package/opus/silk/decoder_set_fs.c +108 -0
  545. package/opus/silk/define.h +235 -0
  546. package/opus/silk/enc_API.c +593 -0
  547. package/opus/silk/encode_indices.c +181 -0
  548. package/opus/silk/encode_pulses.c +206 -0
  549. package/opus/silk/errors.h +98 -0
  550. package/opus/silk/fixed/LTP_analysis_filter_FIX.c +90 -0
  551. package/opus/silk/fixed/LTP_scale_ctrl_FIX.c +58 -0
  552. package/opus/silk/fixed/apply_sine_window_FIX.c +101 -0
  553. package/opus/silk/fixed/arm/warped_autocorrelation_FIX_arm.h +68 -0
  554. package/opus/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c +265 -0
  555. package/opus/silk/fixed/autocorr_FIX.c +48 -0
  556. package/opus/silk/fixed/burg_modified_FIX.c +280 -0
  557. package/opus/silk/fixed/corrMatrix_FIX.c +150 -0
  558. package/opus/silk/fixed/encode_frame_FIX.c +444 -0
  559. package/opus/silk/fixed/find_LPC_FIX.c +151 -0
  560. package/opus/silk/fixed/find_LTP_FIX.c +99 -0
  561. package/opus/silk/fixed/find_pitch_lags_FIX.c +143 -0
  562. package/opus/silk/fixed/find_pred_coefs_FIX.c +146 -0
  563. package/opus/silk/fixed/k2a_FIX.c +54 -0
  564. package/opus/silk/fixed/k2a_Q16_FIX.c +54 -0
  565. package/opus/silk/fixed/main_FIX.h +244 -0
  566. package/opus/silk/fixed/mips/noise_shape_analysis_FIX_mipsr1.h +336 -0
  567. package/opus/silk/fixed/mips/prefilter_FIX_mipsr1.h +184 -0
  568. package/opus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h +165 -0
  569. package/opus/silk/fixed/noise_shape_analysis_FIX.c +407 -0
  570. package/opus/silk/fixed/pitch_analysis_core_FIX.c +721 -0
  571. package/opus/silk/fixed/process_gains_FIX.c +117 -0
  572. package/opus/silk/fixed/regularize_correlations_FIX.c +47 -0
  573. package/opus/silk/fixed/residual_energy16_FIX.c +103 -0
  574. package/opus/silk/fixed/residual_energy_FIX.c +98 -0
  575. package/opus/silk/fixed/schur64_FIX.c +93 -0
  576. package/opus/silk/fixed/schur_FIX.c +107 -0
  577. package/opus/silk/fixed/structs_FIX.h +116 -0
  578. package/opus/silk/fixed/vector_ops_FIX.c +102 -0
  579. package/opus/silk/fixed/warped_autocorrelation_FIX.c +92 -0
  580. package/opus/silk/fixed/x86/burg_modified_FIX_sse4_1.c +400 -0
  581. package/opus/silk/fixed/x86/vector_ops_FIX_sse4_1.c +93 -0
  582. package/opus/silk/float/LPC_analysis_filter_FLP.c +249 -0
  583. package/opus/silk/float/LPC_inv_pred_gain_FLP.c +73 -0
  584. package/opus/silk/float/LTP_analysis_filter_FLP.c +75 -0
  585. package/opus/silk/float/LTP_scale_ctrl_FLP.c +58 -0
  586. package/opus/silk/float/SigProc_FLP.h +205 -0
  587. package/opus/silk/float/apply_sine_window_FLP.c +81 -0
  588. package/opus/silk/float/autocorrelation_FLP.c +53 -0
  589. package/opus/silk/float/burg_modified_FLP.c +187 -0
  590. package/opus/silk/float/bwexpander_FLP.c +49 -0
  591. package/opus/silk/float/corrMatrix_FLP.c +95 -0
  592. package/opus/silk/float/encode_frame_FLP.c +432 -0
  593. package/opus/silk/float/energy_FLP.c +59 -0
  594. package/opus/silk/float/find_LPC_FLP.c +105 -0
  595. package/opus/silk/float/find_LTP_FLP.c +65 -0
  596. package/opus/silk/float/find_pitch_lags_FLP.c +132 -0
  597. package/opus/silk/float/find_pred_coefs_FLP.c +117 -0
  598. package/opus/silk/float/inner_product_FLP.c +59 -0
  599. package/opus/silk/float/k2a_FLP.c +54 -0
  600. package/opus/silk/float/main_FLP.h +290 -0
  601. package/opus/silk/float/noise_shape_analysis_FLP.c +350 -0
  602. package/opus/silk/float/pitch_analysis_core_FLP.c +630 -0
  603. package/opus/silk/float/process_gains_FLP.c +103 -0
  604. package/opus/silk/float/regularize_correlations_FLP.c +48 -0
  605. package/opus/silk/float/residual_energy_FLP.c +117 -0
  606. package/opus/silk/float/scale_copy_vector_FLP.c +57 -0
  607. package/opus/silk/float/scale_vector_FLP.c +56 -0
  608. package/opus/silk/float/schur_FLP.c +70 -0
  609. package/opus/silk/float/sort_FLP.c +83 -0
  610. package/opus/silk/float/structs_FLP.h +112 -0
  611. package/opus/silk/float/warped_autocorrelation_FLP.c +75 -0
  612. package/opus/silk/float/wrappers_FLP.c +209 -0
  613. package/opus/silk/float/x86/inner_product_FLP_avx2.c +85 -0
  614. package/opus/silk/gain_quant.c +142 -0
  615. package/opus/silk/init_decoder.c +84 -0
  616. package/opus/silk/init_encoder.c +68 -0
  617. package/opus/silk/inner_prod_aligned.c +47 -0
  618. package/opus/silk/interpolate.c +51 -0
  619. package/opus/silk/lin2log.c +46 -0
  620. package/opus/silk/log2lin.c +58 -0
  621. package/opus/silk/macros.h +151 -0
  622. package/opus/silk/main.h +486 -0
  623. package/opus/silk/meson.build +69 -0
  624. package/opus/silk/mips/NSQ_del_dec_mipsr1.h +410 -0
  625. package/opus/silk/mips/macros_mipsr1.h +92 -0
  626. package/opus/silk/mips/sigproc_fix_mipsr1.h +60 -0
  627. package/opus/silk/pitch_est_defines.h +88 -0
  628. package/opus/silk/pitch_est_tables.c +99 -0
  629. package/opus/silk/process_NLSFs.c +107 -0
  630. package/opus/silk/quant_LTP_gains.c +132 -0
  631. package/opus/silk/resampler.c +215 -0
  632. package/opus/silk/resampler_down2.c +74 -0
  633. package/opus/silk/resampler_down2_3.c +103 -0
  634. package/opus/silk/resampler_private.h +88 -0
  635. package/opus/silk/resampler_private_AR2.c +55 -0
  636. package/opus/silk/resampler_private_IIR_FIR.c +107 -0
  637. package/opus/silk/resampler_private_down_FIR.c +194 -0
  638. package/opus/silk/resampler_private_up2_HQ.c +113 -0
  639. package/opus/silk/resampler_rom.c +96 -0
  640. package/opus/silk/resampler_rom.h +68 -0
  641. package/opus/silk/resampler_structs.h +60 -0
  642. package/opus/silk/shell_coder.c +151 -0
  643. package/opus/silk/sigm_Q15.c +76 -0
  644. package/opus/silk/sort.c +154 -0
  645. package/opus/silk/stereo_LR_to_MS.c +229 -0
  646. package/opus/silk/stereo_MS_to_LR.c +85 -0
  647. package/opus/silk/stereo_decode_pred.c +73 -0
  648. package/opus/silk/stereo_encode_pred.c +62 -0
  649. package/opus/silk/stereo_find_predictor.c +79 -0
  650. package/opus/silk/stereo_quant_pred.c +73 -0
  651. package/opus/silk/structs.h +357 -0
  652. package/opus/silk/sum_sqr_shift.c +83 -0
  653. package/opus/silk/table_LSF_cos.c +70 -0
  654. package/opus/silk/tables.h +114 -0
  655. package/opus/silk/tables_LTP.c +294 -0
  656. package/opus/silk/tables_NLSF_CB_NB_MB.c +195 -0
  657. package/opus/silk/tables_NLSF_CB_WB.c +234 -0
  658. package/opus/silk/tables_gain.c +63 -0
  659. package/opus/silk/tables_other.c +124 -0
  660. package/opus/silk/tables_pitch_lag.c +69 -0
  661. package/opus/silk/tables_pulses_per_block.c +264 -0
  662. package/opus/silk/tests/meson.build +8 -0
  663. package/opus/silk/tests/test_unit_LPC_inv_pred_gain.c +130 -0
  664. package/opus/silk/tuning_parameters.h +155 -0
  665. package/opus/silk/typedef.h +81 -0
  666. package/opus/silk/x86/NSQ_del_dec_avx2.c +1075 -0
  667. package/opus/silk/x86/NSQ_del_dec_sse4_1.c +915 -0
  668. package/opus/silk/x86/NSQ_sse4_1.c +772 -0
  669. package/opus/silk/x86/SigProc_FIX_sse.h +99 -0
  670. package/opus/silk/x86/VAD_sse4_1.c +289 -0
  671. package/opus/silk/x86/VQ_WMat_EC_sse4_1.c +173 -0
  672. package/opus/silk/x86/main_sse.h +299 -0
  673. package/opus/silk/x86/x86_silk_map.c +179 -0
  674. package/opus/silk_headers.mk +44 -0
  675. package/opus/silk_sources.mk +164 -0
  676. package/opus/src/analysis.c +979 -0
  677. package/opus/src/analysis.h +103 -0
  678. package/opus/src/extensions.c +663 -0
  679. package/opus/src/mapping_matrix.c +993 -0
  680. package/opus/src/mapping_matrix.h +165 -0
  681. package/opus/src/meson.build +45 -0
  682. package/opus/src/mlp.c +132 -0
  683. package/opus/src/mlp.h +60 -0
  684. package/opus/src/mlp_data.c +672 -0
  685. package/opus/src/opus.c +362 -0
  686. package/opus/src/opus_compare.c +382 -0
  687. package/opus/src/opus_decoder.c +1579 -0
  688. package/opus/src/opus_demo.c +1194 -0
  689. package/opus/src/opus_encoder.c +3180 -0
  690. package/opus/src/opus_multistream.c +92 -0
  691. package/opus/src/opus_multistream_decoder.c +563 -0
  692. package/opus/src/opus_multistream_encoder.c +1321 -0
  693. package/opus/src/opus_private.h +263 -0
  694. package/opus/src/opus_projection_decoder.c +283 -0
  695. package/opus/src/opus_projection_encoder.c +522 -0
  696. package/opus/src/repacketizer.c +469 -0
  697. package/opus/src/repacketizer_demo.c +247 -0
  698. package/opus/src/tansig_table.h +45 -0
  699. package/opus/tar_list.txt +28 -0
  700. package/opus/tests/meson.build +39 -0
  701. package/opus/tests/opus_build_test.sh +29 -0
  702. package/opus/tests/opus_decode_fuzzer.c +124 -0
  703. package/opus/tests/opus_decode_fuzzer.options +2 -0
  704. package/opus/tests/opus_encode_regressions.c +1034 -0
  705. package/opus/tests/random_config.sh +126 -0
  706. package/opus/tests/run_vectors.sh +143 -0
  707. package/opus/tests/test_opus_api.c +1904 -0
  708. package/opus/tests/test_opus_common.h +86 -0
  709. package/opus/tests/test_opus_custom.c +694 -0
  710. package/opus/tests/test_opus_decode.c +481 -0
  711. package/opus/tests/test_opus_dred.c +107 -0
  712. package/opus/tests/test_opus_encode.c +738 -0
  713. package/opus/tests/test_opus_extensions.c +750 -0
  714. package/opus/tests/test_opus_padding.c +94 -0
  715. package/opus/tests/test_opus_projection.c +384 -0
  716. package/opus/training/rnn_dump.py +66 -0
  717. package/opus/training/rnn_train.py +177 -0
  718. package/opus/training/txt2hdf5.py +12 -0
  719. package/opus/update_version +65 -0
  720. package/package.json +2 -2
  721. package/src/build-ffmpeg-msys.sh +8 -2
  722. package/test.mp4 +0 -0
@@ -0,0 +1,225 @@
1
+ """
2
+ /* Copyright (c) 2023 Amazon
3
+ Written by Jan Buethe */
4
+ /*
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions
7
+ are met:
8
+
9
+ - Redistributions of source code must retain the above copyright
10
+ notice, this list of conditions and the following disclaimer.
11
+
12
+ - Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
20
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ */
28
+ """
29
+
30
+ """ Dataset for LPCNet training """
31
+ import os
32
+
33
+ import yaml
34
+ import torch
35
+ import numpy as np
36
+ from torch.utils.data import Dataset
37
+
38
+
39
+ scale = 255.0/32768.0
40
+ scale_1 = 32768.0/255.0
41
+ def ulaw2lin(u):
42
+ u = u - 128
43
+ s = np.sign(u)
44
+ u = np.abs(u)
45
+ return s*scale_1*(np.exp(u/128.*np.log(256))-1)
46
+
47
+
48
+ def lin2ulaw(x):
49
+ s = np.sign(x)
50
+ x = np.abs(x)
51
+ u = (s*(128*np.log(1+scale*x)/np.log(256)))
52
+ u = np.clip(128 + np.round(u), 0, 255)
53
+ return u
54
+
55
+
56
+ def run_lpc(signal, lpcs, frame_length=160):
57
+ num_frames, lpc_order = lpcs.shape
58
+
59
+ prediction = np.concatenate(
60
+ [- np.convolve(signal[i * frame_length : (i + 1) * frame_length + lpc_order - 1], lpcs[i], mode='valid') for i in range(num_frames)]
61
+ )
62
+ error = signal[lpc_order :] - prediction
63
+
64
+ return prediction, error
65
+
66
+ class LPCNetVocodingDataset(Dataset):
67
+ def __init__(self,
68
+ path_to_dataset,
69
+ features=['cepstrum', 'periods', 'pitch_corr'],
70
+ target='signal',
71
+ frames_per_sample=100,
72
+ feature_history=0,
73
+ feature_lookahead=0,
74
+ lpc_gamma=1):
75
+
76
+ super().__init__()
77
+
78
+ # load dataset info
79
+ self.path_to_dataset = path_to_dataset
80
+ with open(os.path.join(path_to_dataset, 'info.yml'), 'r') as f:
81
+ dataset = yaml.load(f, yaml.FullLoader)
82
+
83
+ # dataset version
84
+ self.version = dataset['version']
85
+ if self.version == 1:
86
+ self.getitem = self.getitem_v1
87
+ elif self.version == 2:
88
+ self.getitem = self.getitem_v2
89
+ else:
90
+ raise ValueError(f"dataset version {self.version} unknown")
91
+
92
+ # features
93
+ self.feature_history = feature_history
94
+ self.feature_lookahead = feature_lookahead
95
+ self.frame_offset = 2 + self.feature_history
96
+ self.frames_per_sample = frames_per_sample
97
+ self.input_features = features
98
+ self.feature_frame_layout = dataset['feature_frame_layout']
99
+ self.lpc_gamma = lpc_gamma
100
+
101
+ # load feature file
102
+ self.feature_file = os.path.join(path_to_dataset, dataset['feature_file'])
103
+ self.features = np.memmap(self.feature_file, dtype=dataset['feature_dtype'])
104
+ self.feature_frame_length = dataset['feature_frame_length']
105
+
106
+ assert len(self.features) % self.feature_frame_length == 0
107
+ self.features = self.features.reshape((-1, self.feature_frame_length))
108
+
109
+ # derive number of samples is dataset
110
+ self.dataset_length = (len(self.features) - self.frame_offset - self.feature_lookahead - 1 - 2) // self.frames_per_sample
111
+
112
+ # signals
113
+ self.frame_length = dataset['frame_length']
114
+ self.signal_frame_layout = dataset['signal_frame_layout']
115
+ self.target = target
116
+
117
+ # load signals
118
+ self.signal_file = os.path.join(path_to_dataset, dataset['signal_file'])
119
+ self.signals = np.memmap(self.signal_file, dtype=dataset['signal_dtype'])
120
+ self.signal_frame_length = dataset['signal_frame_length']
121
+ self.signals = self.signals.reshape((-1, self.signal_frame_length))
122
+ assert len(self.signals) == len(self.features) * self.frame_length
123
+
124
+
125
+ def __getitem__(self, index):
126
+ return self.getitem(index)
127
+
128
+ def getitem_v2(self, index):
129
+ sample = dict()
130
+
131
+ # extract features
132
+ frame_start = self.frame_offset + index * self.frames_per_sample - self.feature_history
133
+ frame_stop = self.frame_offset + (index + 1) * self.frames_per_sample + self.feature_lookahead
134
+
135
+ for feature in self.input_features:
136
+ feature_start, feature_stop = self.feature_frame_layout[feature]
137
+ sample[feature] = self.features[frame_start : frame_stop, feature_start : feature_stop]
138
+
139
+ # convert periods
140
+ if 'periods' in self.input_features:
141
+ sample['periods'] = (0.1 + 50 * sample['periods'] + 100).astype('int16')
142
+
143
+ signal_start = (self.frame_offset + index * self.frames_per_sample) * self.frame_length
144
+ signal_stop = (self.frame_offset + (index + 1) * self.frames_per_sample) * self.frame_length
145
+
146
+ # last_signal and signal are always expected to be there
147
+ sample['last_signal'] = self.signals[signal_start : signal_stop, self.signal_frame_layout['last_signal']]
148
+ sample['signal'] = self.signals[signal_start : signal_stop, self.signal_frame_layout['signal']]
149
+
150
+ # calculate prediction and error if lpc coefficients present and prediction not given
151
+ if 'lpc' in self.feature_frame_layout and 'prediction' not in self.signal_frame_layout:
152
+ # lpc coefficients with one frame lookahead
153
+ # frame positions (start one frame early for past excitation)
154
+ frame_start = self.frame_offset + self.frames_per_sample * index - 1
155
+ frame_stop = self.frame_offset + self.frames_per_sample * (index + 1)
156
+
157
+ # feature positions
158
+ lpc_start, lpc_stop = self.feature_frame_layout['lpc']
159
+ lpc_order = lpc_stop - lpc_start
160
+ lpcs = self.features[frame_start : frame_stop, lpc_start : lpc_stop]
161
+
162
+ # LPC weighting
163
+ lpc_order = lpc_stop - lpc_start
164
+ weights = np.array([self.lpc_gamma ** (i + 1) for i in range(lpc_order)])
165
+ lpcs = lpcs * weights
166
+
167
+ # signal position (lpc_order samples as history)
168
+ signal_start = frame_start * self.frame_length - lpc_order + 1
169
+ signal_stop = frame_stop * self.frame_length + 1
170
+ noisy_signal = self.signals[signal_start : signal_stop, self.signal_frame_layout['last_signal']]
171
+ clean_signal = self.signals[signal_start - 1 : signal_stop - 1, self.signal_frame_layout['signal']]
172
+
173
+ noisy_prediction, noisy_error = run_lpc(noisy_signal, lpcs, frame_length=self.frame_length)
174
+
175
+ # extract signals
176
+ offset = self.frame_length
177
+ sample['prediction'] = noisy_prediction[offset : offset + self.frame_length * self.frames_per_sample]
178
+ sample['last_error'] = noisy_error[offset - 1 : offset - 1 + self.frame_length * self.frames_per_sample]
179
+ # calculate error between real signal and noisy prediction
180
+
181
+
182
+ sample['error'] = sample['signal'] - sample['prediction']
183
+
184
+
185
+ # concatenate features
186
+ feature_keys = [key for key in self.input_features if not key.startswith("periods")]
187
+ features = torch.concat([torch.FloatTensor(sample[key]) for key in feature_keys], dim=-1)
188
+ target = torch.FloatTensor(sample[self.target]) / 2**15
189
+ periods = torch.LongTensor(sample['periods'])
190
+
191
+ return {'features' : features, 'periods' : periods, 'target' : target}
192
+
193
+ def getitem_v1(self, index):
194
+ sample = dict()
195
+
196
+ # extract features
197
+ frame_start = self.frame_offset + index * self.frames_per_sample - self.feature_history
198
+ frame_stop = self.frame_offset + (index + 1) * self.frames_per_sample + self.feature_lookahead
199
+
200
+ for feature in self.input_features:
201
+ feature_start, feature_stop = self.feature_frame_layout[feature]
202
+ sample[feature] = self.features[frame_start : frame_stop, feature_start : feature_stop]
203
+
204
+ # convert periods
205
+ if 'periods' in self.input_features:
206
+ sample['periods'] = (0.1 + 50 * sample['periods'] + 100).astype('int16')
207
+
208
+ signal_start = (self.frame_offset + index * self.frames_per_sample) * self.frame_length
209
+ signal_stop = (self.frame_offset + (index + 1) * self.frames_per_sample) * self.frame_length
210
+
211
+ # last_signal and signal are always expected to be there
212
+ for signal_name, index in self.signal_frame_layout.items():
213
+ sample[signal_name] = self.signals[signal_start : signal_stop, index]
214
+
215
+ # concatenate features
216
+ feature_keys = [key for key in self.input_features if not key.startswith("periods")]
217
+ features = torch.concat([torch.FloatTensor(sample[key]) for key in feature_keys], dim=-1)
218
+ signals = torch.cat([torch.LongTensor(sample[key]).unsqueeze(-1) for key in self.input_signals], dim=-1)
219
+ target = torch.LongTensor(sample[self.target])
220
+ periods = torch.LongTensor(sample['periods'])
221
+
222
+ return {'features' : features, 'periods' : periods, 'signals' : signals, 'target' : target}
223
+
224
+ def __len__(self):
225
+ return self.dataset_length
@@ -0,0 +1,132 @@
1
+ """
2
+ /* Copyright (c) 2023 Amazon
3
+ Written by Jan Buethe */
4
+ /*
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions
7
+ are met:
8
+
9
+ - Redistributions of source code must retain the above copyright
10
+ notice, this list of conditions and the following disclaimer.
11
+
12
+ - Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
20
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ */
28
+ """
29
+
30
+ import os
31
+
32
+ from torch.utils.data import Dataset
33
+ import numpy as np
34
+
35
+ from utils.silk_features import silk_feature_factory
36
+ from utils.pitch import hangover, calculate_acorr_window
37
+
38
+
39
+ class SilkEnhancementSet(Dataset):
40
+ def __init__(self,
41
+ path,
42
+ frames_per_sample=100,
43
+ no_pitch_value=9,
44
+ acorr_radius=2,
45
+ pitch_hangover=8,
46
+ num_bands_clean_spec=64,
47
+ num_bands_noisy_spec=18,
48
+ noisy_spec_scale='opus',
49
+ noisy_apply_dct=True,
50
+ add_offset=False,
51
+ add_double_lag_acorr=False
52
+ ):
53
+
54
+ assert frames_per_sample % 4 == 0
55
+
56
+ self.frame_size = 80
57
+ self.frames_per_sample = frames_per_sample
58
+ self.no_pitch_value = no_pitch_value
59
+ self.acorr_radius = acorr_radius
60
+ self.pitch_hangover = pitch_hangover
61
+ self.num_bands_clean_spec = num_bands_clean_spec
62
+ self.num_bands_noisy_spec = num_bands_noisy_spec
63
+ self.noisy_spec_scale = noisy_spec_scale
64
+ self.add_double_lag_acorr = add_double_lag_acorr
65
+
66
+ self.lpcs = np.fromfile(os.path.join(path, 'features_lpc.f32'), dtype=np.float32).reshape(-1, 16)
67
+ self.ltps = np.fromfile(os.path.join(path, 'features_ltp.f32'), dtype=np.float32).reshape(-1, 5)
68
+ self.periods = np.fromfile(os.path.join(path, 'features_period.s16'), dtype=np.int16)
69
+ self.gains = np.fromfile(os.path.join(path, 'features_gain.f32'), dtype=np.float32)
70
+ self.num_bits = np.fromfile(os.path.join(path, 'features_num_bits.s32'), dtype=np.int32)
71
+ self.num_bits_smooth = np.fromfile(os.path.join(path, 'features_num_bits_smooth.f32'), dtype=np.float32)
72
+ self.offsets = np.fromfile(os.path.join(path, 'features_offset.f32'), dtype=np.float32)
73
+ self.lpcnet_features = np.from_file(os.path.join(path, 'features_lpcnet.f32'), dtype=np.float32).reshape(-1, 36)
74
+
75
+ self.coded_signal = np.fromfile(os.path.join(path, 'coded.s16'), dtype=np.int16)
76
+
77
+ self.create_features = silk_feature_factory(no_pitch_value,
78
+ acorr_radius,
79
+ pitch_hangover,
80
+ num_bands_clean_spec,
81
+ num_bands_noisy_spec,
82
+ noisy_spec_scale,
83
+ noisy_apply_dct,
84
+ add_offset,
85
+ add_double_lag_acorr)
86
+
87
+ self.history_len = 700 if add_double_lag_acorr else 350
88
+ # discard some frames to have enough signal history
89
+ self.skip_frames = 4 * ((self.history_len + 319) // 320 + 2)
90
+
91
+ num_frames = self.clean_signal.shape[0] // 80 - self.skip_frames
92
+
93
+ self.len = num_frames // frames_per_sample
94
+
95
+ def __len__(self):
96
+ return self.len
97
+
98
+ def __getitem__(self, index):
99
+
100
+ frame_start = self.frames_per_sample * index + self.skip_frames
101
+ frame_stop = frame_start + self.frames_per_sample
102
+
103
+ signal_start = frame_start * self.frame_size - self.skip
104
+ signal_stop = frame_stop * self.frame_size - self.skip
105
+
106
+ coded_signal = self.coded_signal[signal_start : signal_stop].astype(np.float32) / 2**15
107
+
108
+ coded_signal_history = self.coded_signal[signal_start - self.history_len : signal_start].astype(np.float32) / 2**15
109
+
110
+ features, periods = self.create_features(
111
+ coded_signal,
112
+ coded_signal_history,
113
+ self.lpcs[frame_start : frame_stop],
114
+ self.gains[frame_start : frame_stop],
115
+ self.ltps[frame_start : frame_stop],
116
+ self.periods[frame_start : frame_stop],
117
+ self.offsets[frame_start : frame_stop]
118
+ )
119
+
120
+ lpcnet_features = self.lpcnet_features[frame_start // 2 : frame_stop // 2, :20]
121
+
122
+ num_bits = np.repeat(self.num_bits[frame_start // 4 : frame_stop // 4], 4).astype(np.float32).reshape(-1, 1)
123
+ num_bits_smooth = np.repeat(self.num_bits_smooth[frame_start // 4 : frame_stop // 4], 4).astype(np.float32).reshape(-1, 1)
124
+
125
+ numbits = np.concatenate((num_bits, num_bits_smooth), axis=-1)
126
+
127
+ return {
128
+ 'silk_features' : features,
129
+ 'periods' : periods.astype(np.int64),
130
+ 'numbits' : numbits.astype(np.float32),
131
+ 'lpcnet_features' : lpcnet_features
132
+ }
@@ -0,0 +1,140 @@
1
+ """
2
+ /* Copyright (c) 2023 Amazon
3
+ Written by Jan Buethe */
4
+ /*
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions
7
+ are met:
8
+
9
+ - Redistributions of source code must retain the above copyright
10
+ notice, this list of conditions and the following disclaimer.
11
+
12
+ - Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
20
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ */
28
+ """
29
+
30
+ import os
31
+
32
+ from torch.utils.data import Dataset
33
+ import numpy as np
34
+
35
+ from utils.silk_features import silk_feature_factory
36
+ from utils.pitch import hangover, calculate_acorr_window
37
+
38
+
39
+ class SilkEnhancementSet(Dataset):
40
+ def __init__(self,
41
+ path,
42
+ frames_per_sample=100,
43
+ no_pitch_value=256,
44
+ preemph=0.85,
45
+ skip=91,
46
+ acorr_radius=2,
47
+ pitch_hangover=8,
48
+ num_bands_clean_spec=64,
49
+ num_bands_noisy_spec=18,
50
+ noisy_spec_scale='opus',
51
+ noisy_apply_dct=True,
52
+ add_double_lag_acorr=False,
53
+ ):
54
+
55
+ assert frames_per_sample % 4 == 0
56
+
57
+ self.frame_size = 80
58
+ self.frames_per_sample = frames_per_sample
59
+ self.no_pitch_value = no_pitch_value
60
+ self.preemph = preemph
61
+ self.skip = skip
62
+ self.acorr_radius = acorr_radius
63
+ self.pitch_hangover = pitch_hangover
64
+ self.num_bands_clean_spec = num_bands_clean_spec
65
+ self.num_bands_noisy_spec = num_bands_noisy_spec
66
+ self.noisy_spec_scale = noisy_spec_scale
67
+ self.add_double_lag_acorr = add_double_lag_acorr
68
+
69
+ self.lpcs = np.fromfile(os.path.join(path, 'features_lpc.f32'), dtype=np.float32).reshape(-1, 16)
70
+ self.ltps = np.fromfile(os.path.join(path, 'features_ltp.f32'), dtype=np.float32).reshape(-1, 5)
71
+ self.periods = np.fromfile(os.path.join(path, 'features_period.s16'), dtype=np.int16)
72
+ self.gains = np.fromfile(os.path.join(path, 'features_gain.f32'), dtype=np.float32)
73
+ self.num_bits = np.fromfile(os.path.join(path, 'features_num_bits.s32'), dtype=np.int32)
74
+ self.num_bits_smooth = np.fromfile(os.path.join(path, 'features_num_bits_smooth.f32'), dtype=np.float32)
75
+
76
+ self.clean_signal_hp = np.fromfile(os.path.join(path, 'clean_hp.s16'), dtype=np.int16)
77
+ self.clean_signal = np.fromfile(os.path.join(path, 'clean.s16'), dtype=np.int16)
78
+ self.coded_signal = np.fromfile(os.path.join(path, 'coded.s16'), dtype=np.int16)
79
+
80
+ self.create_features = silk_feature_factory(no_pitch_value,
81
+ acorr_radius,
82
+ pitch_hangover,
83
+ num_bands_clean_spec,
84
+ num_bands_noisy_spec,
85
+ noisy_spec_scale,
86
+ noisy_apply_dct,
87
+ add_double_lag_acorr)
88
+
89
+ self.history_len = 700 if add_double_lag_acorr else 350
90
+ # discard some frames to have enough signal history
91
+ self.skip_frames = 4 * ((skip + self.history_len + 319) // 320 + 2)
92
+
93
+ num_frames = self.clean_signal_hp.shape[0] // 80 - self.skip_frames
94
+
95
+ self.len = num_frames // frames_per_sample
96
+
97
+ def __len__(self):
98
+ return self.len
99
+
100
+ def __getitem__(self, index):
101
+
102
+ frame_start = self.frames_per_sample * index + self.skip_frames
103
+ frame_stop = frame_start + self.frames_per_sample
104
+
105
+ signal_start = frame_start * self.frame_size - self.skip
106
+ signal_stop = frame_stop * self.frame_size - self.skip
107
+
108
+ clean_signal_hp = self.clean_signal_hp[signal_start : signal_stop].astype(np.float32) / 2**15
109
+ clean_signal = self.clean_signal[signal_start : signal_stop].astype(np.float32) / 2**15
110
+ coded_signal = self.coded_signal[signal_start : signal_stop].astype(np.float32) / 2**15
111
+
112
+ coded_signal_history = self.coded_signal[signal_start - self.history_len : signal_start].astype(np.float32) / 2**15
113
+
114
+ features, periods = self.create_features(
115
+ coded_signal,
116
+ coded_signal_history,
117
+ self.lpcs[frame_start : frame_stop],
118
+ self.gains[frame_start : frame_stop],
119
+ self.ltps[frame_start : frame_stop],
120
+ self.periods[frame_start : frame_stop]
121
+ )
122
+
123
+ if self.preemph > 0:
124
+ clean_signal[1:] -= self.preemph * clean_signal[: -1]
125
+ clean_signal_hp[1:] -= self.preemph * clean_signal_hp[: -1]
126
+ coded_signal[1:] -= self.preemph * coded_signal[: -1]
127
+
128
+ num_bits = np.repeat(self.num_bits[frame_start // 4 : frame_stop // 4], 4).astype(np.float32).reshape(-1, 1)
129
+ num_bits_smooth = np.repeat(self.num_bits_smooth[frame_start // 4 : frame_stop // 4], 4).astype(np.float32).reshape(-1, 1)
130
+
131
+ numbits = np.concatenate((num_bits, num_bits_smooth), axis=-1)
132
+
133
+ return {
134
+ 'features' : features,
135
+ 'periods' : periods.astype(np.int64),
136
+ 'target_orig' : clean_signal.astype(np.float32),
137
+ 'target' : clean_signal_hp.astype(np.float32),
138
+ 'signals' : coded_signal.reshape(-1, 1).astype(np.float32),
139
+ 'numbits' : numbits.astype(np.float32)
140
+ }
@@ -0,0 +1,103 @@
1
+ import torch
2
+ from tqdm import tqdm
3
+ import sys
4
+
5
+ def train_one_epoch(model, criterion, optimizer, dataloader, device, scheduler, log_interval=10):
6
+
7
+ model.to(device)
8
+ model.train()
9
+
10
+ running_loss = 0
11
+ previous_running_loss = 0
12
+
13
+
14
+ with tqdm(dataloader, unit='batch', file=sys.stdout) as tepoch:
15
+
16
+ for i, batch in enumerate(tepoch):
17
+
18
+ # set gradients to zero
19
+ optimizer.zero_grad()
20
+
21
+
22
+ # push batch to device
23
+ for key in batch:
24
+ batch[key] = batch[key].to(device)
25
+
26
+ target = batch['target']
27
+
28
+ # calculate model output
29
+ output = model(batch['signals'].permute(0, 2, 1), batch['features'], batch['periods'], batch['numbits'])
30
+
31
+ # calculate loss
32
+ if isinstance(output, list):
33
+ loss = torch.zeros(1, device=device)
34
+ for y in output:
35
+ loss = loss + criterion(target, y.squeeze(1))
36
+ loss = loss / len(output)
37
+ else:
38
+ loss = criterion(target, output.squeeze(1))
39
+
40
+ # calculate gradients
41
+ loss.backward()
42
+
43
+ # update weights
44
+ optimizer.step()
45
+
46
+ # update learning rate
47
+ scheduler.step()
48
+
49
+ # sparsification
50
+ if hasattr(model, 'sparsifier'):
51
+ model.sparsifier()
52
+
53
+ # update running loss
54
+ running_loss += float(loss.cpu())
55
+
56
+ # update status bar
57
+ if i % log_interval == 0:
58
+ tepoch.set_postfix(running_loss=f"{running_loss/(i + 1):8.7f}", current_loss=f"{(running_loss - previous_running_loss)/log_interval:8.7f}")
59
+ previous_running_loss = running_loss
60
+
61
+
62
+ running_loss /= len(dataloader)
63
+
64
+ return running_loss
65
+
66
+ def evaluate(model, criterion, dataloader, device, log_interval=10):
67
+
68
+ model.to(device)
69
+ model.eval()
70
+
71
+ running_loss = 0
72
+ previous_running_loss = 0
73
+
74
+
75
+ with torch.no_grad():
76
+ with tqdm(dataloader, unit='batch', file=sys.stdout) as tepoch:
77
+
78
+ for i, batch in enumerate(tepoch):
79
+
80
+ # push batch to device
81
+ for key in batch:
82
+ batch[key] = batch[key].to(device)
83
+
84
+ target = batch['target']
85
+
86
+ # calculate model output
87
+ output = model(batch['signals'].permute(0, 2, 1), batch['features'], batch['periods'], batch['numbits'])
88
+
89
+ # calculate loss
90
+ loss = criterion(target, output.squeeze(1))
91
+
92
+ # update running loss
93
+ running_loss += float(loss.cpu())
94
+
95
+ # update status bar
96
+ if i % log_interval == 0:
97
+ tepoch.set_postfix(running_loss=f"{running_loss/(i + 1):8.7f}", current_loss=f"{(running_loss - previous_running_loss)/log_interval:8.7f}")
98
+ previous_running_loss = running_loss
99
+
100
+
101
+ running_loss /= len(dataloader)
102
+
103
+ return running_loss