├── .gitignore ├── LICENSE ├── README.md ├── mmse ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── mmse.py ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR5_sp01.wav ├── readme.md ├── results │ ├── mmse_0.png │ ├── mmse_10.png │ ├── mmse_15.png │ ├── mmse_5.png │ └── readme.md └── sp01.wav ├── mmse_log ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── mmse_log.py ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR5_sp01.wav ├── readme.md ├── results │ ├── mmse_log_0.png │ ├── mmse_log_10.png │ ├── mmse_log_15.png │ ├── mmse_log_5.png │ └── readme.md └── sp01.wav ├── mmse_log_spu ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── in_TIMIT_1_TEST-White+5db.wav ├── mmse_log_spu.py ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR5_sp01.wav ├── readme.md ├── results │ ├── log_mmse_spu_0.png │ ├── log_mmse_spu_10.png │ ├── log_mmse_spu_15.png │ ├── log_mmse_spu_5.png │ └── readme.md └── sp01.wav ├── mmse_noise_estimation ├── Est_Noises.py ├── Init_Noises.py ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── in_TIMIT_10_TEST-Babble+5db.wav ├── in_TIMIT_10_TEST-White+5db.wav ├── in_TIMIT_10_TEST.wav ├── in_TIMIT_1_TEST-Babble+5db.wav ├── in_TIMIT_1_TEST-White+5db.wav ├── in_TIMIT_1_TEST.wav ├── in_babble.wav ├── in_train.wav ├── mmse_noise_estimation.py ├── mmse_noise_estimation_TIMIT.py ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR5_sp01.wav ├── out_TIMIT_1_TEST-Babble+5db.wav ├── out_TIMIT_1_TEST-White+5db.wav ├── out_babble_ConMinTrack.wav ├── out_babble_MCRA.wav ├── out_babble_MCRA2.wav ├── out_babble_Weight.wav ├── out_train_ConMinTrack.wav ├── out_train_MCRA.wav ├── out_train_MCRA2.wav ├── out_train_Weight.wav ├── readme.md ├── results │ ├── Continuous_0.png │ ├── Continuous_10.png │ ├── Continuous_15.png │ ├── Continuous_5.png │ ├── MCRA2_0.png │ ├── MCRA2_10.png │ ├── MCRA2_15.png │ ├── MCRA2_5.png │ ├── MCRA_0.png │ ├── MCRA_10.png │ ├── MCRA_15.png │ ├── MCRA_5.png │ ├── Weight_0.png │ ├── Weight_10.png │ ├── Weight_15.png │ ├── Weight_5.png │ └── readme.md ├── results_TIMIT │ ├── MMSE_Babble_ConMinTrack.png │ ├── MMSE_Babble_MCRA.png │ ├── MMSE_Babble_MCRA2.png │ ├── MMSE_Babble_Weight.png │ ├── MMSE_White_ConMinTrack.png │ ├── MMSE_White_MCRA.png │ ├── MMSE_White_MCRA2.png │ ├── MMSE_White_Weight.png │ └── readme.md └── sp01.wav ├── mmse_spu ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── mmse_spu.py ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR5_sp01.wav ├── readme.md ├── results │ ├── mmse_pro_0.png │ ├── mmse_pro_10.png │ ├── mmse_pro_15.png │ ├── mmse_pro_5.png │ └── readme.md └── sp01.wav ├── spectral_subtraction ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── in_train.wav ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR5_sp01.wav ├── out_train.wav ├── readme.md ├── results │ ├── Spectral Subtraction_0.png │ ├── Spectral Subtraction_10.png │ ├── Spectral Subtraction_15.png │ ├── Spectral Subtraction_5.png │ └── readme.md ├── sp01.wav └── spectral_subtraction.py ├── spectral_subtraction_noise_estimation ├── Est_Noises.py ├── Init_Noises.py ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── in_TIMIT_10_TEST-Babble+5db.wav ├── in_TIMIT_10_TEST-White+5db.wav ├── in_TIMIT_10_TEST.wav ├── in_TIMIT_1_TEST-Babble+5db.wav ├── in_TIMIT_1_TEST-White+5db.wav ├── in_TIMIT_1_TEST.wav ├── in_babble.wav ├── in_train.wav ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR5_sp01.wav ├── out_TIMIT_1_TEST-Babble+5db.wav ├── out_TIMIT_1_TEST-White+5db.wav ├── out_babble_ConMinTrack.wav ├── out_babble_MCRA.wav ├── out_babble_MCRA2.wav ├── out_babble_Weight.wav ├── out_train_ConMinTrack.wav ├── out_train_MCRA.wav ├── out_train_MCRA2.wav ├── out_train_Weight.wav ├── readme.md ├── results │ ├── Continuous_0.png │ ├── Continuous_10.png │ ├── Continuous_15.png │ ├── Continuous_5.png │ ├── MCRA2_0.png │ ├── MCRA2_10.png │ ├── MCRA2_15.png │ ├── MCRA2_5.png │ ├── MCRA_0.png │ ├── MCRA_10.png │ ├── MCRA_15.png │ ├── MCRA_5.png │ ├── Weight_0.png │ ├── Weight_10.png │ ├── Weight_15.png │ ├── Weight_5.png │ └── readme.md ├── results_TIMIT │ ├── SS_Babble_ConMinTrack.png │ ├── SS_Babble_MCRA.png │ ├── SS_Babble_MCRA2.png │ ├── SS_Babble_Weight.png │ ├── SS_White_ConMinTrack.png │ ├── SS_White_MCRA.png │ ├── SS_White_MCRA2.png │ ├── SS_White_Weight.png │ └── readme.md ├── sp01.wav ├── spectral_subtraction_noise_estimation.py └── spectral_subtraction_noise_estimation_TIMIT.py ├── spectral_subtraction_os ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── in_babble.wav ├── in_train.wav ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR15_sp0100.wav ├── out_SNR5_sp01.wav ├── out_babble.wav ├── out_train.wav ├── readme.md ├── results │ ├── over_sub_0.png │ ├── over_sub_10.png │ ├── over_sub_15.png │ ├── over_sub_5.png │ └── readme.md ├── sp01.wav └── spectral_subtraction_os.py ├── speech_enhancement_theory_and_practice ├── MATLAB_code.rar ├── Speech_Enhancement_Theory_and_Practice_The_First_Edition.pdf ├── Speech_Enhancement_Theory_and_Practice_The_Second_Edition.pdf └── readme.md ├── speech_quality_objective_evaluation ├── Get_ESTOI.m ├── Get_PESQ │ ├── DC_block.m │ ├── FFTNXCorr.m │ ├── Get_PESQ.m │ ├── Get_SSNR.m │ ├── PESQ.m │ ├── apply_VAD.m │ ├── apply_filter.m │ ├── apply_filters.m │ ├── crude_align.m │ ├── fix_power_level.m │ ├── id_searchwindows.m │ ├── id_utterances.m │ ├── input_filter.m │ ├── pesq_psychoacoustic_model.m │ ├── pow_of.m │ ├── readme.md │ ├── setup_global.m │ ├── split_align.m │ ├── time_align.m │ ├── utterance_locate.m │ └── utterance_split.m ├── SoundZone_Tools-master │ ├── .gitignore │ ├── ALcons2STI.m │ ├── ArbitraryOctaveFilt.m │ ├── COSHdist.m │ ├── ConcatTIMITtalkers.m │ ├── Correlated_Normalisation.m │ ├── Dropbox.m │ ├── IRcompactingKirkebyFilter.m │ ├── LICENSE │ ├── LTASS.m │ ├── MiKTeX_FNDB_Refresh.m │ ├── README.md │ ├── STI.m │ ├── STI_BandFilters.m │ ├── addNoise.m │ ├── buildDocumentation.m │ ├── buildReleaseZIP.m │ ├── confidence_intervals.m │ ├── estoi.m │ ├── extractIR.m │ ├── fconv.m │ ├── fdeconv.m │ ├── generateNoise.m │ ├── getAllFiles.m │ ├── interpFromVal_2D.m │ ├── interpVal.m │ ├── interpVal_2D.m │ ├── invFIR.m │ ├── invSweepFFT.m │ ├── invimplms.m │ ├── invsweepfft.mat │ ├── keepFilesFromFolder.m │ ├── octaveBandMean.m │ ├── pesq.exe │ ├── pesq2.m │ ├── pesq3.m │ ├── pesq_NoResFile.exe │ ├── pesq_mex.mexw64 │ ├── pesq_mex_fast.mexw64 │ ├── pesq_mex_fast_vec.m │ ├── pesq_mex_vec.m │ ├── printHyperlink.m │ ├── repmatmatch.m │ ├── shapeSpectrum.m │ ├── showTimeToCompletion.m │ ├── simpleWarning.m │ ├── sineSweepLin.m │ ├── stoi.m │ ├── stoi_d2percCorr.m │ ├── synthSweep.m │ ├── toepsolveMEX.mexw64 │ └── wait_for_file.m ├── bin │ ├── LogSD_AR.exe │ ├── LogSD_FFT.exe │ ├── PESQ_LQ.exe │ ├── SSNR.exe │ ├── estoi.m │ ├── find_dat.m │ ├── find_wav.m │ ├── obj_evaluation │ │ ├── DC_block.m │ │ ├── FFTNXCorr.m │ │ ├── addnoise_asl.asv │ │ ├── addnoise_asl.m │ │ ├── apply_VAD.m │ │ ├── apply_filter.m │ │ ├── apply_filters.m │ │ ├── comp_cep.asv │ │ ├── comp_cep.m │ │ ├── comp_fwseg.asv │ │ ├── comp_fwseg.m │ │ ├── comp_fwseg_mars.asv │ │ ├── comp_fwseg_mars.m │ │ ├── comp_fwseg_variant.asv │ │ ├── comp_fwseg_variant.m │ │ ├── comp_is.asv │ │ ├── comp_is.m │ │ ├── comp_llr.asv │ │ ├── comp_llr.m │ │ ├── comp_snr.asv │ │ ├── comp_snr.m │ │ ├── comp_wss.asv │ │ ├── comp_wss.m │ │ ├── composite.asv │ │ ├── composite.m │ │ ├── crude_align.m │ │ ├── enhanced.wav │ │ ├── fix_power_level.m │ │ ├── id_searchwindows.m │ │ ├── id_utterances.m │ │ ├── input_filter.m │ │ ├── none │ │ ├── pesq.m │ │ ├── pesq_psychoacoustic_model.m │ │ ├── pow_of.m │ │ ├── readme.pdf │ │ ├── readme.txt │ │ ├── setup_global.m │ │ ├── sp04.wav │ │ ├── sp04_babble_sn10.wav │ │ ├── split_align.m │ │ ├── time_align.m │ │ ├── utterance_locate.m │ │ ├── utterance_split.m │ │ └── white_noise.wav │ ├── res_eva.m │ ├── res_imp.m │ ├── stoi.m │ └── work.m ├── clean_speech │ └── readme.md ├── enhanced_speech │ └── readme.md ├── estoi.m ├── readme.md ├── runLSD.m ├── runPESQ.m ├── runSSNR.m ├── runSSNR1.m └── runSTOI.m ├── wiener_filtering ├── TIMIT_1_TEST-F16+5db.wav ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── in_babble.wav ├── in_train.wav ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR5_sp01.wav ├── out_TIMIT_1_TEST-F16+5db.wav ├── readme.md ├── results │ ├── mel_0.png │ ├── mel_10.png │ ├── mel_15.png │ ├── mel_5.png │ └── readme.md ├── sp01.wav ├── wiener_filtering.py └── wiener_filtering_phase.py ├── wiener_filtering_noise_estimation ├── Est_Noises.py ├── Init_Noises.py ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── in_TIMIT_10_TEST-Babble+5db.wav ├── in_TIMIT_10_TEST-White+5db.wav ├── in_TIMIT_10_TEST.wav ├── in_TIMIT_1_TEST-Babble+5db.wav ├── in_TIMIT_1_TEST-White+5db.wav ├── in_TIMIT_1_TEST.wav ├── in_babble.wav ├── in_train.wav ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR5_sp01.wav ├── out_TIMIT_1_TEST-Babble+5db.wav ├── out_TIMIT_1_TEST-White+5db.wav ├── out_babble_ConMinTrack.wav ├── out_babble_MCRA.wav ├── out_babble_MCRA2.wav ├── out_babble_Weight.wav ├── out_train_ConMinTrack.wav ├── out_train_MCRA.wav ├── out_train_MCRA2.wav ├── out_train_Weight.wav ├── readme.md ├── results │ ├── Continuous_0.png │ ├── Continuous_10.png │ ├── Continuous_15.png │ ├── Continuous_5.png │ ├── MCRA2_0.png │ ├── MCRA2_10.png │ ├── MCRA2_15.png │ ├── MCRA2_5.png │ ├── MCRA_0.png │ ├── MCRA_10.png │ ├── MCRA_15.png │ ├── MCRA_5.png │ ├── Weight_0.png │ ├── Weight_10.png │ ├── Weight_15.png │ ├── Weight_5.png │ └── readme.md ├── results_TIMIT │ ├── WF_Babble_ConMinTrack.png │ ├── WF_Babble_MCRA.png │ ├── WF_Babble_MCRA2.png │ ├── WF_Babble_Weight.png │ ├── WF_White_ConMinTrack.png │ ├── WF_White_MCRA.png │ ├── WF_White_MCRA2.png │ ├── WF_White_Weight.png │ └── readme.md ├── sp01.wav ├── wiener_filtering_noise_estimation.py └── wiener_filtering_noise_estimation_TIMIT.py └── wiener_filtering_os ├── in_SNR0_sp01.wav ├── in_SNR10_sp01.wav ├── in_SNR15_sp01.wav ├── in_SNR5_sp01.wav ├── in_babble.wav ├── in_train.wav ├── out_SNR0_sp01.wav ├── out_SNR10_sp01.wav ├── out_SNR15_sp01.wav ├── out_SNR15_sp01000.wav ├── out_SNR5_sp01.wav ├── readme.md ├── results ├── OS_mel_0.png ├── OS_mel_10.png ├── OS_mel_15.png ├── OS_mel_5.png └── readme.md ├── sp01.wav ├── wiener_filtering_os.py └── wiener_filtering_os1.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | .pytest_cache/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | db.sqlite3 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # Environments 85 | .env 86 | .venv 87 | env/ 88 | venv/ 89 | ENV/ 90 | env.bak/ 91 | venv.bak/ 92 | 93 | # Spyder project settings 94 | .spyderproject 95 | .spyproject 96 | 97 | # Rope project settings 98 | .ropeproject 99 | 100 | # mkdocs documentation 101 | /site 102 | 103 | # mypy 104 | .mypy_cache/ 105 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 vipchengrui 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # traditional-speech-enhancement 2 | 3 | Spectral Subtraction, Wiener Filtering, MMSE 4 | 5 | ## References 6 | 7 | [1] Loizou, Philipos C. . *Speech Enhancement: Theory and Practice*. CRC Press, Inc. 2007. 8 | -------------------------------------------------------------------------------- /mmse/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse/results/mmse_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/results/mmse_0.png -------------------------------------------------------------------------------- /mmse/results/mmse_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/results/mmse_10.png -------------------------------------------------------------------------------- /mmse/results/mmse_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/results/mmse_15.png -------------------------------------------------------------------------------- /mmse/results/mmse_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/results/mmse_5.png -------------------------------------------------------------------------------- /mmse/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse/sp01.wav -------------------------------------------------------------------------------- /mmse_log/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse_log/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse_log/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse_log/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse_log/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse_log/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse_log/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse_log/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse_log/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse_log/results/mmse_log_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/results/mmse_log_0.png -------------------------------------------------------------------------------- /mmse_log/results/mmse_log_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/results/mmse_log_10.png -------------------------------------------------------------------------------- /mmse_log/results/mmse_log_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/results/mmse_log_15.png -------------------------------------------------------------------------------- /mmse_log/results/mmse_log_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/results/mmse_log_5.png -------------------------------------------------------------------------------- /mmse_log/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse_log/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log/sp01.wav -------------------------------------------------------------------------------- /mmse_log_spu/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse_log_spu/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse_log_spu/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse_log_spu/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse_log_spu/in_TIMIT_1_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/in_TIMIT_1_TEST-White+5db.wav -------------------------------------------------------------------------------- /mmse_log_spu/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse_log_spu/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse_log_spu/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse_log_spu/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse_log_spu/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse_log_spu/results/log_mmse_spu_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/results/log_mmse_spu_0.png -------------------------------------------------------------------------------- /mmse_log_spu/results/log_mmse_spu_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/results/log_mmse_spu_10.png -------------------------------------------------------------------------------- /mmse_log_spu/results/log_mmse_spu_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/results/log_mmse_spu_15.png -------------------------------------------------------------------------------- /mmse_log_spu/results/log_mmse_spu_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/results/log_mmse_spu_5.png -------------------------------------------------------------------------------- /mmse_log_spu/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse_log_spu/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_log_spu/sp01.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/Init_Noises.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import scipy.interpolate as itp 3 | import math 4 | 5 | # Weighted spectral average 6 | class Init_Weight(object): 7 | 8 | def __init__(self,ns_ps,fs): 9 | self.ns_ps = ns_ps 10 | self.fs = fs 11 | 12 | def info(self): 13 | parameters = {'ass':0.85 , 'beta':1.5 , 'noise_ps':self.ns_ps , 'P':self.ns_ps} 14 | return parameters 15 | 16 | # Continuous minimal tracking 17 | class Init_ConMinTrack(object): 18 | 19 | def __init__(self,ns_ps,fs): 20 | self.ns_ps = ns_ps 21 | self.fs = fs 22 | 23 | def info(self): 24 | len_val = len(self.ns_ps) 25 | parameters = {'n':2,'leng':len_val,'alpha':0.7,'beta':0.96,'gamma':0.998,\ 26 | 'noise_ps':self.ns_ps,'pxk_old':self.ns_ps,'pxk':self.ns_ps,'pnk_old':self.ns_ps,'pnk':self.ns_ps} 27 | return parameters 28 | 29 | # MCRA algorithm 30 | class Init_MCRA(object): 31 | 32 | def __init__(self,ns_ps,fs): 33 | self.ns_ps = ns_ps 34 | self.fs = fs 35 | 36 | def info(self): 37 | len_val = len(self.ns_ps) 38 | parameters = {'n':2,'ad':0.95,'ass':0.8,'L':1000*2//20,'delta':5,'ap':0.2,'leng':len_val,\ 39 | 'P':self.ns_ps,'Pmin':self.ns_ps,'Ptmp':self.ns_ps,'pk':np.zeros(len_val),'noise_ps':self.ns_ps} 40 | return parameters 41 | 42 | # MCRA2 algorithm 43 | class Init_MCRA2(object): 44 | 45 | def __init__(self,ns_ps,fs): 46 | self.ns_ps = ns_ps 47 | self.fs = fs 48 | 49 | def info(self): 50 | len_val = len(self.ns_ps) 51 | freq_res = self.fs / len_val 52 | k_1khz = int(1000 // freq_res) 53 | k_3khz = int(3000 // freq_res) 54 | 55 | # [9.60] delta 56 | low_1 = 2*np.ones(k_1khz,dtype=np.int), 57 | low_2 = 2*np.ones(k_3khz-k_1khz,dtype=np.int), 58 | high = 5*np.ones(len_val//2-k_3khz,dtype=np.int), 59 | delta_val = np.append(np.append(np.append(np.append(np.append(low_1,low_2),high),high),low_2),low_1) 60 | 61 | parameters = {'n':2,'leng':len_val,'ad':0.95,'ass':0.8,'ap':0.2,'beta':0.8,'beta1':0.98,'gamma':0.998,'alpha':0.7,\ 62 | 'delta':delta_val,'pk':np.zeros(len_val),'noise_ps':self.ns_ps,'pxk_old':self.ns_ps,'pxk':self.ns_ps,'pnk_old':self.ns_ps,'pnk':self.ns_ps} 63 | 64 | return parameters 65 | 66 | ''' 67 | # Minimum Statistics Algorithm 68 | class Init_MS(object): 69 | 70 | def __init__(self,ns_ps): 71 | self.ns_ps = ns_ps 72 | 73 | def info(self): 74 | len_val = len(self.ns_ps) 75 | L_val = len_val 76 | R_val = len_val / 2 77 | D_val = 150 78 | V_val = 15 79 | Um_val = 10 80 | Av_val = 2.12 81 | alpha_max_val = 0.96 82 | alpha_min_val = 0.3 83 | beta_max_val = 0.8 84 | x_val = [1 , 2 , 5 , 8 , 10 , 15 , 20 , 30 , 40 , 60 , 80 , 120 , 140 , 160] 85 | Y_M_val = [0 , 0.26 , 0.48 , 0.58 , 0.61 , 0.668 , 0.705 , 0.762 , 0.8 , 0.841 , 0.865 , 0.89 , 0.9 , 0.91] 86 | Y_H_val = [0 , 0.15 , 0.48 , 0.78 , 0.98 , 1.55 , 2.0 , 2.3 , 2.52 , 2.9 , 3.25 , 4.0 , 4.1 , 4.1] 87 | xi_val = D_val 88 | M_D_val = itp.spline(x_val , Y_M_val , xi_val) #interpolate 89 | H_D_val = itp.spline(x_val , Y_H_val , xi_val) 90 | xi_val = V_val 91 | M_V_val = itp.spline(x_val , Y_M_val , xi_val) 92 | H_V_val = itp.spline(x_val , Y_H_val , xi_val) 93 | 94 | #minact_val[1 : L_val , 1 : Um_val]=np.maximum(self.ns_ps) 95 | 96 | parameters = {'n' : 2 , 'len' : len_val , 'alpha_corr' : 0.96 , 'alpha' : 0.96*np.ones(len_val) , 'P' : self.ns_ps , \ 97 | 'noise_ps' : self.ns_ps , 'Pbar' : self.ns_ps , 'Psqbar' : self.ns_ps , 'actmin' : self.ns_ps , 'actmin_sub' : self.ns_ps ,\ 98 | 'Pmin_u' : self.ns_ps , 'subwc' : 2 , 'u' : 1 , 'lmin_flag' : np.zeros(len_val) , 'L' : L_val ,\ 99 | 'R' : R_val , 'D' : D_val ,'V' : V_val , 'Um' : Um_val , 'Av' : Av_val , 'alpha_max' : alpha_max_val ,\ 100 | 'alpha_min' : alpha_min_val , 'beta_max' : beta_max_val , 'Y_M' : Y_M_val , 'Y_H' : Y_H_val , 'M_D' : M_D_val ,\ 101 | 'H_D' : H_D_val , 'M_V' : M_V_val , 'H_V' : H_V_val} 102 | 103 | return parameters 104 | ''' -------------------------------------------------------------------------------- /mmse_noise_estimation/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_TIMIT_10_TEST-Babble+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_TIMIT_10_TEST-Babble+5db.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_TIMIT_10_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_TIMIT_10_TEST-White+5db.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_TIMIT_10_TEST.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_TIMIT_10_TEST.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_TIMIT_1_TEST-Babble+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_TIMIT_1_TEST-Babble+5db.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_TIMIT_1_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_TIMIT_1_TEST-White+5db.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_TIMIT_1_TEST.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_TIMIT_1_TEST.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_babble.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_babble.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/in_train.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/in_train.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_TIMIT_1_TEST-Babble+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_TIMIT_1_TEST-Babble+5db.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_TIMIT_1_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_TIMIT_1_TEST-White+5db.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_babble_ConMinTrack.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_babble_ConMinTrack.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_babble_MCRA.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_babble_MCRA.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_babble_MCRA2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_babble_MCRA2.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_babble_Weight.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_babble_Weight.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_train_ConMinTrack.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_train_ConMinTrack.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_train_MCRA.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_train_MCRA.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_train_MCRA2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_train_MCRA2.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/out_train_Weight.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/out_train_Weight.wav -------------------------------------------------------------------------------- /mmse_noise_estimation/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse_noise_estimation/results/Continuous_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/Continuous_0.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/Continuous_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/Continuous_10.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/Continuous_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/Continuous_15.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/Continuous_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/Continuous_5.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/MCRA2_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/MCRA2_0.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/MCRA2_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/MCRA2_10.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/MCRA2_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/MCRA2_15.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/MCRA2_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/MCRA2_5.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/MCRA_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/MCRA_0.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/MCRA_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/MCRA_10.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/MCRA_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/MCRA_15.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/MCRA_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/MCRA_5.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/Weight_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/Weight_0.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/Weight_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/Weight_10.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/Weight_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/Weight_15.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/Weight_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results/Weight_5.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse_noise_estimation/results_TIMIT/MMSE_Babble_ConMinTrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results_TIMIT/MMSE_Babble_ConMinTrack.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results_TIMIT/MMSE_Babble_MCRA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results_TIMIT/MMSE_Babble_MCRA.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results_TIMIT/MMSE_Babble_MCRA2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results_TIMIT/MMSE_Babble_MCRA2.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results_TIMIT/MMSE_Babble_Weight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results_TIMIT/MMSE_Babble_Weight.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results_TIMIT/MMSE_White_ConMinTrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results_TIMIT/MMSE_White_ConMinTrack.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results_TIMIT/MMSE_White_MCRA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results_TIMIT/MMSE_White_MCRA.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results_TIMIT/MMSE_White_MCRA2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results_TIMIT/MMSE_White_MCRA2.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results_TIMIT/MMSE_White_Weight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/results_TIMIT/MMSE_White_Weight.png -------------------------------------------------------------------------------- /mmse_noise_estimation/results_TIMIT/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse_noise_estimation/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_noise_estimation/sp01.wav -------------------------------------------------------------------------------- /mmse_spu/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse_spu/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse_spu/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse_spu/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse_spu/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /mmse_spu/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /mmse_spu/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /mmse_spu/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /mmse_spu/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse_spu/results/mmse_pro_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/results/mmse_pro_0.png -------------------------------------------------------------------------------- /mmse_spu/results/mmse_pro_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/results/mmse_pro_10.png -------------------------------------------------------------------------------- /mmse_spu/results/mmse_pro_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/results/mmse_pro_15.png -------------------------------------------------------------------------------- /mmse_spu/results/mmse_pro_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/results/mmse_pro_5.png -------------------------------------------------------------------------------- /mmse_spu/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mmse_spu/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/mmse_spu/sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction/in_train.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/in_train.wav -------------------------------------------------------------------------------- /spectral_subtraction/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction/out_train.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/out_train.wav -------------------------------------------------------------------------------- /spectral_subtraction/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /spectral_subtraction/results/Spectral Subtraction_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/results/Spectral Subtraction_0.png -------------------------------------------------------------------------------- /spectral_subtraction/results/Spectral Subtraction_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/results/Spectral Subtraction_10.png -------------------------------------------------------------------------------- /spectral_subtraction/results/Spectral Subtraction_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/results/Spectral Subtraction_15.png -------------------------------------------------------------------------------- /spectral_subtraction/results/Spectral Subtraction_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/results/Spectral Subtraction_5.png -------------------------------------------------------------------------------- /spectral_subtraction/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /spectral_subtraction/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction/sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_TIMIT_10_TEST-Babble+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_TIMIT_10_TEST-Babble+5db.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_TIMIT_10_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_TIMIT_10_TEST-White+5db.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_TIMIT_10_TEST.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_TIMIT_10_TEST.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_TIMIT_1_TEST-Babble+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_TIMIT_1_TEST-Babble+5db.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_TIMIT_1_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_TIMIT_1_TEST-White+5db.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_TIMIT_1_TEST.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_TIMIT_1_TEST.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_babble.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_babble.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/in_train.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/in_train.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_TIMIT_1_TEST-Babble+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_TIMIT_1_TEST-Babble+5db.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_TIMIT_1_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_TIMIT_1_TEST-White+5db.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_babble_ConMinTrack.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_babble_ConMinTrack.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_babble_MCRA.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_babble_MCRA.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_babble_MCRA2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_babble_MCRA2.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_babble_Weight.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_babble_Weight.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_train_ConMinTrack.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_train_ConMinTrack.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_train_MCRA.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_train_MCRA.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_train_MCRA2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_train_MCRA2.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/out_train_Weight.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/out_train_Weight.wav -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/Continuous_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/Continuous_0.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/Continuous_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/Continuous_10.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/Continuous_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/Continuous_15.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/Continuous_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/Continuous_5.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/MCRA2_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/MCRA2_0.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/MCRA2_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/MCRA2_10.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/MCRA2_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/MCRA2_15.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/MCRA2_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/MCRA2_5.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/MCRA_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/MCRA_0.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/MCRA_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/MCRA_10.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/MCRA_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/MCRA_15.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/MCRA_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/MCRA_5.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/Weight_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/Weight_0.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/Weight_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/Weight_10.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/Weight_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/Weight_15.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/Weight_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results/Weight_5.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results_TIMIT/SS_Babble_ConMinTrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results_TIMIT/SS_Babble_ConMinTrack.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results_TIMIT/SS_Babble_MCRA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results_TIMIT/SS_Babble_MCRA.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results_TIMIT/SS_Babble_MCRA2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results_TIMIT/SS_Babble_MCRA2.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results_TIMIT/SS_Babble_Weight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results_TIMIT/SS_Babble_Weight.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results_TIMIT/SS_White_ConMinTrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results_TIMIT/SS_White_ConMinTrack.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results_TIMIT/SS_White_MCRA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results_TIMIT/SS_White_MCRA.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results_TIMIT/SS_White_MCRA2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results_TIMIT/SS_White_MCRA2.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results_TIMIT/SS_White_Weight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/results_TIMIT/SS_White_Weight.png -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/results_TIMIT/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /spectral_subtraction_noise_estimation/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_noise_estimation/sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/in_babble.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/in_babble.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/in_train.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/in_train.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/out_SNR15_sp0100.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/out_SNR15_sp0100.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/out_babble.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/out_babble.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/out_train.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/out_train.wav -------------------------------------------------------------------------------- /spectral_subtraction_os/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /spectral_subtraction_os/results/over_sub_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/results/over_sub_0.png -------------------------------------------------------------------------------- /spectral_subtraction_os/results/over_sub_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/results/over_sub_10.png -------------------------------------------------------------------------------- /spectral_subtraction_os/results/over_sub_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/results/over_sub_15.png -------------------------------------------------------------------------------- /spectral_subtraction_os/results/over_sub_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/results/over_sub_5.png -------------------------------------------------------------------------------- /spectral_subtraction_os/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /spectral_subtraction_os/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/spectral_subtraction_os/sp01.wav -------------------------------------------------------------------------------- /speech_enhancement_theory_and_practice/MATLAB_code.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_enhancement_theory_and_practice/MATLAB_code.rar -------------------------------------------------------------------------------- /speech_enhancement_theory_and_practice/Speech_Enhancement_Theory_and_Practice_The_First_Edition.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_enhancement_theory_and_practice/Speech_Enhancement_Theory_and_Practice_The_First_Edition.pdf -------------------------------------------------------------------------------- /speech_enhancement_theory_and_practice/Speech_Enhancement_Theory_and_Practice_The_Second_Edition.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_enhancement_theory_and_practice/Speech_Enhancement_Theory_and_Practice_The_Second_Edition.pdf -------------------------------------------------------------------------------- /speech_enhancement_theory_and_practice/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_ESTOI.m: -------------------------------------------------------------------------------- 1 | clear all 2 | 3 | cleanFile = 'cleanSpeech\TIMIT_201_TEST.wav'; 4 | [x,FS0] = audioread(cleanFile); 5 | 6 | x = x(1:4820096); 7 | 8 | enhancedFile_1 = 'Weiner+UnwrappedPhase_201\out_Weiner_UP_201_TEST-White-5db.wav'; 9 | [y1,FS1] = audioread(enhancedFile_1); 10 | d1 = estoi(x, y1, 8000); 11 | 12 | enhancedFile_2 = 'Weiner+UnwrappedPhase_201\out_Weiner_UP_201_TEST-White+0db.wav'; 13 | [y2,FS2] = audioread(enhancedFile_2); 14 | d2 = estoi(x, y2, 8000); 15 | 16 | enhancedFile_3 = 'Weiner+UnwrappedPhase_201\out_Weiner_UP_201_TEST-White+5db.wav'; 17 | [y3,FS3] = audioread(enhancedFile_3); 18 | d3 = estoi(x, y3, 8000); 19 | 20 | enhancedFile_4 = 'Weiner+UnwrappedPhase_201\out_Weiner_UP_201_TEST-White+10db.wav'; 21 | [y4,FS4] = audioread(enhancedFile_4); 22 | d4 = estoi(x, y4, 8000); -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/DC_block.m: -------------------------------------------------------------------------------- 1 | function mod_data= DC_block( data, Nsamples) 2 | 3 | global Downsample DATAPADDING_MSECS SEARCHBUFFER 4 | 5 | ofs= SEARCHBUFFER* Downsample; 6 | mod_data= data; 7 | 8 | %compute dc component, it is a little weird 9 | facc= sum( data( ofs+ 1: Nsamples- ofs))/ Nsamples; 10 | mod_data( ofs+ 1: Nsamples- ofs)= data( ofs+ 1: Nsamples- ofs)- facc; 11 | 12 | mod_data( ofs+ 1: ofs+ Downsample)= mod_data( ofs+ 1: ofs+ Downsample).* ... 13 | ( 0.5+ (0: Downsample- 1))/ Downsample; 14 | 15 | mod_data( Nsamples- ofs: -1: Nsamples- ofs-Downsample+ 1)= ... 16 | mod_data( Nsamples- ofs: -1: Nsamples- ofs-Downsample+ 1).* ... 17 | ( 0.5+ (0: Downsample- 1))/ Downsample; 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/FFTNXCorr.m: -------------------------------------------------------------------------------- 1 | function Y= FFTNXCorr( ref_VAD, startr, nr, deg_VAD, startd, nd) 2 | % this function has other simple implementations, current implementation is 3 | % consistent with the C version 4 | 5 | % one way to do this (in time domain) ===== 6 | x1= ref_VAD( startr: startr+ nr- 1); 7 | x2= deg_VAD( startd: startd+ nd- 1); 8 | x1= fliplr( x1); 9 | Y= conv( x2, x1); 10 | % done ===== 11 | 12 | % % the other way to do this (in freq domain)=== 13 | % Nx= 2^ (ceil( log2( max( nr, nd)))); 14 | % x1= zeros( 1, 2* Nx); 15 | % x2= zeros( 1, 2* Nx); 16 | % x1( 1: nr)= fliplr( ref_VAD( startr: startr+ nr- 1)); 17 | % x2( 1: nd)= deg_VAD( startd: startd+ nd- 1); 18 | % 19 | % if (nr== 491) 20 | % fid= fopen( 'mat_debug.txt', 'wt'); 21 | % fprintf( fid, '%f\n', x1); 22 | % fclose( fid); 23 | % end 24 | % 25 | % x1_fft= fft( x1, 2* Nx); 26 | % x2_fft= fft( x2, 2* Nx); 27 | % 28 | % tmp1= ifft( x1_fft.* x2_fft, 2* Nx); 29 | % 30 | % Ny= nr+ nd- 1; 31 | % Y= tmp1( 1: Ny); 32 | % % done =========== 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/Get_PESQ.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/Get_PESQ/Get_PESQ.m -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/Get_SSNR.m: -------------------------------------------------------------------------------- 1 | clear 2 | cleanFile = 'DataSet/TIMIT_10_TEST-White+5db.wav'; 3 | enhancedFile_1 = 'Enhanced/out_TIMIT_10_TEST_IRMDNN_0308_10.wav'; 4 | [snr_mean, segsnr_mean]= comp_snr(cleanFile, enhancedFile_1); 5 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/apply_filter.m: -------------------------------------------------------------------------------- 1 | function align_filtered= apply_filter( data, data_Nsamples, align_filter_dB) 2 | 3 | global Downsample DATAPADDING_MSECS SEARCHBUFFER Fs 4 | 5 | align_filtered= data; 6 | n= data_Nsamples- 2* SEARCHBUFFER* Downsample+ DATAPADDING_MSECS* (Fs/ 1000); 7 | % now find the next power of 2 which is greater or equal to n 8 | pow_of_2= 2^ (ceil( log2( n))); 9 | 10 | [number_of_points, trivial]= size( align_filter_dB); 11 | overallGainFilter= interp1( align_filter_dB( :, 1), align_filter_dB( :, 2), ... 12 | 1000); 13 | 14 | x= zeros( 1, pow_of_2); 15 | x( 1: n)= data( SEARCHBUFFER* Downsample+ 1: SEARCHBUFFER* Downsample+ n); 16 | 17 | x_fft= fft( x, pow_of_2); 18 | 19 | freq_resolution= Fs/ pow_of_2; 20 | 21 | factorDb( 1: pow_of_2/2+ 1)= interp1( align_filter_dB( :, 1), ... 22 | align_filter_dB( :, 2), (0: pow_of_2/2)* freq_resolution)- ... 23 | overallGainFilter; 24 | factor= 10.^ (factorDb/ 20); 25 | 26 | factor= [factor, fliplr( factor( 2: pow_of_2/2))]; 27 | x_fft= x_fft.* factor; 28 | 29 | y= ifft( x_fft, pow_of_2); 30 | 31 | align_filtered( SEARCHBUFFER* Downsample+ 1: SEARCHBUFFER* Downsample+ n)... 32 | = y( 1: n); 33 | 34 | % fid= fopen( 'log_mat.txt', 'wt'); 35 | % fprintf( fid, '%f\n', y( 1: n)); 36 | % fclose( fid); 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/apply_filters.m: -------------------------------------------------------------------------------- 1 | function mod_data= apply_filters( data, Nsamples) 2 | %IIRFilt( InIIR_Hsos, InIIR_Nsos, data, data_Nsamples); 3 | 4 | global InIIR_Hsos InIIR_Nsos DATAPADDING_MSECS Fs 5 | % data_Nsamples= Nsamples+ DATAPADDING_MSECS* (Fs/ 1000); 6 | 7 | % now we construct the second order section matrix 8 | sosMatrix= zeros( InIIR_Nsos, 6); 9 | sosMatrix( :, 4)= 1; %set a(1) to 1 10 | % each row of sosMatrix holds [b(1*3) a(1*3)] for each section 11 | sosMatrix( :, 1: 3)= InIIR_Hsos( :, 1: 3); 12 | sosMatrix( :, 5: 6)= InIIR_Hsos( :, 4: 5); 13 | %sosMatrix 14 | 15 | % now we construct second order section direct form II filter 16 | iirdf2= dfilt.df2sos( sosMatrix); 17 | 18 | mod_data= filter( iirdf2, data); 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/crude_align.m: -------------------------------------------------------------------------------- 1 | function crude_align( ref_logVAD, ref_Nsamples, deg_logVAD, ... 2 | deg_Nsamples, Utt_id) 3 | 4 | global Downsample 5 | global Nutterances Largest_uttsize Nsurf_samples Crude_DelayEst 6 | global Crude_DelayConf UttSearch_Start UttSearch_End Utt_DelayEst 7 | global Utt_Delay Utt_DelayConf Utt_Start Utt_End 8 | global MAXNUTTERANCES WHOLE_SIGNAL 9 | global pesq_mos subj_mos cond_nr 10 | 11 | if (Utt_id== WHOLE_SIGNAL ) 12 | nr = floor( ref_Nsamples/ Downsample); 13 | nd = floor( deg_Nsamples/ Downsample); 14 | startr= 1; 15 | startd= 1; 16 | elseif Utt_id== MAXNUTTERANCES 17 | startr= UttSearch_Start(MAXNUTTERANCES); 18 | startd= startr+ Utt_DelayEst(MAXNUTTERANCES)/ Downsample; 19 | if ( startd<= 0 ) 20 | startr= 1- Utt_DelayEst(MAXNUTTERANCES)/ Downsample; 21 | startd= 1; 22 | end 23 | 24 | nr= UttSearch_End(MAXNUTTERANCES)- startr; 25 | nd= nr; 26 | 27 | if( startd+ nd> floor( deg_Nsamples/ Downsample) ) 28 | nd= floor( deg_Nsamples/ Downsample)- startd; 29 | end 30 | % fprintf( 'nr,nd is %d,%d\n', nr, nd); 31 | 32 | else 33 | startr= UttSearch_Start(Utt_id); 34 | startd= startr+ Crude_DelayEst/ Downsample; 35 | 36 | if ( startd<= 0 ) 37 | startr= 1- Crude_DelayEst/ Downsample; 38 | startd= 1; 39 | end 40 | 41 | nr= UttSearch_End(Utt_id)- startr; 42 | nd = nr; 43 | if( startd+ nd> floor( deg_Nsamples/ Downsample)+ 1) 44 | nd = floor( deg_Nsamples/ Downsample)- startd+ 1; 45 | end 46 | end 47 | 48 | max_Y= 0.0; 49 | I_max_Y= nr; 50 | if( (nr> 1) && (nd> 1) ) 51 | Y= FFTNXCorr( ref_logVAD, startr, nr, deg_logVAD, startd, nd); 52 | [max_Y, I_max_Y]= max( Y); 53 | if (max_Y<= 0) 54 | max_Y= 0; 55 | I_max_Y= nr; 56 | end 57 | end 58 | 59 | % fprintf( 'max_Y, I_max_Y is %f, %d\n', max_Y, I_max_Y); 60 | 61 | if( Utt_id== WHOLE_SIGNAL ) 62 | Crude_DelayEst= (I_max_Y- nr)* Downsample; 63 | Crude_DelayConf= 0.0; 64 | % fprintf( 1, 'I_max_Y, nr, Crude_DelayEst is %f, %f, %f\n', ... 65 | % I_max_Y, nr, Crude_DelayEst); 66 | elseif( Utt_id == MAXNUTTERANCES ) 67 | Utt_Delay(MAXNUTTERANCES)= (I_max_Y- nr)* Downsample+ ... 68 | Utt_DelayEst(MAXNUTTERANCES); 69 | % fprintf( 'startr, startd, nr, nd, I_max, Utt_Delay[%d] is %d, %d, %d, %d, %d, %d\n', ... 70 | % MAXNUTTERANCES, startr, startd, nr, nd, ... 71 | % I_max_Y, Utt_Delay(MAXNUTTERANCES) ); 72 | else 73 | % fprintf( 'I_max_Y, nr is %d, %d\n', I_max_Y, nr); 74 | Utt_DelayEst(Utt_id)= (I_max_Y- nr)* Downsample+ ... 75 | Crude_DelayEst; 76 | end 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/fix_power_level.m: -------------------------------------------------------------------------------- 1 | function mod_data= fix_power_level( data, data_Nsamples, maxNsamples) 2 | % this function is used for level normalization, i.e., to fix the power 3 | % level of data to a preset number, and return it to mod_data. 4 | 5 | global Downsample DATAPADDING_MSECS SEARCHBUFFER Fs 6 | global TARGET_AVG_POWER 7 | TARGET_AVG_POWER= 1e7; 8 | 9 | align_filter_dB= [0,-500; 50, -500; 100, -500; 125, -500; 160, -500; 200, -500; 10 | 250, -500; 300, -500; 350, 0; 400, 0; 500, 0; 600, 0; 630, 0; 11 | 800, 0; 1000, 0; 1250, 0; 1600, 0; 2000, 0; 2500, 0; 3000, 0; 12 | 3250, 0; 3500, -500; 4000, -500; 5000, -500; 6300, -500; 8000, -500]; 13 | 14 | align_filtered= apply_filter( data, data_Nsamples, align_filter_dB); 15 | power_above_300Hz = pow_of (align_filtered, SEARCHBUFFER* Downsample+ 1, ... 16 | data_Nsamples- SEARCHBUFFER* Downsample+ DATAPADDING_MSECS* (Fs/ 1000), ... 17 | maxNsamples- 2* SEARCHBUFFER* Downsample+ DATAPADDING_MSECS* (Fs/ 1000)); 18 | 19 | global_scale= sqrt( TARGET_AVG_POWER/ power_above_300Hz); 20 | % fprintf( 1, '\tglobal_scale is %f\n', global_scale); 21 | mod_data= data* global_scale; 22 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/id_searchwindows.m: -------------------------------------------------------------------------------- 1 | function id_searchwindows( ref_VAD, ref_Nsamples, deg_VAD, deg_Nsamples); 2 | 3 | global MINUTTLENGTH Downsample MINUTTLENGTH SEARCHBUFFER 4 | global Crude_DelayEst Nutterances UttSearch_Start UttSearch_End 5 | 6 | Utt_num = 1; 7 | speech_flag = 0; 8 | 9 | VAD_length= floor( ref_Nsamples/ Downsample); 10 | del_deg_start= MINUTTLENGTH- Crude_DelayEst/ Downsample; 11 | del_deg_end= floor((deg_Nsamples- Crude_DelayEst)/ Downsample)-... 12 | MINUTTLENGTH; 13 | 14 | for count= 1: VAD_length 15 | VAD_value= ref_VAD(count); 16 | if( (VAD_value> 0) && (speech_flag== 0) ) 17 | speech_flag= 1; 18 | this_start= count; 19 | UttSearch_Start(Utt_num)= count- SEARCHBUFFER; 20 | if( UttSearch_Start(Utt_num)< 0 ) 21 | UttSearch_Start(Utt_num)= 0; 22 | end 23 | end 24 | 25 | if( ((VAD_value== 0) || (count == (VAD_length-1))) && ... 26 | (speech_flag == 1) ) 27 | speech_flag = 0; 28 | UttSearch_End(Utt_num) = count + SEARCHBUFFER; 29 | if( UttSearch_End(Utt_num) > VAD_length - 1 ) 30 | UttSearch_End(Utt_num) = VAD_length -1; 31 | end 32 | 33 | if( ((count - this_start) >= MINUTTLENGTH) &&... 34 | (this_start < del_deg_end) &&... 35 | (count > del_deg_start) ) 36 | Utt_num= Utt_num + 1; 37 | end 38 | end 39 | end 40 | Utt_num= Utt_num- 1; 41 | Nutterances = Utt_num; 42 | 43 | % fprintf( 1, 'Nutterances is %d\n', Nutterances); 44 | 45 | % fid= fopen( 'mat_utt.txt', 'wt'); 46 | % fprintf( fid, '%d\n', UttSearch_Start( 1: Nutterances)); 47 | % fprintf( fid, '\n'); 48 | % fprintf( fid, '%d\n', UttSearch_End( 1: Nutterances)); 49 | % fclose(fid); 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/id_utterances.m: -------------------------------------------------------------------------------- 1 | function id_utterances( ref_Nsamples, ref_VAD, deg_Nsamples) 2 | 3 | global Largest_uttsize MINUTTLENGTH MINUTTLENGTH Crude_DelayEst 4 | global Downsample SEARCHBUFFER Nutterances Utt_Start 5 | global Utt_End Utt_Delay 6 | 7 | Utt_num = 1; 8 | speech_flag = 0; 9 | VAD_length = floor( ref_Nsamples / Downsample); 10 | % fprintf( 1, 'VAD_length is %d\n', VAD_length); 11 | 12 | del_deg_start = MINUTTLENGTH - Crude_DelayEst / Downsample; 13 | del_deg_end = floor((deg_Nsamples- Crude_DelayEst)/ Downsample) ... 14 | - MINUTTLENGTH; 15 | 16 | for count = 1: VAD_length 17 | VAD_value = ref_VAD(count); 18 | if( (VAD_value > 0.0) && (speech_flag == 0) ) 19 | speech_flag = 1; 20 | this_start = count; 21 | Utt_Start (Utt_num) = count; 22 | end 23 | 24 | if( ((VAD_value == 0) || (count == VAD_length)) && ... 25 | (speech_flag == 1) ) 26 | speech_flag = 0; 27 | Utt_End (Utt_num) = count; 28 | 29 | if( ((count - this_start) >= MINUTTLENGTH) && ... 30 | (this_start < del_deg_end) && ... 31 | (count > del_deg_start) ) 32 | Utt_num = Utt_num + 1; 33 | end 34 | end 35 | end 36 | 37 | Utt_Start(1) = SEARCHBUFFER+ 1; 38 | Utt_End(Nutterances) = VAD_length - SEARCHBUFFER+ 1; 39 | 40 | for Utt_num = 2: Nutterances 41 | this_start = Utt_Start(Utt_num)- 1; 42 | last_end = Utt_End(Utt_num - 1)- 1; 43 | count = floor( (this_start + last_end) / 2); 44 | Utt_Start(Utt_num) = count+ 1; 45 | Utt_End(Utt_num - 1) = count+ 1; 46 | end 47 | 48 | this_start = (Utt_Start(1)- 1) * Downsample + Utt_Delay(1); 49 | if( this_start < (SEARCHBUFFER * Downsample) ) 50 | count = SEARCHBUFFER + floor( ... 51 | (Downsample - 1 - Utt_Delay(1)) / Downsample); 52 | Utt_Start(1) = count+ 1; 53 | end 54 | 55 | last_end = (Utt_End(Nutterances)- 1) * Downsample + 1 + ... 56 | Utt_Delay(Nutterances); 57 | % fprintf( 'Utt_End(%d) is %d\n', Nutterances, Utt_End(Nutterances)); 58 | % fprintf( 'last_end is %d\n', last_end); 59 | % fprintf( 'Utt_Delay(%d) is %d\n', Nutterances, Utt_Delay(Nutterances)); 60 | if( last_end > (deg_Nsamples - SEARCHBUFFER * Downsample+ 1) ) 61 | count = floor( (deg_Nsamples - Utt_Delay(Nutterances)) / Downsample) ... 62 | - SEARCHBUFFER; 63 | Utt_End(Nutterances) = count+ 1; 64 | end 65 | 66 | for Utt_num = 2: Nutterances 67 | this_start = (Utt_Start(Utt_num)- 1) * Downsample + Utt_Delay(Utt_num); 68 | last_end = (Utt_End(Utt_num - 1)- 1) * Downsample + Utt_Delay(Utt_num - 1); 69 | if( this_start < last_end ) 70 | count = floor( (this_start + last_end) / 2); 71 | this_start = floor( (Downsample- 1+ count- Utt_Delay(Utt_num))... 72 | / Downsample); 73 | last_end = floor( (count - Utt_Delay(Utt_num - 1))... 74 | / Downsample); 75 | Utt_Start(Utt_num) = this_start+ 1; 76 | Utt_End(Utt_num- 1) = last_end+ 1; 77 | end 78 | end 79 | 80 | Largest_uttsize= max( Utt_End- Utt_Start); 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/input_filter.m: -------------------------------------------------------------------------------- 1 | function [mod_ref_data, mod_deg_data]= input_filter( ref_data, ref_Nsamples, ... 2 | deg_data, deg_Nsamples) 3 | 4 | mod_ref_data= DC_block( ref_data, ref_Nsamples); 5 | mod_deg_data= DC_block( deg_data, deg_Nsamples); 6 | 7 | mod_ref_data= apply_filters( mod_ref_data, ref_Nsamples); 8 | mod_deg_data= apply_filters( mod_deg_data, deg_Nsamples); 9 | 10 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/pow_of.m: -------------------------------------------------------------------------------- 1 | function power= pow_of( data, start_point, end_point, divisor) 2 | 3 | power= sum( data( start_point: end_point).^ 2)/ divisor; -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/readme.md: -------------------------------------------------------------------------------- 1 | ## Get PESQ 2 | 3 | Used for PESQ independent evaluation of speech 4 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/time_align.m: -------------------------------------------------------------------------------- 1 | function time_align(ref_data, ref_Nsamples, ... 2 | deg_data, deg_Nsamples, Utt_id) 3 | 4 | global Utt_DelayEst Utt_Delay Utt_DelayConf UttSearch_Start UttSearch_End 5 | global Align_Nfft Downsample Window 6 | 7 | estdelay = Utt_DelayEst(Utt_id); 8 | 9 | H = zeros( 1, Align_Nfft); 10 | X1= zeros( 1, Align_Nfft); 11 | X2= zeros( 1, Align_Nfft); 12 | 13 | startr = (UttSearch_Start(Utt_id)- 1)* Downsample+ 1; 14 | startd = startr + estdelay; 15 | if ( startd < 0 ) 16 | startr = 1 -estdelay; 17 | startd = 1; 18 | end 19 | 20 | while( ((startd + Align_Nfft) <= deg_Nsamples) && ... 21 | ((startr + Align_Nfft) <= ((UttSearch_End(Utt_id)- 1) * Downsample)) ) 22 | X1= ref_data( startr: startr+ Align_Nfft- 1).* Window; 23 | X2= deg_data( startd: startd+ Align_Nfft- 1).* Window; 24 | 25 | % find cross-correlation between X1 and X2 26 | X1_fft= fft( X1, Align_Nfft ); 27 | X1_fft_conj= conj( X1_fft); 28 | X2_fft= fft( X2, Align_Nfft ); 29 | X1= ifft( X1_fft_conj.* X2_fft, Align_Nfft ); 30 | 31 | X1= abs( X1); 32 | v_max = max( X1)* 0.99; 33 | 34 | X1_greater_vmax= find( X1 > v_max ); 35 | H( X1_greater_vmax )= H( X1_greater_vmax )+ v_max^ 0.125; 36 | 37 | startr = startr+ Align_Nfft/ 4; 38 | startd = startd+ Align_Nfft/ 4; 39 | 40 | end 41 | 42 | X1= H; 43 | X2= 0; 44 | Hsum = sum( H); 45 | 46 | X2(1) = 1.0; 47 | kernel = Align_Nfft / 64; 48 | 49 | for count= 2: kernel 50 | X2( count)= 1- (count- 1)/ kernel; 51 | X2( Align_Nfft- count+ 2)= 1- (count- 1)/ kernel; 52 | end 53 | 54 | X1_fft= fft( X1, Align_Nfft ); 55 | X2_fft= fft( X2, Align_Nfft ); 56 | 57 | X1= ifft( X1_fft.* X2_fft, Align_Nfft ); 58 | 59 | if (Hsum> 0) 60 | H= abs( X1)/ Hsum; 61 | else 62 | H= 0; 63 | end 64 | 65 | [v_max, I_max] = max( H); 66 | if( I_max- 1 >= (Align_Nfft/2) ) 67 | I_max = I_max- Align_Nfft; 68 | end 69 | 70 | Utt_Delay(Utt_id) = estdelay + I_max- 1; 71 | Utt_DelayConf(Utt_id) = v_max; % confidence 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/Get_PESQ/utterance_locate.m: -------------------------------------------------------------------------------- 1 | function utterance_locate (ref_data, ref_Nsamples, ref_VAD, ref_logVAD,... 2 | deg_data, deg_Nsamples, deg_VAD, deg_logVAD); 3 | 4 | global Nutterances Utt_Delay Utt_DelayConf Utt_Start Utt_End Utt_DelayEst 5 | 6 | id_searchwindows( ref_VAD, ref_Nsamples, deg_VAD, deg_Nsamples); 7 | 8 | for Utt_id= 1: Nutterances 9 | %fprintf( 1, 'Utt_id is %d\n', Utt_id); 10 | crude_align( ref_logVAD, ref_Nsamples, deg_logVAD, deg_Nsamples, Utt_id); 11 | time_align(ref_data, ref_Nsamples, ... 12 | deg_data, deg_Nsamples, Utt_id); 13 | end 14 | 15 | id_utterances( ref_Nsamples, ref_VAD, deg_Nsamples); 16 | 17 | 18 | utterance_split( ref_data, ref_Nsamples, ref_VAD, ref_logVAD, ... 19 | deg_data, deg_Nsamples, deg_VAD, deg_logVAD); 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/.gitignore: -------------------------------------------------------------------------------- 1 | /populate_readme.m 2 | 3 | /*.zip -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/ALcons2STI.m: -------------------------------------------------------------------------------- 1 | function [ STIval ] = ALcons2STI( ALcons ) 2 | % Converts Articulation Loss of Consonants (ALcons) to the Speech Transmission Index (STI) 3 | % 4 | % Syntax: [STIval] = ALcons2STI( ALcons ) 5 | % Pass the Articulation Loss of Consonants (ALcons) value to the 6 | % function to retrieve the STI value. 7 | % 8 | % Inputs: 9 | % ALcons - Articulation Loss of Consonants value 10 | % 11 | % Outputs: 12 | % STIval - Corresponding Speech Transmission Index value 13 | % 14 | % 15 | % Author: Jacob Donley 16 | % University of Wollongong 17 | % Email: jrd089@uowmail.edu.au 18 | % Version: 1.0 (12 April 2017) 19 | % Version: 0.1 (30 September 2015) 20 | % 21 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 22 | 23 | STIval = -0.1845 * log(ALcons) + 0.9482; 24 | 25 | end 26 | 27 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/ArbitraryOctaveFilt.m: -------------------------------------------------------------------------------- 1 | function y = ArbitraryOctaveFilt(x, SPECT, FREQS, N, fs, octBandwidth) 2 | % Filters a signal with any arbitrary spectrum smoothed with any fractional octave band average 3 | % 4 | % Syntax: Y = ARBITRARYOCTAVEFILT(X, SPECT, FREQS, N, FS, OCTBANDWIDTH) 5 | % 6 | % Inputs: 7 | % x - Input signal to filter as a vector 8 | % SPECT - The spectrum to shape the input signal to 9 | % FREQS - The frequencies of each SPECT element 10 | % N - The length of the filter to usee 11 | % fs - Description 12 | % octBandwidth - Description 13 | % 14 | % Outputs: 15 | % y - Description 16 | % 17 | % Example: 18 | % fs = 16000; 19 | % T = 10; 20 | % N = 1000; 21 | % f = linspace(0,fs/2,N); 22 | % s = 1./f; 23 | % x = wgn(T*fs,1,0); 24 | % y = ArbitraryOctaveFilt(x,s,f,N,fs,1/3); 25 | % pwelch([x y]); 26 | % 27 | % See also: fir2, filter 28 | 29 | % Author: Jacob Donley 30 | % University of Wollongong 31 | % Email: jrd089@uowmail.edu.au 32 | % Copyright: Jacob Donley 2017 33 | % Date: 06 June 2016 34 | % Revision: 0.1 35 | % 36 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37 | if nargin < 6 38 | octBandwidth = 1/6; 39 | end 40 | 41 | % Find nth-octave averages 42 | [MAG,f]=Tools.octaveBandMean(SPECT,FREQS,octBandwidth); 43 | 44 | % Force even length filter 45 | if isempty(N), if mod(length(SPECT),2), N=length(SPECT)-1; else N=length(SPECT); end; end 46 | % Design arbitrary magnitude (linear-phase) filter 47 | b = fir2(N,f/(fs/2),MAG); 48 | % Apply filter 49 | y = filter(b,1,x); 50 | 51 | 52 | end -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/COSHdist.m: -------------------------------------------------------------------------------- 1 | function [E,Eps] = COSHdist(H,P) 2 | % Finds the symmetric Itakura-Saito distance using the hyperbolic cosine function 3 | % 4 | % Syntax: [OUTPUTARGS] = COSHDIST(INPUTARGS) Explain usage here 5 | % 6 | % Inputs: 7 | % input1 - Description 8 | % input2 - Description 9 | % input3 - Description 10 | % 11 | % Outputs: 12 | % output1 - Description 13 | % output2 - Description 14 | % 15 | % Example: 16 | % Line 1 of example 17 | % Line 2 of example 18 | % Line 3 of example 19 | % 20 | % See also: List related files here 21 | 22 | % Author: Jacob Donley 23 | % University of Wollongong 24 | % Email: jrd089@uowmail.edu.au 25 | % Copyright: Jacob Donley 2017 26 | % Date: 24 October 2016 27 | % Revision: 0.1 28 | % 29 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30 | 31 | [~,X]=size(P); 32 | Hx = repmat(H(:),1,X); 33 | 34 | % K = numel(H); 35 | % E = 1/K *... 36 | % sum( ... 37 | % abs(Hx)./P ... 38 | % - log( abs(Hx)./P ) ... 39 | % + P./abs(Hx) ... 40 | % - log( P./abs(Hx) ) ... 41 | % - 2 ) / 2; 42 | 43 | E = mean( cosh( log( Hx./P ) ) - 1 ); 44 | 45 | Eps = mean(E); 46 | 47 | end 48 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/ConcatTIMITtalkers.m: -------------------------------------------------------------------------------- 1 | function ConcatTIMITtalkers( TIMITdir, OutDir ) 2 | % Concatenates all the talkers from the TIMIT corpus into individual speech files 3 | % 4 | % Syntax: CONCATTIMITTALKERS( TIMITDIR, OUTDIR ) 5 | % 6 | % Inputs: 7 | % TIMITdir - The directory of the TIMIT corpus 8 | % OutDir - The output directory to save the concatenated speech files 9 | % 10 | % Example: 11 | % TIMITtlkrscat('C:\TIMIT_90\', '.\') 12 | % 13 | % See also: getAllFiles, audioread, audiowrite 14 | 15 | % Author: Jacob Donley 16 | % University of Wollongong 17 | % Email: jrd089@uowmail.edu.au 18 | % Copyright: Jacob Donley 2017 19 | % Date: 21 April 2017 20 | % Revision: 0.1 21 | % 22 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 23 | AudioExt = '.wav'; 24 | 25 | % Get all files in the TIMIT corpus 26 | AllFiles = getAllFiles( TIMITdir ); 27 | 28 | % Limit the list to only the WAV files and sort them 29 | WAVfiles = sort( AllFiles( contains(lower(AllFiles), AudioExt) ) ); 30 | 31 | % Reduce to just the unique talker directories 32 | TalkerDirs = unique(cellfun(@fileparts,WAVfiles,'un',0)); 33 | 34 | % Create the output directories if they don't exist 35 | OutDirs = strrep(TalkerDirs, TIMITdir, [fileparts(OutDir) filesep]); 36 | cellfun(@newDir,cellfun(@fileparts,OutDirs,'un',0),'un',0); 37 | 38 | % Partition the speech into the separate talkers 39 | PartDirs = cellfun(@(tds) WAVfiles(contains(WAVfiles,tds)),TalkerDirs,'un',0); 40 | 41 | % Concatenate all the speech files 42 | [Y, FS] = cellfun(@ReadCatAudio, PartDirs, 'un', 0); 43 | 44 | % Write all of the concatenated speech files to disk 45 | arrayfun(@(i) audiowrite([OutDirs{i} AudioExt], Y{i}, FS{i}), 1:numel(Y)); 46 | 47 | end 48 | 49 | function [y, Fs] = ReadCatAudio( filenames ) 50 | [Y, FS] = cellfun(@audioread,filenames,'un',0); 51 | if ~isequal(FS{:}),error('Different sampling frequencies detected.');end 52 | Y_=cellfun(@transpose,Y,'un',0); 53 | y = [Y_{:}]; Fs = FS{1}; 54 | end 55 | 56 | function newDir(dir) 57 | narginchk(1,1); 58 | if ~exist(dir,'dir'), mkdir(dir); end 59 | end 60 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/Correlated_Normalisation.m: -------------------------------------------------------------------------------- 1 | function [ X_Approx_Adjust, Scaling_Factor ] = correlated_normalisation( X, X_Approx ) 2 | % Matches the amplitude of X using cross-correlation 3 | % 4 | % Syntax: [ X_Approx_Adjust, Scaling_Factor ] = CORRELATED_NORMALISATION( X, X_Approx ) 5 | % 6 | % Inputs: 7 | % X - Original signal 8 | % X_Approx - Approximation of the original signal 9 | % 10 | % Outputs: 11 | % X_Approx_Adjust - The approximate signal with a magnitude closely 12 | % matching the original signal 13 | % Scaling_Factor - The adjustment factor required 14 | 15 | % Author: Jacob Donley 16 | % University of Wollongong 17 | % Email: jrd089@uowmail.edu.au 18 | % Copyright: Jacob Donley 2017 19 | % Date: 19 June 2015 20 | % Revision: 0.1 21 | % 22 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 23 | 24 | 25 | corr = xcorr( X, X_Approx); 26 | peakVal = max(abs(corr)); 27 | Energy = sum( X .^ 2 ); 28 | 29 | if isnan(peakVal) 30 | peakVal = mean([max(abs(X)), max(abs(X_Approx))]); 31 | end 32 | 33 | Scaling_Factor = peakVal / Energy; 34 | 35 | X_Approx_Adjust = X_Approx * 1/Scaling_Factor; 36 | 37 | end 38 | 39 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/Dropbox.m: -------------------------------------------------------------------------------- 1 | function [ res, cmd_out ] = Dropbox( action ) 2 | % Function to start and kill dropbox from MATLAB 3 | % 4 | % Syntax: [ res, cmd_out ] = Dropbox( action ) 5 | % 6 | % Inputs: 7 | % action - Action to perform. Either 'start' or 'kill. 8 | % 9 | % Outputs: 10 | % res - Command exit status 11 | % cmd_out - Output of the operating system command 12 | % 13 | % Author: Jacob Donley 14 | % University of Wollongong 15 | % Email: jrd089@uowmail.edu.au 16 | % Copyright: Jacob Donley 2017 17 | % Date: 3 October 2015 18 | % Revision: 0.1 19 | % 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | switch lower(action) 23 | case 'start' 24 | [res, cmd_out] = dos('start "" "%APPDATA%\Dropbox\bin\Dropbox.exe" & exit'); 25 | disp('... Started Dropbox'); 26 | 27 | case 'kill' 28 | [res, cmd_out] = dos('taskkill /F /IM Dropbox.exe'); 29 | if res==0, disp('Terminated Dropbox ...'); end 30 | 31 | otherwise 32 | error('Dropbox action not supported...'); 33 | end 34 | 35 | end 36 | 37 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/IRcompactingKirkebyFilter.m: -------------------------------------------------------------------------------- 1 | function [ filt ] = IRcompactingKirkebyFilter( ir, ir_len, f_band, fs, reg ) 2 | % Compacting Kirkeby Filter 3 | 4 | % Regularisation parameter 5 | ereg = epsreg(ir_len*fs,f_band,fs,reg); 6 | 7 | % Time-packing filtering 8 | H = fft(ir, ir_len*fs); 9 | 10 | C = conj(H) ./ (conj(H).*H + ereg); 11 | 12 | filt = ifft(C); 13 | 14 | end 15 | 16 | function ereg = epsreg(Nfft, f_band, fs, reg) 17 | f1=f_band(1); 18 | f2=f_band(2); 19 | reg_in=reg(1); 20 | reg_out=reg(2); 21 | if f1 > 0 && f2 < fs/2 22 | freq=(0:fs/(Nfft-1):fs/2)'; 23 | f1e=f1-f1/3; 24 | f2e=f2+f2/3; 25 | if f1e < freq(1) 26 | f1e=f1; 27 | f1=f1+1; 28 | end 29 | if f2e > freq(end) 30 | f2e=f2+1; 31 | end 32 | % regularization B with 1/3 octave interpolated transient edges 33 | B=interp1([0 f1e f1 f2 f2e freq(end)],[reg_out reg_out reg_in reg_in reg_out reg_out],freq,'PCHIP'); 34 | B = db2mag(-B); % from dB to linear 35 | B=vertcat(B,B(end:-1:1)); 36 | b=ifft(B,'symmetric'); 37 | b=circshift(b,Nfft/2); 38 | b=0.5*(1-cos(2*pi*(1:Nfft)'/(Nfft+1))).*b; 39 | b=minph(b); % make regularization minimum phase 40 | B=fft(b,Nfft); 41 | else 42 | B=0; 43 | end 44 | ereg = (conj(B).*B); 45 | end 46 | 47 | % calculate minimum phase component of impulse response 48 | function [h_min] = minph(h) 49 | n = length(h); 50 | h_cep = real(ifft(log(abs(fft(h(:,1)))))); 51 | odd = fix(rem(n,2)); 52 | wn = [1; 2*ones((n+odd)/2-1,1) ; ones(1-rem(n,2),1); zeros((n+odd)/2-1,1)]; 53 | h_min = zeros(size(h(:,1))); 54 | h_min(:) = real(ifft(exp(fft(wn.*h_cep(:))))); 55 | if size(h,2)==2 56 | h_cep = real(ifft(log(abs(fft(h(:,2)))))); 57 | odd = fix(rem(n,2)); 58 | wn = [1; 2*ones((n+odd)/2-1,1) ; ones(1-rem(n,2),1); zeros((n+odd)/2-1,1)]; 59 | h_minr = zeros(size(h(:,2))); 60 | h_minr(:) = real(ifft(exp(fft(wn.*h_cep(:))))); 61 | h_min=[h_min h_minr]; 62 | end 63 | end -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/LTASS.m: -------------------------------------------------------------------------------- 1 | function [ spect, frqs ] = LTASS( speech_folder_OR_vec, nfft, fs ) 2 | % Computes the Long-Term Average Speech Spectrum from a folder of speech files or vector of speech samples 3 | % 4 | % Syntax: [ spect, frqs ] = LTASS( speech_folder_OR_vec, nfft ) 5 | % 6 | % Inputs: 7 | % speech_folder_OR_vec - The path to the folder containing the speech 8 | % files OR a vector of concatenated speech signals 9 | % nfft - The number of FFT points used to compute the LTASS 10 | % fs - The sampling frequency to use (if not provided then the sampling 11 | % frequency of the file is used) 12 | % 13 | % Outputs: 14 | % spect - The LTASS spectrum 15 | % frqs - The frequency vector for the spectrum 16 | 17 | % Author: Jacob Donley 18 | % University of Wollongong 19 | % Email: jrd089@uowmail.edu.au 20 | % Copyright: Jacob Donley 2017 21 | % Date: 17 June 2016 22 | % Revision: 0.4 (30 March 2017) 23 | % 24 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25 | 26 | if isa(speech_folder_OR_vec,'char') % if a character array (string) 27 | % Just incase this function tries to call getAllFiles within a class folder we 28 | % should create a function handle for getAllFiles regardless 29 | inf = dbstack('-completenames'); 30 | funcName = 'getAllFiles'; 31 | funcPath = inf.file; 32 | classDirs = getClassDirs(funcPath); 33 | getAllFiles_ = str2func([classDirs funcName]); 34 | 35 | %% Start LTASS 36 | files = getAllFiles_(speech_folder_OR_vec); 37 | speech=[]; 38 | F = length(files); 39 | for file = 1:F 40 | try 41 | [audioSig,fs_] = audioread(files{file}); 42 | if nargin < 3, fs = fs_; end 43 | audioSig = audioSig ./ rms(audioSig(:)); 44 | catch err 45 | if strcmp(err.identifier, 'MATLAB:audiovideo:audioread:FileTypeNotSupported') 46 | continue; % Skip unsupported files 47 | end 48 | end 49 | speech = [speech; audioSig]; 50 | end 51 | if nargin < 2 52 | nfft = numel(speech); 53 | end 54 | if logical(mod(nfft,2)) % if isodd( nfft ) 55 | nfft = nfft-1; % Force nfft to be even so that pwelch returns normalised frequencies [0,...,1] 56 | end 57 | 58 | else 59 | speech = speech_folder_OR_vec; 60 | end 61 | 62 | %% 63 | win_=rectwin(nfft); 64 | ovlap = 0; 65 | 66 | [spect,frqs]=pwelch(speech,win_,nfft*ovlap,nfft,fs,'power'); % Power spectrum 67 | spect = sqrt(spect); % Magnitude spectrum 68 | 69 | end 70 | 71 | function classDirs = getClassDirs(FullPath) 72 | classDirs = ''; 73 | classes = strfind(FullPath,'+'); 74 | for c = 1:length(classes) 75 | clas = FullPath(classes(c):end); 76 | stp = strfind(clas,filesep); 77 | classDirs = [classDirs clas(2:stp(1)-1) '.']; 78 | end 79 | end -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/MiKTeX_FNDB_Refresh.m: -------------------------------------------------------------------------------- 1 | function [ res, cmd_out ] = MiKTeX_FNDB_Refresh( ) 2 | % Function to refresh the File Name DataBase in MiKTeX 3 | % 4 | % Syntax: [ res, cmd_out ] = MiKTeX_FNDB_Refresh() This is used after 5 | % exporting a file (i.e. figure) to a tex directory so that a direct comilation 6 | % of a tex document will show the updated files. 7 | % 8 | % Outputs: 9 | % res - Command exit status 10 | % cmd_out - Output of the operating system command 11 | % 12 | % Author: Jacob Donley 13 | % University of Wollongong 14 | % Email: jrd089@uowmail.edu.au 15 | % Copyright: Jacob Donley 2017 16 | % Date: 03 October 2015 17 | % Revision: 0.1 18 | % 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | 21 | [res, cmd_out] = system('initexmf --update-fndb'); 22 | disp('Refreshed MiKTeX FNDB'); 23 | 24 | end 25 | 26 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/STI.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/SoundZone_Tools-master/STI.m -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/STI_BandFilters.m: -------------------------------------------------------------------------------- 1 | function OctaveFilters = STI_BandFilters( N, fs ) 2 | % Calculation of the Speech Transmission Index (STI) Band Filters 3 | % 4 | % Syntax: OctaveFilters = STI_BandFilters( N, fs ) 5 | % This function calculates the Speech Transmission Index octave band 6 | % filters from 125Hz to 8kHz so they can be passed to the STI 7 | % function for faster computation. 8 | % 9 | % Inputs: 10 | % N - Filter order (recommended: 6) 11 | % fs - Sampling frequency of the STI inputs 12 | % 13 | % Outputs: 14 | % OctaveFilters - An array of octave band filters 15 | % 16 | % Example: 17 | % y=sinc(-7999:8000); 18 | % fs=16000; 19 | % N = 6; 20 | % H = STI_BandFilters( N, fs ) 21 | % tic; 22 | % [STIval,ALcons,STIval_,ALcons_]=STI(y,fs,H) 23 | % toc 24 | % [STIval,ALcons,STIval_,ALcons_]=STI(y,fs) 25 | % toc 26 | % 27 | % See also: STI.m 28 | 29 | % Author: Jacob Donley 30 | % University of Wollongong 31 | % Email: jrd089@uowmail.edu.au 32 | % Version: 1.0 (12 April 2017) 33 | % Version: 0.1 (30 September 2015) 34 | % 35 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 36 | 37 | BandsPerOctave = 1; 38 | F0 = 1000; % Center Frequency (Hz) 39 | f = fdesign.octave(BandsPerOctave,'Class 1','N,F0',N,F0,fs); 40 | F0 = validfrequencies(f); 41 | F0(F0<125 | F0>min([8000,fs/2]))=[]; % Only keep bands in the range required for the STI calculation 42 | Nfc = length(F0); 43 | 44 | for i=1:Nfc 45 | f.F0 = F0(i); 46 | OctaveFilters(i) = design(f,'butter'); 47 | end 48 | 49 | end 50 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/addNoise.m: -------------------------------------------------------------------------------- 1 | function [x_n] = addNoise( x, level, type ) 2 | % Adds a given level and type of noise to a signal 3 | % 4 | % Syntax: [x_n] = ADDNOISE( x, level, type ) Pass the signal, x, level 5 | % and type of noise to the function and x_n will be the resulting signal 6 | % with the noise added. 7 | % 8 | % Inputs: 9 | % x - The input signal to add noise to 10 | % level - The noise in dB relative to the input signal 11 | % type - The type of noise to add 12 | % 13 | % Outputs: 14 | % x_n - The noisey output signal 15 | % 16 | % 17 | % Author: Jacob Donley 18 | % University of Wollongong 19 | % Email: jrd089@uowmail.edu.au 20 | % Copyright: Jacob Donley 2017 21 | % Date: 21 August 2015 22 | % Revision: 0.1 23 | % 24 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25 | 26 | x_n = Tools.generateNoise( x, level, type, true); 27 | 28 | end 29 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/buildReleaseZIP.m: -------------------------------------------------------------------------------- 1 | function RelFiles = buildReleaseZIP( WorkingDir, zipFileName, MainFile, RelFiles, RuntimeDependencies ) 2 | % Creates a ZIP file of all release dependencies for a main file 3 | % 4 | % Syntax: BUILDRELEASEZIP( WORKINGDIR, ZIPFILENAME, MAINFILE, RUNTIMEDEPENDENCIES ) 5 | % 6 | % Inputs: 7 | % WorkingDir - The working directory of the project to release. 8 | % zipFileName - The name the final ZIP file. 9 | % MainFile - The path to the file for which to determine the 10 | % dependencies and consequently build the release 11 | % ZIP. 12 | % RelFiles - A list of files to release (the main file's 13 | % dependencies are added to this list). 14 | % RuntimeDependencies - If true, dependencies are found during a profiled 15 | % runtime. 16 | % 17 | % Outputs: 18 | % RelFiles - The final list of released files. 19 | % 20 | % Example: 21 | % wrkdir = 'C:\myProject\'; 22 | % zipFname = 'myProject_release'; 23 | % mainFile = 'C:\myProject\examples\fullyfledgedexample.m'; 24 | % buildReleaseZIP( wrkdir, zipFname, mainFile, {}, true ) 25 | % 26 | % See also: requiredFilesAndProducts, zip 27 | 28 | % Author: Jacob Donley 29 | % University of Wollongong 30 | % Email: jrd089@uowmail.edu.au 31 | % Copyright: Jacob Donley 2017 32 | % Date: 09 August 2017 33 | % Version: 1.1 (09 August 2017) 34 | % Version: 1.0 (07 May 2017) 35 | % 36 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37 | 38 | %% Get all dependencies of the main file 39 | flist = matlab.codetools.requiredFilesAndProducts( MainFile ); % Full dependency file list 40 | 41 | %% Get dependencies of the main file during runtime (includes anonymous functions and dynamic function handles) 42 | % The MATLAB profiler is used here and can take quite some time if the main file is slow to run 43 | if RuntimeDependencies 44 | profile on; % Turn the profiler on 45 | [p,f]=fileparts(MainFile); 46 | func = strrep(strrep([p filesep f],filesep,'.'),'+',''); % Deal with class folders and create function handle 47 | evalin('caller',[func ';']); % Assume file runs without arguments and run 48 | p = profile('info'); % Stop the profiler after execution and get the profiler information 49 | flist = [flist {p.FunctionTable.FileName}]; % Append the runtime functions to the list 50 | dbs=dbstack; % Get history of called functions for this runtime 51 | flist(contains(flist,{dbs.name})) = []; % Remove references to this function and parents 52 | end 53 | 54 | %% Only keep files in working directory 55 | RelFiles = unique([RelFiles(:)' flist(contains(flist,WorkingDir))]); % Release files 56 | 57 | %% Copy to temp directory so zipping retains folder structure 58 | newdirs = unique(cellfun(@fileparts, strrep(RelFiles, WorkingDir, ''),'un',0)); % Determine structure 59 | tmpdir = [tempname filesep]; % Get temp directory 60 | cellfun(@(a) mkdir( [tmpdir a] ), newdirs); % Create temp folder structure 61 | cellfun(@(a,b) copyfile(a,[tmpdir b]), RelFiles, strrep(RelFiles, WorkingDir, '')); % Copy 62 | 63 | %% Zip the entire folder 64 | zip(zipFileName, tmpdir, WorkingDir); 65 | 66 | %% Clean up 67 | rmdir(tmpdir,'s'); % Delete all the temporarily copied files 68 | 69 | end 70 | 71 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/confidence_intervals.m: -------------------------------------------------------------------------------- 1 | function [ Conf_intervals ] = confidence_intervals( samples, interval, islognorm ) 2 | % Find the confidence intervals for a set of data for use with the errorbar function in MATLAB 3 | % 4 | % Syntax: [Conf_intervals] = CONFIDENCE_INTERVALS( samples, interval ) 5 | % Pass the samples to the function with the desired confidence interval (95 6 | % for 95%). Samples should be in each row of a column where the column is 7 | % the dataset to analyse 8 | % 9 | % Inputs: 10 | % samples - A 1D or 2D array of samples where each column is a dataset 11 | % for which the confidence intervals are calculated. 12 | % interval - The confidence interval as a percentage (e.g. 95 for 95% 13 | % confidence intervals). 14 | % islognorm - Finds the confidence intervals using the log-normal 15 | % variance if set to TRUE. 16 | % 17 | % Outputs: 18 | % Conf_intervals - Confidence intervals for use with the errorbar 19 | % function in MATLAB. 20 | % 21 | % Example Usage: 22 | % load count.dat; 23 | % samples = count'; 24 | % X=1:size(samples,2); 25 | % ConfIntervals = confidence_intervals(samples,95); 26 | % errorbar(X,mean(samples),ConfIntervals(:,1),ConfIntervals(:,2),'rx'); 27 | % axis([0 25 0 250]); 28 | % 29 | % See also: errorbar.m 30 | 31 | % Author: Jacob Donley 32 | % University of Wollongong 33 | % Email: jrd089@uowmail.edu.au 34 | % Copyright: Jacob Donley 2017 35 | % Date: 19 September 2016 36 | % Revision: 0.2 37 | % 38 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 39 | 40 | if nargin < 3 41 | islognorm = false; 42 | end 43 | if nargin < 2 44 | interval = 95; % Confidence = 95% 45 | end 46 | 47 | L = size(samples,1); 48 | a = 1 - interval/100; 49 | ts = tinv([a/2, 1-a/2],L-1); % T-Score 50 | 51 | if islognorm 52 | v = var(samples); 53 | m = mean(samples); 54 | sigm = sqrt( log( 1 + v./m.^2 ) ); 55 | else 56 | sigm = std(samples); 57 | end 58 | 59 | Conf_intervals(:,1) = ts(1)*sigm/sqrt(L); % Confidence Intervals 60 | Conf_intervals(:,2) = ts(2)*sigm/sqrt(L); % <-' 61 | 62 | 63 | end 64 | 65 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/extractIR.m: -------------------------------------------------------------------------------- 1 | function [irLin, irNonLin] = extractIR(sweep_response, invsweepfft) 2 | % Extract impulse response from swept-sine response. 3 | % [irLin, irNonLin] = extractIR(sweep_response, invsweepfft) 4 | % Extracts the impulse response from the swept-sine response. Use 5 | % synthSweep.m first to create the stimulus; then pass it through the 6 | % device under test; finally, take the response and process it with the 7 | % inverse swept-sine to produce the linear impulse response and 8 | % non-linear simplified Volterra diagonals. The location of each 9 | % non-linear order can be calculated with the sweepRate - this will be 10 | % implemented as a future revision. 11 | % 12 | % Developed at Oygo Sound LLC 13 | % 14 | % Equations from Muller and Massarani, "Transfer Function Measurement 15 | % with Sweeps." 16 | % 17 | % Modified by Jacob Donley (jrd089@uowmail.edu.au) (January 2017) 18 | 19 | if diff(size(sweep_response))>0, sweep_response = sweep_response.'; end 20 | if diff(size(invsweepfft))>0, invsweepfft = invsweepfft.'; end 21 | 22 | N = length(invsweepfft); 23 | sweepfft = fft(sweep_response,N); 24 | 25 | %%% convolve sweep with inverse sweep (freq domain multiply) 26 | invsweepfft = repmat(invsweepfft,1,size(sweepfft,2)); 27 | ir = real(ifft(invsweepfft.*sweepfft)); 28 | 29 | ir = circshift(ir, length(ir)/2, 1); 30 | 31 | irLin = ir(end/2+1:end,:); 32 | irNonLin = ir(1:end/2,:); 33 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/fconv.m: -------------------------------------------------------------------------------- 1 | function [y]=fconv(x, h) 2 | % Fast Parallelised Convolution 3 | % [y] = FCONV(x, h) convolves x and h in the frequency domain 4 | % to +-1. 5 | % 6 | % x = input vector 7 | % h = input vector 8 | % 9 | % See also CONV 10 | % 11 | 12 | Ly=size(x,1)+size(h,1)-1; % 13 | Ly2=pow2(nextpow2(Ly)); % Find smallest power of 2 that is > Ly 14 | 15 | if isa(x, 'gpuArray') 16 | Ly = gpuArray(Ly); 17 | Ly2 = gpuArray(Ly2); 18 | end 19 | 20 | X=fft(x, Ly2); % Fast Fourier transform 21 | H=fft(h, Ly2); % Fast Fourier transform 22 | Y=X.*H; % 23 | y=real(ifft(Y, Ly2)); % Inverse fast Fourier transform 24 | y=y(1:1:Ly,:); % Take just the first N elements -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/fdeconv.m: -------------------------------------------------------------------------------- 1 | function [h]=fdeconv(x, y) 2 | % Fast Parallelised Deconvolution 3 | % [h] = FDECONV(x, y) deconvolves x and y in the frequency domain 4 | % 5 | % x = input vector (original) 6 | % y = input vector (altered) 7 | % 8 | % See also DECONV 9 | % 10 | 11 | Lh=size(y,1)-size(x,1)+1; % 12 | Lh2=pow2(nextpow2(Lh)); % Find smallest power of 2 that is > Ly 13 | 14 | if isa(x, 'gpuArray') 15 | Lh = gpuArray(Lh); 16 | Lh2 = gpuArray(Lh2); 17 | end 18 | 19 | X=fft(x, Lh2); % Fast Fourier transform 20 | Y=fft(y, Lh2); % Fast Fourier transform 21 | H=Y./X; % 22 | h=real(ifft(H, Lh2)); % Inverse fast Fourier transform 23 | h=h(1:1:Lh,:); % Take just the first N elements -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/generateNoise.m: -------------------------------------------------------------------------------- 1 | function [n_] = generateNoise( x, level, type, add ) 2 | % Generates basic noise at a given level with the option to be additive 3 | % 4 | % Syntax: [n_] = GENERATENOISE( x, level, type, add ) Pass the signal, x, level 5 | % and type of noise to the function and n_ will be the resulting noise. 6 | % Alternatively you can specify whether to add the noise to the input 7 | % signal and return the sum of the two using the 'add' argument. 8 | % 9 | % Inputs: 10 | % x - The input signal to base the level of generated noise on. Or 11 | % alternatively add the noise to. 12 | % level - The noise in dB relative to the input signal 13 | % type - The type of noise to add (e.g. 'WGN' for White Gaussian Noise) 14 | % add - true if input is added to noise, false (default) to return just the noise 15 | % 16 | % Outputs: 17 | % n_ - The generated noise signal 18 | % 19 | % 20 | % Author: Jacob Donley 21 | % University of Wollongong 22 | % Email: jrd089@uowmail.edu.au 23 | % Copyright: Jacob Donley 2017 24 | % Date: 21 August 2015 25 | % Revision: 0.1 26 | % 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | 29 | if nargin < 3 30 | type = 'WGN'; % White Gaussian Noise 31 | end 32 | if nargin < 4 33 | add = false; 34 | end 35 | 36 | % Maximum value in input signal 37 | max_val = max( abs( x(:) ) ); 38 | 39 | % Level in magnitude 40 | level_mag = db2mag(level); 41 | 42 | % Seed random number generator based on the current date/time 43 | rng('shuffle'); 44 | 45 | if strcmp(type,'UWN') % Uniform White Noise 46 | 47 | noise_ = rand( size(x) ) * 2 - 1; % UWN: -1 to 1 48 | if ~add 49 | x = 0; 50 | end 51 | n_ = x + max_val * noise_ * level_mag; 52 | 53 | elseif strcmp(type,'WGN') % White Gaussian Noise 54 | 55 | noise_ = randn( size(x) ); % WGN 56 | noise_ = noise_ / sqrt(bandpower(noise_)); %Normalise 57 | if ~add 58 | x = 0; 59 | end 60 | n_ = x + max_val * noise_ * level_mag; 61 | 62 | else 63 | error('''type'' argument for noise not supported'); 64 | end 65 | 66 | end 67 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/getAllFiles.m: -------------------------------------------------------------------------------- 1 | function fileList = getAllFiles(dirPath) 2 | % Retrieves a list of all files within a directory 3 | % 4 | % Syntax: fileList = getAllFiles(dirName) 5 | % 6 | % Inputs: 7 | % dirPath - The relative or full path of the directory to recursivley 8 | % search. 9 | % 10 | % Outputs: 11 | % fileList - A cell array list of the full path for each file found. 12 | % 13 | % Example: 14 | % searchPath = [matlabroot filesep 'examples']; 15 | % files = getAllFiles(searchPath); 16 | % 17 | % 18 | % Author: Jacob Donley 19 | % University of Wollongong 20 | % Email: jrd089@uowmail.edu.au 21 | % Date: 22 January 2015 22 | % Revision: 0.1 23 | % 24 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25 | 26 | % Just incase this function tries to recursively call within a class folder we 27 | % should create a function handle for this function to use 28 | infun = dbstack('-completenames'); 29 | funcName = infun.name; 30 | funcPath = infun.file; 31 | classDirs = getClassDirs(funcPath); 32 | thisFuncHandle = str2func([classDirs funcName]); 33 | 34 | % Find the files 35 | dirData = dir(dirPath); % Get the data for the current directory 36 | dirIndex = [dirData.isdir]; % Find the index for directories 37 | fileList = {dirData(~dirIndex).name}'; %'# Get a list of the files 38 | if ~isempty(fileList) 39 | fileList = cellfun(@(x) fullfile(dirPath,x),... % Prepend path to files 40 | fileList,'UniformOutput',false); 41 | end 42 | subDirs = {dirData(dirIndex).name}; % Get a list of the subdirectories 43 | validIndex = ~ismember(subDirs,{'.','..'}); % Find index of subdirectories that are not '.' or '..' 44 | for iDir = find(validIndex) % Loop over valid subdirectories 45 | nextDir = fullfile(dirPath,subDirs{iDir}); % Get the subdirectory path 46 | fileList = [fileList; thisFuncHandle(nextDir)]; % Recursively call getAllFiles 47 | end 48 | 49 | end 50 | 51 | function classDirs = getClassDirs(FullPath) 52 | classDirs = ''; 53 | classes = strfind(FullPath,'+'); 54 | for c = 1:length(classes) 55 | clas = FullPath(classes(c):end); 56 | stp = strfind(clas,filesep); 57 | classDirs = [classDirs clas(2:stp(1)-1) '.']; 58 | end 59 | end -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/interpVal.m: -------------------------------------------------------------------------------- 1 | function [ interpolated_values, interpolated_indices] = interpVal( values, index_values, desired_index_values ) 2 | % This function will interpolate from desired arbitrarily spaced index values 3 | % 4 | % Syntax: [ interpolated_values, interpolated_indices] = interpVal( values, index_values, desired_index_values ) 5 | % 6 | % Inputs: 7 | % values - A 1D array of values to interpolate between 8 | % index_values - The axis values of the array 9 | % desired_index_values - The desired axis values to interpolate to 10 | % (Can be spaced abitrarily) 11 | % 12 | % Outputs: 13 | % interpolated_values - The new interpolated values 14 | % interpolated_indices - The new interpolated indices 15 | % 16 | % Example: 17 | % 18 | % See also: interp1 19 | 20 | % Author: Jacob Donley 21 | % University of Wollongong 22 | % Email: jrd089@uowmail.edu.au 23 | % Copyright: Jacob Donley 2015-2017 24 | % Date: 15 August 2017 25 | % Version: 0.2 (15 August 2017) 26 | % Version: 0.1 (03 October 2015) 27 | % 28 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29 | 30 | % center desireable value 31 | temp = repmat(index_values, [length(desired_index_values) 1]) ... 32 | - repmat(desired_index_values', [1 length(index_values)]); 33 | temp(temp > 0) = NaN; 34 | 35 | N = numel(index_values); 36 | [~, i_low] = min(abs(temp), [], 2); 37 | i_low = (i_low - (i_low>N).*(i_low-N))'; 38 | i_high = i_low + (N~=1); 39 | i_high(i_high>N) = N; 40 | 41 | num = (desired_index_values - index_values(i_low)); 42 | den = (index_values(i_high) - index_values(i_low)); 43 | 44 | div = num ./ den; 45 | div(num==0&den==0)=0; % redefine zero devided by zero as 0/0=0 46 | 47 | interpolated_indices = div + i_low; 48 | 49 | interpolated_values = interp1(values, interpolated_indices); 50 | 51 | end 52 | 53 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/interpVal_2D.m: -------------------------------------------------------------------------------- 1 | function [ interpolated_values ] = interpVal_2D( values, index_values1, index_values2, desired_index_values1, desired_index_values2, interpolation_type ) 2 | % This function will interpolate from desired abitrarily spaced index values in a 2D array 3 | % 4 | % Syntax: [ interpolated_values ] = interpVal_2D( ... 5 | % values, ... 6 | % index_values1, index_values2, ... 7 | % desired_index_values1, desired_index_values2, ... 8 | % interpolation_type ) 9 | % 10 | % Inputs: 11 | % values - A 2D matrix of Z-axis values to interpolate 12 | % between 13 | % index_values1 - The x-axis values of the matrix 14 | % index_values2 - The y-axis values of the matrix 15 | % desired_index_values1 - The desired x-axis values to interpolate to 16 | % (Can be spaced abitrarily) 17 | % desired_index_values2 - The desired y-axis values to interpolate to 18 | % (Can be spaced abitrarily) 19 | % interpolation_type - An interpolation type supported by interp2 20 | % (e.g. 'linear', 'nearest', 'cubic' or 'spline') 21 | % 22 | % Outputs: 23 | % interpolated_values - The new interpolated values 24 | % 25 | % Example: 26 | % 27 | % See also: interp2 28 | 29 | % Author: Jacob Donley 30 | % University of Wollongong 31 | % Email: jrd089@uowmail.edu.au 32 | % Copyright: Jacob Donley 2015-2017 33 | % Date: 03 October 2015 34 | % Revision: 0.1 (03 October 2015) 35 | % 36 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37 | if nargin < 6 38 | interpolation_type = 'linear'; 39 | end 40 | 41 | %% Just incase this function tries to call interpVal within a class folder 42 | % we should create a function handle for interpVal regardless 43 | inf = dbstack('-completenames'); 44 | funcName = 'interpVal'; 45 | funcPath = inf.file; 46 | classDirs = getClassDirs(funcPath); 47 | interpVal_ = str2func([classDirs funcName]); 48 | 49 | 50 | %% Start interpolation procedure 51 | interpolated_indices1 = zeros(length(desired_index_values1) + 1,1); 52 | interpolated_indices2 = zeros(length(desired_index_values2) + 1,1); 53 | 54 | [~, interpolated_indices1] = interpVal_(interpolated_indices1, index_values1, desired_index_values1); 55 | [~, interpolated_indices2] = interpVal_(interpolated_indices2, index_values2, desired_index_values2); 56 | 57 | if any(diff(interpolated_indices1)) && any(diff(interpolated_indices2)) 58 | % if interpolation is possible over both dimensions 59 | interpolated_values = interp2(values, ... 60 | interpolated_indices1, interpolated_indices2, interpolation_type); 61 | 62 | elseif ~any(diff(interpolated_indices1)) 63 | % if interpolation is not possible along 1st dimension 64 | interpolated_values = interp1(values(:,interpolated_indices1(1)), ... 65 | interpolated_indices2, interpolation_type); 66 | 67 | elseif ~any(diff(interpolated_indices2)) 68 | % if interpolation is not possible along 2nd dimension 69 | interpolated_values = interp1(values(interpolated_indices2(1),:), ... 70 | interpolated_indices1, interpolation_type); 71 | 72 | end 73 | 74 | 75 | end 76 | 77 | function classDirs = getClassDirs(FullPath) 78 | classDirs = ''; 79 | classes = strfind(FullPath,'+'); 80 | for c = 1:length(classes) 81 | clas = FullPath(classes(c):end); 82 | stp = strfind(clas,filesep); 83 | classDirs = [classDirs clas(2:stp(1)-1) '.']; 84 | end 85 | end -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/invSweepFFT.m: -------------------------------------------------------------------------------- 1 | function [ invirfft ] = invSweepFFT( y, f1, f2, fs, Nfft ) 2 | % Obtain the FFT of an inverted exponentional sine sweep 3 | % Detailed explanation goes here 4 | if nargin < 5 5 | Nfft = length(y); 6 | end 7 | 8 | %%% get fft of sweep to verify that its okay and to use for inverse 9 | yfft = fft(y(:)', Nfft); 10 | 11 | % start with the true inverse of the sweep fft 12 | invirfft = 1./yfft; 13 | 14 | 15 | %%% Create band pass magnitude to start and stop at desired frequencies 16 | [B1, A1] = butter(2,f1/(fs/2),'high' ); %%% HP at f1 17 | [B2, A2] = butter(2,f2/(fs/2)); %%% LP at f2 18 | 19 | %%% so we need to re-apply the band pass here to get rid of that 20 | H1 = freqz(B1,A1,length(yfft),fs,'whole'); 21 | H2 = freqz(B2,A2,length(yfft),fs,'whole'); 22 | 23 | %%% apply band pass filter to inverse magnitude 24 | invirfft = invirfft .* abs(H1)' .* abs(H2)'; 25 | 26 | end 27 | 28 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/invimplms.m: -------------------------------------------------------------------------------- 1 | function inv=invimplms(den,n,d) 2 | % Inverse impulse using the Levinson-Durbin algorithm 3 | % syntax inv=invimplms(den,n,d) 4 | % den - denominator impulse 5 | % n - length of result 6 | % d - delay of result 7 | % inv - inverse impulse response of length n with delay d 8 | % 9 | % Levinson-Durbin algorithm from Proakis and Manolokis p.865 10 | % 11 | % Author: Bob Cain, May 1, 2001 arcane[AT]arcanemethods[DOT]com 12 | 13 | m=xcorr(den,n-1); 14 | m=m(n:end); 15 | b=[den(d+1:-1:1);zeros(n-d-1,1)]; 16 | inv=Tools.toepsolveMEX(m,b); 17 | end 18 | 19 | 20 | function quo=divimplms(num,den,n,d) 21 | %Syntax quo=divimplms(num,den,n,d) 22 | % num - numerator impulse 23 | % den - denominator impulse 24 | % n - length of result 25 | % d - delay of result 26 | % quo - quotient impulse response of length n delayed by d 27 | % 28 | % Levinson-Durbin algorithm from Proakis and Manolokis p.865 29 | % 30 | % Author: Bob Cain, May 1, 2001 arcane@arcanemethods.com 31 | 32 | m=xcorr(den,n-1); 33 | m=m(n:end); 34 | b=xcorr([zeros(d,1);num],den,n-1); 35 | b=b(n:-1:1); 36 | quo=Tools.toepsolveMEX(m,b); 37 | end 38 | 39 | function hinv=toepsolve(r,q) 40 | % Solve Toeplitz system of equations. 41 | % Solves R*hinv = q, where R is the symmetric Toeplitz matrix 42 | % whos first column is r 43 | % Assumes all inputs are real 44 | % Inputs: 45 | % r - first column of Toeplitz matrix, length n 46 | % q - rhs vector, length n 47 | % Outputs: 48 | % hinv - length n solution 49 | % 50 | % Algorithm from Roberts & Mullis, p.233 51 | % 52 | % Author: T. Krauss, Sept 10, 1997 53 | % 54 | % Modified: R. Cain, Dec 16, 2004 to remove a pair of transposes 55 | % that caused errors. 56 | 57 | n=length(q); 58 | a=zeros(n+1,2); 59 | a(1,1)=1; 60 | 61 | hinv=zeros(n,1); 62 | hinv(1)=q(1)/r(1); 63 | 64 | alpha=r(1); 65 | c=1; 66 | d=2; 67 | 68 | for k=1:n-1, 69 | a(k+1,c)=0; 70 | a(1,d)=1; 71 | beta=0; 72 | j=1:k; 73 | beta=sum(r(k+2-j).*a(j,c))/alpha; 74 | a(j+1,d)=a(j+1,c)-beta*a(k+1-j,c); 75 | alpha=alpha*(1-beta^2); 76 | hinv(k+1,1)=(q(k+1)-sum(r(k+2-j).*hinv(j,1)))/alpha; 77 | hinv(j)=hinv(j)+a(k+2-j,d)*hinv(k+1); 78 | temp=c; 79 | c=d; 80 | d=temp; 81 | end 82 | end 83 | 84 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/invsweepfft.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/SoundZone_Tools-master/invsweepfft.mat -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/keepFilesFromFolder.m: -------------------------------------------------------------------------------- 1 | function [Files] = keepFilesFromFolder( FileList, KeepFromFolder ) 2 | % Keeps files and file paths in a cell array if the file names in a given folder are found in the path string 3 | % 4 | % Syntax: [Files] = KEEPFILESFROMFOLDER(FileList,KeepFromFolder) 5 | % 6 | % Inputs: 7 | % FileList - A list of files to filter 8 | % KeepFromFolder - A folder containing filenames from which to search in 9 | % the given FileList and keep. 10 | % 11 | % Outputs: 12 | % Files - List of files with only the file names found in the given 13 | % folder still in the list 14 | % 15 | % 16 | % See also: getAllFiles 17 | 18 | % Author: Jacob Donley 19 | % University of Wollongong 20 | % Email: jrd089@uowmail.edu.au 21 | % Copyright: Jacob Donley 2017 22 | % Date: 18 January 2017 23 | % Revision: 0.1 24 | % 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26 | 27 | % Just incase this function tries to call within a class folder we 28 | % should create a function handle for other functions in that class folder 29 | inf = dbstack('-completenames'); 30 | funcName = 'getAllFiles'; 31 | funcPath = inf.file; 32 | classDirs = getClassDirs(funcPath); 33 | getAllFilesFn = str2func([classDirs funcName]); 34 | 35 | 36 | %% KEEPFILESFROMFOLDER 37 | [~,fnames]=cellfun(@fileparts, getAllFilesFn( KeepFromFolder ),'UniformOutput',false); 38 | for i=1:numel(fnames) 39 | tmp = strfind(FileList,fnames{i}); 40 | I = arrayfun(@(x) ~isempty(tmp{x}),1:numel(FileList)); 41 | fileKeeps(I) = FileList(I); 42 | end 43 | fileKeeps(cellfun('isempty',fileKeeps))=[]; 44 | Files = {fileKeeps{:}}.'; 45 | 46 | 47 | end 48 | 49 | function classDirs = getClassDirs(FullPath) 50 | classDirs = ''; 51 | classes = strfind(FullPath,'+'); 52 | for c = 1:length(classes) 53 | clas = FullPath(classes(c):end); 54 | stp = strfind(clas,filesep); 55 | classDirs = [classDirs clas(2:stp(1)-1) '.']; 56 | end 57 | end -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/octaveBandMean.m: -------------------------------------------------------------------------------- 1 | function [ magSpect_oct, freqVec_oct ] = octaveBandMean( magSpect, freqVec, octSpace, centerFreq ) 2 | % Given a magnitude spectrum this function will calculate the average (single, third, nth) octave band magnitude 3 | % 4 | % Syntax: [ MAGSPECT_OCT, FREQVEC_OCT ] = OCTAVEBANDMEAN( MAGSPECT, FREQVEC, OCTSPACE, CENTERFREQ ) 5 | % 6 | % Inputs: 7 | % magSpect - An arbitrary magnitude spectrum as a vector 8 | % freqVec - The corresponding frequencies for each magnitude value 9 | % octSpace - A single value between 0 and 1 specifying the octave spacing 10 | % centerFreq - The center frequency for the octave band 11 | % 12 | % Outputs: 13 | % magSpect_oct - The magnitude spectrum averaged per octave band 14 | % freqVec_oct - The corresponding frequencies for the output magnitude vector 15 | % 16 | % See also: 17 | 18 | % Author: Jacob Donley 19 | % University of Wollongong 20 | % Email: jrd089@uowmail.edu.au 21 | % Copyright: Jacob Donley 2016, 2017 22 | % Date: 8 July 2016 23 | % Revision: 0.2 (29 March 2017) 24 | % 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26 | 27 | if nargin < 4 28 | centerFreq=1e3; 29 | end 30 | if nargin < 3 31 | octSpace = 1/3; 32 | end 33 | 34 | if size(magSpect,2) > size(magSpect,1), magSpect = magSpect.'; end 35 | if size(freqVec,2) > size(freqVec,1), freqVec = freqVec.'; end 36 | 37 | freqVec_ = nonzeros(freqVec); %remove zero values 38 | 39 | n = floor(log(freqVec_( 1 )/centerFreq)/log(2)/octSpace): ... 40 | floor(log(freqVec_(end)/centerFreq)/log(2)/octSpace); 41 | 42 | freqVec_oct = centerFreq * (2 .^ (n*octSpace)); 43 | if freqVec_oct(end) ~= freqVec_(end) 44 | % This may happen if there is no octave band that is centered at the 45 | % Nyquist frequency (fs/2) 46 | freqVec_oct(end+1) = freqVec_(end); % So we find an average at the 47 | % Nyquist frequency that is of the same width as the other octave bands 48 | warning(['The sampling frequency used does not have a Nyquist ' ... 49 | 'frequency that, after division by the centre frequency, is a ' ... 50 | 'power of two. ' ... 51 | 'i.e. (' num2str(freqVec_(end)*2) '/2)/' num2str(centerFreq) ' is ' ... 52 | 'not a power of two.']); 53 | end 54 | fd = 2^(octSpace/2); 55 | fupper = freqVec_oct * fd; 56 | flower = freqVec_oct / fd; 57 | 58 | octBands = [flower' fupper']; 59 | 60 | [~, oBandInds] = min(abs( ... 61 | repmat(freqVec,1,2,length(octBands)) ... 62 | - repmat(permute(octBands,[3 2 1]),length(freqVec),1,1) )); 63 | 64 | oBandInds = permute(oBandInds, [3 2 1]); 65 | 66 | magSpect_oct = zeros(1,length(freqVec_oct)); 67 | for band = 1:length(freqVec_oct) 68 | magSpect_oct(band+1) = mean( ... 69 | magSpect( oBandInds(band,1):oBandInds(band,2) ) ); 70 | end 71 | 72 | magSpect_oct(1) = magSpect(1); 73 | freqVec_oct = [0 freqVec_oct]; 74 | end 75 | 76 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/pesq.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/SoundZone_Tools-master/pesq.exe -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/pesq3.m: -------------------------------------------------------------------------------- 1 | function [ res ] = pesq3( reference_sig, degraded_sig, Fs, fileNum ) 2 | % A wrapper for the objective Perceptual Evaluation of Speech Quality measure 3 | % 4 | % Syntax: [ res ] = pesq3( reference_sig, degraded_sig, Fs, fileNum ) 5 | % 6 | % Inputs: 7 | % reference_sig - Reference (clean, talker, sender) speech signal 8 | % degraded_sig - Degraded (noisy, listener, receiver) speech signal 9 | % Fs - Sampling Frequency 10 | % fileNum - An ID number to append to the temporary audio files. Useful 11 | % when several instances are to be run together (in parallel). 12 | % 13 | % Outputs: 14 | % res - Raw PESQ result for narrowband and MOS-LQO result for wideband 15 | % 16 | % See also: pesq2mos.m 17 | 18 | % Author: Jacob Donley 19 | % University of Wollongong 20 | % Email: jrd089@uowmail.edu.au 21 | % Copyright: Jacob Donley 2017 22 | % Date: 03 October 2015 23 | % Revision: 0.1 24 | % 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26 | 27 | if nargin < 4 28 | fileNum = 0; 29 | end 30 | temp_path = [pwd filesep '+Miscellaneous\+Temporary\']; 31 | ref_path = [ 'tmp_ref' num2str(fileNum) '.wav']; 32 | deg_path = [ 'tmp_deg' num2str(fileNum) '.wav']; 33 | 34 | if ~exist(temp_path,'dir'); mkdir(temp_path); end 35 | 36 | max_val = max(abs([reference_sig(:); degraded_sig(:)])); 37 | 38 | audiowrite([temp_path ref_path], reference_sig / max_val, Fs); 39 | audiowrite([temp_path deg_path], degraded_sig / max_val, Fs); 40 | 41 | res = pesq2_mtlb(ref_path, ... 42 | deg_path, ... 43 | Fs, 'wb', [pwd filesep '+Tools\pesq_NoResFile.exe'], ... 44 | temp_path); 45 | 46 | end 47 | 48 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/pesq_NoResFile.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/SoundZone_Tools-master/pesq_NoResFile.exe -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/pesq_mex.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/SoundZone_Tools-master/pesq_mex.mexw64 -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/pesq_mex_fast.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/SoundZone_Tools-master/pesq_mex_fast.mexw64 -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/pesq_mex_fast_vec.m: -------------------------------------------------------------------------------- 1 | function [ res ] = pesq_mex_fast_vec( reference_sig, degraded_sig, Fs, modeOfOperation ) 2 | % Accepts vectors for a mex compiled version of the objective Perceptual Evaluation of Speech Quality measure 3 | % 4 | % Syntax: [ res ] = pesq_mex_vec( reference_sig, degraded_sig, Fs ) 5 | % 6 | % Inputs: 7 | % reference_sig - Reference (clean, talker, sender) speech signal 8 | % degraded_sig - Degraded (noisy, listener, receiver) speech signal 9 | % Fs - Sampling Frequency 10 | % modeOfOperation - This optional string argument is used to specify 11 | % whether the PESQ mex function runs in narrowband, 12 | % wideband or both. The possible values are 13 | % 'narrowband', 'wideband' (default) or 'both'. 14 | % 15 | % Outputs: 16 | % res - MOS-LQO result for given modeOfOperation (wideband by default). 17 | % If 'both' is specified as the modeOfOperation then res is a 18 | % column vector of the format [narrowband_result; wideband_result]. 19 | % 20 | % See also: pesq2mos.m 21 | 22 | % Author: Jacob Donley 23 | % University of Wollongong 24 | % Email: jrd089@uowmail.edu.au 25 | % Copyright: Jacob Donley 2017 26 | % Date: 2 August 2017 27 | % Revision: 0.3 (2 August 2017) 28 | % Revision: 0.2 (16 June 2016) 29 | % 30 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31 | 32 | % Just incase this function tries to call within a class folder we should 33 | % create a function handle for this function to use instead 34 | infun = dbstack('-completenames'); 35 | funcName = 'pesq_mex_fast'; 36 | funcPath = infun.file; 37 | classDirs = getClassDirs(funcPath); 38 | pesq_mex_ = str2func([classDirs funcName]); 39 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 40 | 41 | if nargin < 4 42 | modeOfOperation = 'wideband'; 43 | end 44 | 45 | switch lower(modeOfOperation) 46 | case 'narrowband' 47 | mOp = {''}; 48 | case 'wideband' 49 | mOp = {'+wb'}; 50 | case 'both' 51 | mOp = {'';'+wb'}; 52 | otherwise 53 | error(['''' modeOfOperation ''' is not a recognised ''modeOfOperation'' value.']) 54 | end 55 | 56 | max_val = max(abs([reference_sig(:); degraded_sig(:)])); 57 | 58 | for m = 1:numel(mOp) 59 | pesqArgs = {['+' num2str(Fs)], ... 60 | mOp{m}, ... 61 | single(reference_sig / max_val), ... 62 | single(degraded_sig / max_val)}; 63 | res(m,:) = pesq_mex_(pesqArgs{~cellfun(@isempty,pesqArgs)}); 64 | end 65 | 66 | end 67 | 68 | function classDirs = getClassDirs(FullPath) 69 | classDirs = ''; 70 | classes = strfind(FullPath,'+'); 71 | for c = 1:length(classes) 72 | clas = FullPath(classes(c):end); 73 | stp = strfind(clas,filesep); 74 | classDirs = [classDirs clas(2:stp(1)-1) '.']; 75 | end 76 | end -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/pesq_mex_vec.m: -------------------------------------------------------------------------------- 1 | function [ res ] = pesq_mex_vec( reference_sig, degraded_sig, Fs, modeOfOperation ) 2 | % Accepts vectors for a mex compiled version of the objective Perceptual Evaluation of Speech Quality measure 3 | % 4 | % Syntax: [ res ] = pesq_mex_vec( reference_sig, degraded_sig, Fs ) 5 | % 6 | % Inputs: 7 | % reference_sig - Reference (clean, talker, sender) speech signal 8 | % degraded_sig - Degraded (noisy, listener, receiver) speech signal 9 | % Fs - Sampling Frequency 10 | % modeOfOperation - This optional string argument is used to specify 11 | % whether the PESQ mex function runs in narrowband, 12 | % wideband or both. The possible values are 13 | % 'narrowband', 'wideband' (default) or 'both'. 14 | % 15 | % Outputs: 16 | % res - MOS-LQO result for given modeOfOperation (wideband by default). 17 | % If 'both' is specified as the modeOfOperation then res is a 18 | % column vector of the format [narrowband_result; wideband_result]. 19 | % 20 | % See also: pesq2mos.m 21 | 22 | % Author: Jacob Donley 23 | % University of Wollongong 24 | % Email: jrd089@uowmail.edu.au 25 | % Copyright: Jacob Donley 2017 26 | % Date: 2 August 2017 27 | % Revision: 0.3 (2 August 2017) 28 | % Revision: 0.2 (16 June 2016) 29 | % 30 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31 | 32 | % Just incase this function tries to call within a class folder we should 33 | % create a function handle for this function to use instead 34 | infun = dbstack('-completenames'); 35 | funcName = 'pesq_mex'; 36 | funcPath = infun.file; 37 | classDirs = getClassDirs(funcPath); 38 | pesq_mex_ = str2func([classDirs funcName]); 39 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 40 | 41 | if nargin < 4 42 | modeOfOperation = 'wideband'; 43 | end 44 | 45 | switch lower(modeOfOperation) 46 | case 'narrowband' 47 | mOp = {''}; 48 | case 'wideband' 49 | mOp = {'+wb'}; 50 | case 'both' 51 | mOp = {'';'+wb'}; 52 | otherwise 53 | error(['''' modeOfOperation ''' is not a recognised ''modeOfOperation'' value.']) 54 | end 55 | 56 | max_val = max(abs([reference_sig(:); degraded_sig(:)])); 57 | 58 | tmpref = [tempname '.wav']; 59 | tmpdeg = [tempname '.wav']; 60 | 61 | audiowrite( tmpref, reference_sig / max_val, Fs); 62 | audiowrite( tmpdeg, degraded_sig / max_val, Fs); 63 | 64 | for m = 1:numel(mOp) 65 | pesqArgs = {['+' num2str(Fs)], ... 66 | mOp{m}, ... 67 | tmpref, ... 68 | tmpdeg}; 69 | res(m,:) = pesq_mex_(pesqArgs{~cellfun(@isempty,pesqArgs)}); 70 | end 71 | 72 | delete( tmpref, tmpdeg ); 73 | end 74 | 75 | function classDirs = getClassDirs(FullPath) 76 | classDirs = ''; 77 | classes = strfind(FullPath,'+'); 78 | for c = 1:length(classes) 79 | clas = FullPath(classes(c):end); 80 | stp = strfind(clas,filesep); 81 | classDirs = [classDirs clas(2:stp(1)-1) '.']; 82 | end 83 | end -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/printHyperlink.m: -------------------------------------------------------------------------------- 1 | function printHyperlink( URL, OptionalText ) 2 | % Prints a hyperlink to the command window 3 | % 4 | % Syntax: PRINTHYPERLINK( URL, OPTIONALTEXT) 5 | % 6 | % Inputs: 7 | % URL - Address for the hyperlink 8 | % OptionalText - The text to be printed which is hyperlinked 9 | % 10 | % See also: fprintf, cprintf 11 | 12 | % Author: Jacob Donley 13 | % University of Wollongong 14 | % Email: jrd089@uowmail.edu.au 15 | % Copyright: Jacob Donley 2017 16 | % Date: 16 February 2017 17 | % Revision: 0.2 (30 March 2017) 18 | % 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | if nargin < 2 21 | OptionalText = URL; 22 | end 23 | fprintf(['' OptionalText '\n']); 24 | if exist('cprintf','file') 25 | cprintf('hyper', ''); 26 | end 27 | 28 | end 29 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/repmatmatch.m: -------------------------------------------------------------------------------- 1 | function A = repmatmatch(a,B) 2 | %Replicate and tile an array to match the size of a given N-D array 3 | % 4 | % Syntax: A = repmatmatch(a,B) 5 | % 6 | % Inputs: 7 | % a - Input array to tile 8 | % B - N-D array to match the size of 9 | % 10 | % Outputs: 11 | % A - The replicated and tiled copy of input 'a' 12 | % 13 | % Example: 14 | % a = [1 2 3]; 15 | % B = rand(2,3); 16 | % A = repmatmatch(a,B); 17 | % 18 | % See also: repmat 19 | 20 | % Author: Jacob Donley 21 | % University of Wollongong 22 | % Email: jrd089@uowmail.edu.au 23 | % Copyright: Jacob Donley 2017 24 | % Date: 28 August 2017 25 | % Version: 0.1 (28 August 2017) 26 | % 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | 29 | aSz = size(a); 30 | BSz = size(B); 31 | 32 | if any(rem(BSz ./ aSz,1)) 33 | error(['The size of each dimension of ''a'' should match ''B'' ' ... 34 | 'or be evenly divisible by the corresponding dimension of ''B''.']) 35 | end 36 | 37 | A = repmat(a, BSz ./ aSz); 38 | 39 | end 40 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/shapeSpectrum.m: -------------------------------------------------------------------------------- 1 | function [ y_shaped ] = shapeSpectrum( y, spectrum, freqs, fs ) 2 | % This function will shape an input signal to the given spectrum (simple, unregulated spectral shaping) 3 | % 4 | % Syntax: [ y_shaped ] = shapeSpectrum( y, fs, spectrum ) 5 | % 6 | % Inputs: 7 | % y - Input signal in the time-domain which requires shaping. 8 | % spectrum - A vector containing the magnitude spectrum to shape the 9 | % signal with. ( length = fs/2 - 1 ) 10 | % freqs - A vector containing the corresponding frequencies for the 11 | % spectrum vector. 12 | % 13 | % Outputs: 14 | % y_shaped - The input signal shaped to the given spectrum 15 | % 16 | % 17 | 18 | % Author: Jacob Donley 19 | % University of Wollongong 20 | % Email: jrd089@uowmail.edu.au 21 | % Copyright: Jacob Donley 2017 22 | % Date: 26 February 2016 23 | % Revision: 0.1 24 | % 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26 | N = length( y ); 27 | 28 | if rem(N,2) 29 | M = N+1; 30 | else 31 | M = N; 32 | end 33 | 34 | % Frequency Domain Tranform 35 | Y = fft(y); % Fast Fourier Transform 36 | 37 | % Frequencies 38 | NumPts = M/2 + 1; 39 | freqs_new = linspace(0, fs/2, NumPts); 40 | 41 | % Create correct size spectrum vector 42 | spect = interp1( freqs, spectrum, freqs_new )'; 43 | 44 | % Apply magnitude weighting 45 | Y(1:NumPts) = Y(1:NumPts) .* spect; 46 | 47 | % Apply conjugation for negative frequency side of spectrum 48 | Y(NumPts+1:M) = conj(Y(M/2:-1:2)); 49 | 50 | % Time Domain Transform 51 | y_shaped = ifft(Y); % Inverse Fast Fourier Transform 52 | 53 | % prepare output vector y 54 | y_shaped = real(y_shaped(1:N)); 55 | 56 | % ensure unity standard deviation and zero mean value 57 | y_shaped = y_shaped - mean(y_shaped); 58 | y_shaped = y_shaped / rms(y_shaped); 59 | 60 | 61 | % BETTER METHOD %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 62 | 63 | end 64 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/simpleWarning.m: -------------------------------------------------------------------------------- 1 | function simpleWarning( warning_text, text_colour ) 2 | % Prints a coloured warning without the location information 3 | % 4 | % Syntax: SIMPLEWARNING(warning_text, text_colour) 5 | % 6 | % Inputs: 7 | % warning_text - 1D character array or 2D cell array of warning text 8 | % where each cell contains a line of text. 9 | % text_colour - RGB text colour as 1x3 matrix. 10 | % 11 | % See also: warning, error, cprintf 12 | 13 | % Author: Jacob Donley 14 | % University of Wollongong 15 | % Email: jrd089@uowmail.edu.au 16 | % Copyright: Jacob Donley 2017 17 | % Date: 16 February 2017 18 | % Revision: 0.2 (30 March 2017) 19 | % 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | if nargin < 2 23 | text_colour = [255,100,0]/255; 24 | end 25 | 26 | if ischar(warning_text) 27 | warning_text = {warning_text ''}; 28 | end 29 | 30 | if exist('cprintf','file') 31 | for l = 1:numel(warning_text)-1 32 | cprintf(text_colour, [warning_text{l} ' \n']); 33 | end 34 | if isempty(l),l=0;end 35 | cprintf(text_colour, [warning_text{l+1}]); 36 | else 37 | wTxtTemp=[]; 38 | for l = 1:numel(warning_text) 39 | wTxtTemp = [wTxtTemp warning_text{l} ' ']; 40 | end 41 | warning(wTxtTemp); 42 | end 43 | 44 | end 45 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/sineSweepLin.m: -------------------------------------------------------------------------------- 1 | function [ y ] = sineSweepLin( f_start, f_end, dur, fs ) 2 | % Synthesize a linear sine sweep 3 | % Detailed explanation goes here 4 | t=0:1/fs:dur-1/fs; 5 | f=linspace(f_start,(f_end+f_start)/2,length(t)); 6 | y=sin(2*pi*f.*t); 7 | end 8 | 9 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/stoi_d2percCorr.m: -------------------------------------------------------------------------------- 1 | function [stoi_PercCorr] = stoi_d2percCorr(stoi_d) 2 | % Converts the stoi measure, d, to percent words correct unit 3 | % 4 | % Syntax: [stoi_PercCorr] = stoi_d2percCorr(stoi_d) 5 | % 6 | % Inputs: 7 | % stoi_d - The STOI measure in the raw units 8 | % 9 | % Outputs: 10 | % stoi_PercCorr - The corressponding STOI value in Percent of Words 11 | % Correct as defined for the IEEE English Library 12 | % 13 | % 14 | % References: 15 | % C. H. Taal, R. C. Hendriks, R. Heusdens, and J. Jensen. A Short-Time 16 | % Objective Intelligibility Measure for Time-Frequency Weighted Noisy 17 | % Speech. In Acoustics Speech and Signal Processing (ICASSP), pages 18 | % 4214-4217. IEEE, 2010. 19 | % 20 | % C. H. Taal, R. C. Hendriks, R. Heusdens, and J. Jensen. An Algorithm 21 | % for Intelligibility Prediction of Time-Frequency Weighted Noisy Speech. 22 | % IEEE Transactions on Audio, Speech and Language Processing, 23 | % 19(7):2125-2136, 2011. 24 | 25 | % Author: Jacob Donley 26 | % University of Wollongong 27 | % Email: jrd089@uowmail.edu.au 28 | % Date: 05 August 2015 29 | % Revision: 0.1 30 | % 31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32 | 33 | f_IEEE_a = -17.4906; 34 | f_IEEE_b = 9.6921; 35 | 36 | stoi_PercCorr = 100 / (1 + exp(f_IEEE_a * stoi_d + f_IEEE_b ) ); 37 | 38 | 39 | end 40 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/toepsolveMEX.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/SoundZone_Tools-master/toepsolveMEX.mexw64 -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/SoundZone_Tools-master/wait_for_file.m: -------------------------------------------------------------------------------- 1 | function wait_for_file( file_string ) 2 | % A forceful method to wait for a file to finish being written to 3 | % 4 | % Syntax: wait_for_file( file_string ) 5 | % 6 | % Inputs: 7 | % file_string - Absolute or relative path for the file to wait for 8 | % 9 | % 10 | % Author: Jacob Donley 11 | % University of Wollongong 12 | % Email: jrd089@uowmail.edu.au 13 | % Copyright: Jacob Donley 2017 14 | % Date: 03 October 2015 15 | % Revision: 0.1 16 | % 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | 19 | fid = fopen(file_string,'r'); 20 | while fid==-1 21 | fid = fopen(file_string,'r'); 22 | end 23 | fseek(fid,0,'eof'); 24 | char_pos(1) = -1; 25 | char_pos(2) = ftell(fid); 26 | pause(0.5); 27 | while char_pos(1) ~= char_pos(2) 28 | char_pos(1) = char_pos(2); 29 | fseek(fid,0,'eof'); 30 | char_pos(2) = ftell(fid); 31 | pause(0.5); 32 | end 33 | fclose(fid); 34 | end 35 | 36 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/LogSD_AR.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/LogSD_AR.exe -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/LogSD_FFT.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/LogSD_FFT.exe -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/PESQ_LQ.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/PESQ_LQ.exe -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/SSNR.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/SSNR.exe -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/find_dat.m: -------------------------------------------------------------------------------- 1 | function [ wav_files ] = find_dat( path ) 2 | %FIND_WAV, find all wav file recursively 3 | wav_files = []; 4 | if(isdir(path) == 0) 5 | 6 | return; 7 | end 8 | path_files = dir(path); 9 | fileNum = length(path_files); 10 | for k= 3:fileNum 11 | file = [path,'\', path_files(k).name]; 12 | if (path_files(k).isdir == 1) 13 | ret = find_wav(file); 14 | if(isempty(ret) ~= 1) 15 | if(isempty(wav_files)) 16 | wav_files = char(ret); 17 | else 18 | wav_files = char(wav_files, ret); 19 | end 20 | end 21 | elseif strfind(path_files(k).name, '.dat') 22 | if(isempty(wav_files)) 23 | wav_files = char(file); 24 | else 25 | wav_files = char(wav_files, file); 26 | end 27 | end 28 | end 29 | end 30 | 31 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/find_wav.m: -------------------------------------------------------------------------------- 1 | function [ wav_files ] = find_wav( path ) 2 | %FIND_WAV, find all wav file recursively 3 | wav_files = []; 4 | if(isdir(path) == 0) 5 | 6 | return; 7 | end 8 | path_files = dir(path); 9 | fileNum = length(path_files); 10 | for k= 3:fileNum 11 | file = [path,'\', path_files(k).name]; 12 | if (path_files(k).isdir == 1) 13 | ret = find_wav(file); 14 | if(isempty(ret) ~= 1) 15 | if(isempty(wav_files)) 16 | wav_files = char(ret); 17 | else 18 | wav_files = char(wav_files, ret); 19 | end 20 | end 21 | elseif strfind(path_files(k).name, '.wav') 22 | if(isempty(wav_files)) 23 | wav_files = char(file); 24 | else 25 | wav_files = char(wav_files, file); 26 | end 27 | end 28 | end 29 | end 30 | 31 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/DC_block.m: -------------------------------------------------------------------------------- 1 | function mod_data= DC_block( data, Nsamples) 2 | 3 | global Downsample DATAPADDING_MSECS SEARCHBUFFER 4 | 5 | ofs= SEARCHBUFFER* Downsample; 6 | mod_data= data; 7 | 8 | %compute dc component, it is a little weird 9 | facc= sum( data( ofs+ 1: Nsamples- ofs))/ Nsamples; 10 | mod_data( ofs+ 1: Nsamples- ofs)= data( ofs+ 1: Nsamples- ofs)- facc; 11 | 12 | mod_data( ofs+ 1: ofs+ Downsample)= mod_data( ofs+ 1: ofs+ Downsample).* ... 13 | ( 0.5+ (0: Downsample- 1))/ Downsample; 14 | 15 | mod_data( Nsamples- ofs: -1: Nsamples- ofs-Downsample+ 1)= ... 16 | mod_data( Nsamples- ofs: -1: Nsamples- ofs-Downsample+ 1).* ... 17 | ( 0.5+ (0: Downsample- 1))/ Downsample; 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/FFTNXCorr.m: -------------------------------------------------------------------------------- 1 | function Y= FFTNXCorr( ref_VAD, startr, nr, deg_VAD, startd, nd) 2 | % this function has other simple implementations, current implementation is 3 | % consistent with the C version 4 | 5 | % one way to do this (in time domain) ===== 6 | x1= ref_VAD( startr: startr+ nr- 1); 7 | x2= deg_VAD( startd: startd+ nd- 1); 8 | x1= fliplr( x1); 9 | Y= conv( x2, x1); 10 | % done ===== 11 | 12 | % % the other way to do this (in freq domain)=== 13 | % Nx= 2^ (ceil( log2( max( nr, nd)))); 14 | % x1= zeros( 1, 2* Nx); 15 | % x2= zeros( 1, 2* Nx); 16 | % x1( 1: nr)= fliplr( ref_VAD( startr: startr+ nr- 1)); 17 | % x2( 1: nd)= deg_VAD( startd: startd+ nd- 1); 18 | % 19 | % if (nr== 491) 20 | % fid= fopen( 'mat_debug.txt', 'wt'); 21 | % fprintf( fid, '%f\n', x1); 22 | % fclose( fid); 23 | % end 24 | % 25 | % x1_fft= fft( x1, 2* Nx); 26 | % x2_fft= fft( x2, 2* Nx); 27 | % 28 | % tmp1= ifft( x1_fft.* x2_fft, 2* Nx); 29 | % 30 | % Ny= nr+ nd- 1; 31 | % Y= tmp1( 1: Ny); 32 | % % done =========== 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/apply_filter.m: -------------------------------------------------------------------------------- 1 | function align_filtered= apply_filter( data, data_Nsamples, align_filter_dB) 2 | 3 | global Downsample DATAPADDING_MSECS SEARCHBUFFER Fs 4 | 5 | align_filtered= data; 6 | n= data_Nsamples- 2* SEARCHBUFFER* Downsample+ DATAPADDING_MSECS* (Fs/ 1000); 7 | % now find the next power of 2 which is greater or equal to n 8 | pow_of_2= 2^ (ceil( log2( n))); 9 | 10 | [number_of_points, trivial]= size( align_filter_dB); 11 | overallGainFilter= interp1( align_filter_dB( :, 1), align_filter_dB( :, 2), ... 12 | 1000); 13 | 14 | x= zeros( 1, pow_of_2); 15 | x( 1: n)= data( SEARCHBUFFER* Downsample+ 1: SEARCHBUFFER* Downsample+ n); 16 | 17 | x_fft= fft( x, pow_of_2); 18 | 19 | freq_resolution= Fs/ pow_of_2; 20 | 21 | factorDb( 1: pow_of_2/2+ 1)= interp1( align_filter_dB( :, 1), ... 22 | align_filter_dB( :, 2), (0: pow_of_2/2)* freq_resolution)- ... 23 | overallGainFilter; 24 | factor= 10.^ (factorDb/ 20); 25 | 26 | factor= [factor, fliplr( factor( 2: pow_of_2/2))]; 27 | x_fft= x_fft.* factor; 28 | 29 | y= ifft( x_fft, pow_of_2); 30 | 31 | align_filtered( SEARCHBUFFER* Downsample+ 1: SEARCHBUFFER* Downsample+ n)... 32 | = y( 1: n); 33 | 34 | % fid= fopen( 'log_mat.txt', 'wt'); 35 | % fprintf( fid, '%f\n', y( 1: n)); 36 | % fclose( fid); 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/apply_filters.m: -------------------------------------------------------------------------------- 1 | function mod_data= apply_filters( data, Nsamples) 2 | %IIRFilt( InIIR_Hsos, InIIR_Nsos, data, data_Nsamples); 3 | 4 | global InIIR_Hsos InIIR_Nsos DATAPADDING_MSECS Fs 5 | % data_Nsamples= Nsamples+ DATAPADDING_MSECS* (Fs/ 1000); 6 | 7 | % now we construct the second order section matrix 8 | sosMatrix= zeros( InIIR_Nsos, 6); 9 | sosMatrix( :, 4)= 1; %set a(1) to 1 10 | % each row of sosMatrix holds [b(1*3) a(1*3)] for each section 11 | sosMatrix( :, 1: 3)= InIIR_Hsos( :, 1: 3); 12 | sosMatrix( :, 5: 6)= InIIR_Hsos( :, 4: 5); 13 | %sosMatrix 14 | 15 | % now we construct second order section direct form II filter 16 | iirdf2= dfilt.df2sos( sosMatrix); 17 | 18 | mod_data= filter( iirdf2, data); 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/crude_align.m: -------------------------------------------------------------------------------- 1 | function crude_align( ref_logVAD, ref_Nsamples, deg_logVAD, ... 2 | deg_Nsamples, Utt_id) 3 | 4 | global Downsample 5 | global Nutterances Largest_uttsize Nsurf_samples Crude_DelayEst 6 | global Crude_DelayConf UttSearch_Start UttSearch_End Utt_DelayEst 7 | global Utt_Delay Utt_DelayConf Utt_Start Utt_End 8 | global MAXNUTTERANCES WHOLE_SIGNAL 9 | global pesq_mos subj_mos cond_nr 10 | 11 | if (Utt_id== WHOLE_SIGNAL ) 12 | nr = floor( ref_Nsamples/ Downsample); 13 | nd = floor( deg_Nsamples/ Downsample); 14 | startr= 1; 15 | startd= 1; 16 | elseif Utt_id== MAXNUTTERANCES 17 | startr= UttSearch_Start(MAXNUTTERANCES); 18 | startd= startr+ Utt_DelayEst(MAXNUTTERANCES)/ Downsample; 19 | if ( startd< 0 ) 20 | startr= 1- Utt_DelayEst(MAXNUTTERANCES)/ Downsample; 21 | startd= 1; 22 | end 23 | 24 | nr= UttSearch_End(MAXNUTTERANCES)- startr; 25 | nd= nr; 26 | 27 | if( startd+ nd> floor( deg_Nsamples/ Downsample) ) 28 | nd= floor( deg_Nsamples/ Downsample)- startd; 29 | end 30 | % fprintf( 'nr,nd is %d,%d\n', nr, nd); 31 | 32 | else 33 | startr= UttSearch_Start(Utt_id); 34 | startd= startr+ Crude_DelayEst/ Downsample; 35 | 36 | if ( startd< 0 ) 37 | startr= 1- Crude_DelayEst/ Downsample; 38 | startd= 1; 39 | end 40 | 41 | nr= UttSearch_End(Utt_id)- startr; 42 | nd = nr; 43 | if( startd+ nd> floor( deg_Nsamples/ Downsample)+ 1) 44 | nd = floor( deg_Nsamples/ Downsample)- startd+ 1; 45 | end 46 | end 47 | 48 | max_Y= 0.0; 49 | I_max_Y= nr; 50 | if( (nr> 1) && (nd> 1) ) 51 | Y= FFTNXCorr( ref_logVAD, startr, nr, deg_logVAD, startd, nd); 52 | [max_Y, I_max_Y]= max( Y); 53 | if (max_Y<= 0) 54 | max_Y= 0; 55 | I_max_Y= nr; 56 | end 57 | end 58 | 59 | % fprintf( 'max_Y, I_max_Y is %f, %d\n', max_Y, I_max_Y); 60 | 61 | if( Utt_id== WHOLE_SIGNAL ) 62 | Crude_DelayEst= (I_max_Y- nr)* Downsample; 63 | Crude_DelayConf= 0.0; 64 | % fprintf( 1, 'I_max_Y, nr, Crude_DelayEst is %f, %f, %f\n', ... 65 | % I_max_Y, nr, Crude_DelayEst); 66 | elseif( Utt_id == MAXNUTTERANCES ) 67 | Utt_Delay(MAXNUTTERANCES)= (I_max_Y- nr)* Downsample+ ... 68 | Utt_DelayEst(MAXNUTTERANCES); 69 | % fprintf( 'startr, startd, nr, nd, I_max, Utt_Delay[%d] is %d, %d, %d, %d, %d, %d\n', ... 70 | % MAXNUTTERANCES, startr, startd, nr, nd, ... 71 | % I_max_Y, Utt_Delay(MAXNUTTERANCES) ); 72 | else 73 | % fprintf( 'I_max_Y, nr is %d, %d\n', I_max_Y, nr); 74 | Utt_DelayEst(Utt_id)= (I_max_Y- nr)* Downsample+ ... 75 | Crude_DelayEst; 76 | end 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/enhanced.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/obj_evaluation/enhanced.wav -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/fix_power_level.m: -------------------------------------------------------------------------------- 1 | function mod_data= fix_power_level( data, data_Nsamples, maxNsamples) 2 | % this function is used for level normalization, i.e., to fix the power 3 | % level of data to a preset number, and return it to mod_data. 4 | 5 | global Downsample DATAPADDING_MSECS SEARCHBUFFER Fs 6 | global TARGET_AVG_POWER 7 | TARGET_AVG_POWER= 1e7; 8 | 9 | align_filter_dB= [0,-500; 50, -500; 100, -500; 125, -500; 160, -500; 200, -500; 10 | 250, -500; 300, -500; 350, 0; 400, 0; 500, 0; 600, 0; 630, 0; 11 | 800, 0; 1000, 0; 1250, 0; 1600, 0; 2000, 0; 2500, 0; 3000, 0; 12 | 3250, 0; 3500, -500; 4000, -500; 5000, -500; 6300, -500; 8000, -500]; 13 | 14 | align_filtered= apply_filter( data, data_Nsamples, align_filter_dB); 15 | power_above_300Hz = pow_of (align_filtered, SEARCHBUFFER* Downsample+ 1, ... 16 | data_Nsamples- SEARCHBUFFER* Downsample+ DATAPADDING_MSECS* (Fs/ 1000), ... 17 | maxNsamples- 2* SEARCHBUFFER* Downsample+ DATAPADDING_MSECS* (Fs/ 1000)); 18 | 19 | global_scale= sqrt( TARGET_AVG_POWER/ power_above_300Hz); 20 | % fprintf( 1, '\tglobal_scale is %f\n', global_scale); 21 | mod_data= data* global_scale; 22 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/id_searchwindows.m: -------------------------------------------------------------------------------- 1 | function id_searchwindows( ref_VAD, ref_Nsamples, deg_VAD, deg_Nsamples); 2 | 3 | global MINUTTLENGTH Downsample MINUTTLENGTH SEARCHBUFFER 4 | global Crude_DelayEst Nutterances UttSearch_Start UttSearch_End 5 | 6 | Utt_num = 1; 7 | speech_flag = 0; 8 | 9 | VAD_length= floor( ref_Nsamples/ Downsample); 10 | del_deg_start= MINUTTLENGTH- Crude_DelayEst/ Downsample; 11 | del_deg_end= floor((deg_Nsamples- Crude_DelayEst)/ Downsample)-... 12 | MINUTTLENGTH; 13 | 14 | for count= 1: VAD_length 15 | VAD_value= ref_VAD(count); 16 | if( (VAD_value> 0) && (speech_flag== 0) ) 17 | speech_flag= 1; 18 | this_start= count; 19 | UttSearch_Start(Utt_num)= count- SEARCHBUFFER; 20 | if( UttSearch_Start(Utt_num)< 0 ) 21 | UttSearch_Start(Utt_num)= 0; 22 | end 23 | end 24 | 25 | if( ((VAD_value== 0) || (count == (VAD_length-1))) && ... 26 | (speech_flag == 1) ) 27 | speech_flag = 0; 28 | UttSearch_End(Utt_num) = count + SEARCHBUFFER; 29 | if( UttSearch_End(Utt_num) > VAD_length - 1 ) 30 | UttSearch_End(Utt_num) = VAD_length -1; 31 | end 32 | 33 | if( ((count - this_start) >= MINUTTLENGTH) &&... 34 | (this_start < del_deg_end) &&... 35 | (count > del_deg_start) ) 36 | Utt_num= Utt_num + 1; 37 | end 38 | end 39 | end 40 | Utt_num= Utt_num- 1; 41 | Nutterances = Utt_num; 42 | 43 | % fprintf( 1, 'Nutterances is %d\n', Nutterances); 44 | 45 | % fid= fopen( 'mat_utt.txt', 'wt'); 46 | % fprintf( fid, '%d\n', UttSearch_Start( 1: Nutterances)); 47 | % fprintf( fid, '\n'); 48 | % fprintf( fid, '%d\n', UttSearch_End( 1: Nutterances)); 49 | % fclose(fid); 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/id_utterances.m: -------------------------------------------------------------------------------- 1 | function id_utterances( ref_Nsamples, ref_VAD, deg_Nsamples) 2 | 3 | global Largest_uttsize MINUTTLENGTH MINUTTLENGTH Crude_DelayEst 4 | global Downsample SEARCHBUFFER Nutterances Utt_Start 5 | global Utt_End Utt_Delay 6 | 7 | Utt_num = 1; 8 | speech_flag = 0; 9 | VAD_length = floor( ref_Nsamples / Downsample); 10 | % fprintf( 1, 'VAD_length is %d\n', VAD_length); 11 | 12 | del_deg_start = MINUTTLENGTH - Crude_DelayEst / Downsample; 13 | del_deg_end = floor((deg_Nsamples- Crude_DelayEst)/ Downsample) ... 14 | - MINUTTLENGTH; 15 | 16 | for count = 1: VAD_length 17 | VAD_value = ref_VAD(count); 18 | if( (VAD_value > 0.0) && (speech_flag == 0) ) 19 | speech_flag = 1; 20 | this_start = count; 21 | Utt_Start (Utt_num) = count; 22 | end 23 | 24 | if( ((VAD_value == 0) || (count == VAD_length)) && ... 25 | (speech_flag == 1) ) 26 | speech_flag = 0; 27 | Utt_End (Utt_num) = count; 28 | 29 | if( ((count - this_start) >= MINUTTLENGTH) && ... 30 | (this_start < del_deg_end) && ... 31 | (count > del_deg_start) ) 32 | Utt_num = Utt_num + 1; 33 | end 34 | end 35 | end 36 | 37 | Utt_Start(1) = SEARCHBUFFER+ 1; 38 | Utt_End(Nutterances) = VAD_length - SEARCHBUFFER+ 1; 39 | 40 | for Utt_num = 2: Nutterances 41 | this_start = Utt_Start(Utt_num)- 1; 42 | last_end = Utt_End(Utt_num - 1)- 1; 43 | count = floor( (this_start + last_end) / 2); 44 | Utt_Start(Utt_num) = count+ 1; 45 | Utt_End(Utt_num - 1) = count+ 1; 46 | end 47 | 48 | this_start = (Utt_Start(1)- 1) * Downsample + Utt_Delay(1); 49 | if( this_start < (SEARCHBUFFER * Downsample) ) 50 | count = SEARCHBUFFER + floor( ... 51 | (Downsample - 1 - Utt_Delay(1)) / Downsample); 52 | Utt_Start(1) = count+ 1; 53 | end 54 | 55 | last_end = (Utt_End(Nutterances)- 1) * Downsample + 1 + ... 56 | Utt_Delay(Nutterances); 57 | % fprintf( 'Utt_End(%d) is %d\n', Nutterances, Utt_End(Nutterances)); 58 | % fprintf( 'last_end is %d\n', last_end); 59 | % fprintf( 'Utt_Delay(%d) is %d\n', Nutterances, Utt_Delay(Nutterances)); 60 | if( last_end > (deg_Nsamples - SEARCHBUFFER * Downsample+ 1) ) 61 | count = floor( (deg_Nsamples - Utt_Delay(Nutterances)) / Downsample) ... 62 | - SEARCHBUFFER; 63 | Utt_End(Nutterances) = count+ 1; 64 | end 65 | 66 | for Utt_num = 2: Nutterances 67 | this_start = (Utt_Start(Utt_num)- 1) * Downsample + Utt_Delay(Utt_num); 68 | last_end = (Utt_End(Utt_num - 1)- 1) * Downsample + Utt_Delay(Utt_num - 1); 69 | if( this_start < last_end ) 70 | count = floor( (this_start + last_end) / 2); 71 | this_start = floor( (Downsample- 1+ count- Utt_Delay(Utt_num))... 72 | / Downsample); 73 | last_end = floor( (count - Utt_Delay(Utt_num - 1))... 74 | / Downsample); 75 | Utt_Start(Utt_num) = this_start+ 1; 76 | Utt_End(Utt_num- 1) = last_end+ 1; 77 | end 78 | end 79 | 80 | Largest_uttsize= max( Utt_End- Utt_Start); 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/input_filter.m: -------------------------------------------------------------------------------- 1 | function [mod_ref_data, mod_deg_data]= input_filter( ref_data, ref_Nsamples, ... 2 | deg_data, deg_Nsamples) 3 | 4 | mod_ref_data= DC_block( ref_data, ref_Nsamples); 5 | mod_deg_data= DC_block( deg_data, deg_Nsamples); 6 | 7 | mod_ref_data= apply_filters( mod_ref_data, ref_Nsamples); 8 | mod_deg_data= apply_filters( mod_deg_data, deg_Nsamples); 9 | 10 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/none: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/pow_of.m: -------------------------------------------------------------------------------- 1 | function power= pow_of( data, start_point, end_point, divisor) 2 | 3 | power= sum( data( start_point: end_point).^ 2)/ divisor; -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/readme.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/obj_evaluation/readme.pdf -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/sp04.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/obj_evaluation/sp04.wav -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/sp04_babble_sn10.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/obj_evaluation/sp04_babble_sn10.wav -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/time_align.m: -------------------------------------------------------------------------------- 1 | function time_align(ref_data, ref_Nsamples, ... 2 | deg_data, deg_Nsamples, Utt_id) 3 | 4 | global Utt_DelayEst Utt_Delay Utt_DelayConf UttSearch_Start UttSearch_End 5 | global Align_Nfft Downsample Window 6 | 7 | estdelay = Utt_DelayEst(Utt_id); 8 | 9 | H = zeros( 1, Align_Nfft); 10 | X1= zeros( 1, Align_Nfft); 11 | X2= zeros( 1, Align_Nfft); 12 | 13 | startr = (UttSearch_Start(Utt_id)- 1)* Downsample+ 1; 14 | startd = startr + estdelay; 15 | if ( startd < 0 ) 16 | startr = 1 -estdelay; 17 | startd = 1; 18 | end 19 | 20 | while( ((startd + Align_Nfft) <= deg_Nsamples) && ... 21 | ((startr + Align_Nfft) <= ((UttSearch_End(Utt_id)- 1) * Downsample)) ) 22 | X1= ref_data( startr: startr+ Align_Nfft- 1).* Window; 23 | X2= deg_data( startd: startd+ Align_Nfft- 1).* Window; 24 | 25 | % find cross-correlation between X1 and X2 26 | X1_fft= fft( X1, Align_Nfft ); 27 | X1_fft_conj= conj( X1_fft); 28 | X2_fft= fft( X2, Align_Nfft ); 29 | X1= ifft( X1_fft_conj.* X2_fft, Align_Nfft ); 30 | 31 | X1= abs( X1); 32 | v_max = max( X1)* 0.99; 33 | 34 | X1_greater_vmax= find( X1 > v_max ); 35 | H( X1_greater_vmax )= H( X1_greater_vmax )+ v_max^ 0.125; 36 | 37 | startr = startr+ Align_Nfft/ 4; 38 | startd = startd+ Align_Nfft/ 4; 39 | 40 | end 41 | 42 | X1= H; 43 | X2= 0; 44 | Hsum = sum( H); 45 | 46 | X2(1) = 1.0; 47 | kernel = Align_Nfft / 64; 48 | 49 | for count= 2: kernel 50 | X2( count)= 1- (count- 1)/ kernel; 51 | X2( Align_Nfft- count+ 2)= 1- (count- 1)/ kernel; 52 | end 53 | 54 | X1_fft= fft( X1, Align_Nfft ); 55 | X2_fft= fft( X2, Align_Nfft ); 56 | 57 | X1= ifft( X1_fft.* X2_fft, Align_Nfft ); 58 | 59 | if (Hsum> 0) 60 | H= abs( X1)/ Hsum; 61 | else 62 | H= 0; 63 | end 64 | 65 | [v_max, I_max] = max( H); 66 | if( I_max- 1 >= (Align_Nfft/2) ) 67 | I_max = I_max- Align_Nfft; 68 | end 69 | 70 | Utt_Delay(Utt_id) = estdelay + I_max- 1; 71 | Utt_DelayConf(Utt_id) = v_max; % confidence 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/utterance_locate.m: -------------------------------------------------------------------------------- 1 | function utterance_locate (ref_data, ref_Nsamples, ref_VAD, ref_logVAD,... 2 | deg_data, deg_Nsamples, deg_VAD, deg_logVAD); 3 | 4 | global Nutterances Utt_Delay Utt_DelayConf Utt_Start Utt_End Utt_DelayEst 5 | 6 | id_searchwindows( ref_VAD, ref_Nsamples, deg_VAD, deg_Nsamples); 7 | 8 | for Utt_id= 1: Nutterances 9 | %fprintf( 1, 'Utt_id is %d\n', Utt_id); 10 | crude_align( ref_logVAD, ref_Nsamples, deg_logVAD, deg_Nsamples, Utt_id); 11 | time_align(ref_data, ref_Nsamples, ... 12 | deg_data, deg_Nsamples, Utt_id); 13 | end 14 | 15 | id_utterances( ref_Nsamples, ref_VAD, deg_Nsamples); 16 | 17 | 18 | utterance_split( ref_data, ref_Nsamples, ref_VAD, ref_logVAD, ... 19 | deg_data, deg_Nsamples, deg_VAD, deg_logVAD); 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/obj_evaluation/white_noise.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/obj_evaluation/white_noise.wav -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/res_eva.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/res_eva.m -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/res_imp.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/res_imp.m -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/bin/work.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/bin/work.m -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/clean_speech/readme.md: -------------------------------------------------------------------------------- 1 | ## *clean speech* folder 2 | 3 | Used to store clean speech 4 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/enhanced_speech/readme.md: -------------------------------------------------------------------------------- 1 | ## *enhanced speech* folder 2 | 3 | Used to store enhanced speech to be evaluated 4 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/runLSD.m: -------------------------------------------------------------------------------- 1 | clear; 2 | clc; 3 | addpath('./bin'); 4 | %LogSD_FFT.exe CH01M001.dat CH01M001-white+10dB.dat > test.txt 5 | [enhancedFiles]=find_wav('.\EnhancedSpeech' ); 6 | numEnhancedFile=size(enhancedFiles,1); 7 | fid=fopen('LSD.txt','wt'); 8 | 9 | cleanFilePath='.\cleanSpeech\TIMIT_1_TEST.wav'; 10 | cleanSig = audioread(cleanFilePath); 11 | cleanSig = cleanSig.*32768; 12 | fid_ = fopen('temp_clean.dat','w'); 13 | fwrite(fid_,cleanSig,'short'); 14 | 15 | for i=1:numEnhancedFile 16 | enhancedFilePath=enhancedFiles(i,:); 17 | enhancedSig = audioread(enhancedFilePath); 18 | enhancedSig = enhancedSig.*32768; 19 | fid_1 = fopen('temp_enhanced.dat','w'); 20 | fwrite(fid_1,enhancedSig,'short'); 21 | 22 | 23 | system(['.\bin\LogSD_AR ','temp_clean.dat',' ','temp_enhanced.dat',' > LSD_result_singleFile.txt']); 24 | LSD=importdata('LSD_result_singleFile.txt'); 25 | delete('LSD_result_singleFile.txt'); 26 | fclose(fid_1); 27 | delete('temp_enhanced.dat'); 28 | fprintf(fid,'%s\t\t',enhancedFilePath); 29 | fprintf(fid,'%s\n',num2str(LSD)); 30 | end 31 | fclose(fid_); 32 | delete('temp_clean.dat'); 33 | fclose(fid); -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/runPESQ.m: -------------------------------------------------------------------------------- 1 | clear; 2 | clc; 3 | %PESQ_LQ.exe +8000 CH01M001.dat CH01M001-white+10dB.dat > test.txt 4 | addpath('bin'); 5 | addpath('bin\obj_evaluation') 6 | path = '.\EnhancedSpeech\'; 7 | [enhancedFiles]=find_wav(path); 8 | numEnhancedFile=size(enhancedFiles,1); 9 | fid=fopen('PESQ.txt','wt'); 10 | 11 | cleanFilePath='.\cleanSpeech\TIMIT_1_TEST.wav'; 12 | cleanSig = audioread(cleanFilePath); 13 | for i=1:numEnhancedFile 14 | enhancedFilePath=enhancedFiles(i,:); 15 | 16 | k=0; 17 | enhancedSig = audioread(enhancedFilePath); 18 | short = min(length(enhancedSig),length(cleanSig)); 19 | 20 | cleanSig = cleanSig(1:1:short); 21 | enhancedSig = enhancedSig(1:1:short); 22 | 23 | audiowrite('temp_clean.wav',cleanSig,8000,'BitsPerSample',16); 24 | audiowrite('temp_enhanced.wav',enhancedSig,8000,'BitsPerSample',16); 25 | PESQ_O=pesq('temp_clean.wav','temp_enhanced.wav'); 26 | delete('temp_clean.wav'); 27 | delete('temp_enhanced.wav'); 28 | 29 | fprintf(fid,'%s\t\t',enhancedFilePath(length(path)+2:end)); 30 | fprintf(fid,'%s\n',num2str(PESQ_O)); 31 | end 32 | fclose(fid); -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/runSSNR.m: -------------------------------------------------------------------------------- 1 | clear; 2 | clc; 3 | addpath('bin') 4 | %SSNR.exe CH01F051.dat vts.dat > old.txt 5 | [enhancedFiles]=find_wav('.\EnhancedSpeech\1' ); 6 | [noisyFiles] = find_wav('.\Noisy_irm'); 7 | numEnhancedFile=size(enhancedFiles,1); 8 | numNoisyFile=size(noisyFiles,1); 9 | assert(numEnhancedFile == numNoisyFile, ['error!']); 10 | 11 | fid=fopen('SSNR_result1.txt','wt'); 12 | 13 | cleanFilePath='.\cleanSpeech\TIMIT_1_TEST.wav'; 14 | cleanSig = audioread(cleanFilePath); 15 | cleanSig = cleanSig.*32768./max(cleanSig); 16 | fid_ = fopen('temp_clean.dat','w'); 17 | fwrite(fid_,cleanSig,'short'); 18 | 19 | for i=1:numEnhancedFile 20 | 21 | enhancedFilePath=enhancedFiles(i,:); 22 | noisyFilePath = noisyFiles(i,:); 23 | 24 | enhancedSig = audioread(enhancedFilePath); 25 | noisySig = audioread(noisyFilePath); 26 | enhancedSig = enhancedSig.*32768./max(enhancedSig); 27 | noisySig = noisySig.*32768./max(noisySig); 28 | fid_1 = fopen('temp_enhanced.dat','w'); 29 | fwrite(fid_1,enhancedSig,'short'); 30 | fid_2 = fopen('temp_noisy.dat','w'); 31 | fwrite(fid_2,noisySig,'short'); 32 | 33 | system(['.\bin\SSNR ','temp_clean.dat',' ','temp_noisy.dat',' > SSNR_result_singleFile.txt']); 34 | SSNR1=importdata('SSNR_result_singleFile.txt'); 35 | delete('SSNR_result_singleFile.txt') 36 | 37 | system(['.\bin\SSNR ','temp_clean.dat',' ','temp_enhanced.dat',' > SSNR_result_singleFile.txt']); 38 | SSNR2=importdata('SSNR_result_singleFile.txt'); 39 | delete('SSNR_result_singleFile.txt') 40 | 41 | SSNRI=SSNR2-SSNR1; 42 | fprintf(fid,'%s\t\t',enhancedFilePath); 43 | fprintf(fid,'%s\n',num2str(SSNRI)); 44 | 45 | fclose(fid_1); 46 | fclose(fid_2); 47 | delete('temp_enhanced.dat'); 48 | delete('temp_noisy.dat'); 49 | end 50 | fclose(fid_); 51 | delete('temp_clean.dat'); 52 | fclose(fid); -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/runSSNR1.m: -------------------------------------------------------------------------------- 1 | clear; 2 | clc; 3 | addpath('bin') 4 | %SSNR.exe CH01F051.dat vts.dat > old.txt 5 | path = '.\EnhancedSpeech'; 6 | [enhancedFiles]=find_wav(path); 7 | numEnhancedFile=size(enhancedFiles,1); 8 | 9 | fid=fopen('SSNR.txt','wt'); 10 | 11 | cleanFilePath='.\cleanSpeech\TIMIT_1_TEST.wav'; 12 | cleanSig = audioread(cleanFilePath); 13 | cleanSig = cleanSig.*32768; 14 | fid_ = fopen('temp_clean.dat','w'); 15 | fwrite(fid_,cleanSig,'short'); 16 | 17 | for i=1:numEnhancedFile 18 | 19 | enhancedFilePath=enhancedFiles(i,:); 20 | 21 | enhancedSig = audioread(enhancedFilePath); 22 | enhancedSig = enhancedSig.*32768; 23 | fid_1 = fopen('temp_enhanced.dat','w'); 24 | fwrite(fid_1,enhancedSig,'short'); 25 | 26 | system(['.\bin\SSNR ','temp_clean.dat',' ','temp_enhanced.dat',' > SSNR_result_singleFile.txt']); 27 | SSNR=importdata('SSNR_result_singleFile.txt'); 28 | delete('SSNR_result_singleFile.txt') 29 | 30 | fprintf(fid,'%s\t\t',enhancedFilePath(length(path)+2:end)); 31 | fprintf(fid,'%s\n',num2str(SSNR)); 32 | 33 | fclose(fid_1); 34 | delete('temp_enhanced.dat'); 35 | end 36 | fclose(fid_); 37 | delete('temp_clean.dat'); 38 | fclose(fid); -------------------------------------------------------------------------------- /speech_quality_objective_evaluation/runSTOI.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/speech_quality_objective_evaluation/runSTOI.m -------------------------------------------------------------------------------- /wiener_filtering/TIMIT_1_TEST-F16+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/TIMIT_1_TEST-F16+5db.wav -------------------------------------------------------------------------------- /wiener_filtering/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering/in_babble.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/in_babble.wav -------------------------------------------------------------------------------- /wiener_filtering/in_train.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/in_train.wav -------------------------------------------------------------------------------- /wiener_filtering/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering/out_TIMIT_1_TEST-F16+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/out_TIMIT_1_TEST-F16+5db.wav -------------------------------------------------------------------------------- /wiener_filtering/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /wiener_filtering/results/mel_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/results/mel_0.png -------------------------------------------------------------------------------- /wiener_filtering/results/mel_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/results/mel_10.png -------------------------------------------------------------------------------- /wiener_filtering/results/mel_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/results/mel_15.png -------------------------------------------------------------------------------- /wiener_filtering/results/mel_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/results/mel_5.png -------------------------------------------------------------------------------- /wiener_filtering/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /wiener_filtering/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering/sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_TIMIT_10_TEST-Babble+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_TIMIT_10_TEST-Babble+5db.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_TIMIT_10_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_TIMIT_10_TEST-White+5db.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_TIMIT_10_TEST.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_TIMIT_10_TEST.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_TIMIT_1_TEST-Babble+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_TIMIT_1_TEST-Babble+5db.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_TIMIT_1_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_TIMIT_1_TEST-White+5db.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_TIMIT_1_TEST.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_TIMIT_1_TEST.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_babble.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_babble.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/in_train.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/in_train.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_TIMIT_1_TEST-Babble+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_TIMIT_1_TEST-Babble+5db.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_TIMIT_1_TEST-White+5db.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_TIMIT_1_TEST-White+5db.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_babble_ConMinTrack.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_babble_ConMinTrack.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_babble_MCRA.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_babble_MCRA.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_babble_MCRA2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_babble_MCRA2.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_babble_Weight.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_babble_Weight.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_train_ConMinTrack.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_train_ConMinTrack.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_train_MCRA.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_train_MCRA.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_train_MCRA2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_train_MCRA2.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/out_train_Weight.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/out_train_Weight.wav -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/Continuous_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/Continuous_0.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/Continuous_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/Continuous_10.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/Continuous_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/Continuous_15.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/Continuous_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/Continuous_5.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/MCRA2_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/MCRA2_0.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/MCRA2_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/MCRA2_10.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/MCRA2_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/MCRA2_15.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/MCRA2_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/MCRA2_5.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/MCRA_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/MCRA_0.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/MCRA_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/MCRA_10.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/MCRA_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/MCRA_15.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/MCRA_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/MCRA_5.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/Weight_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/Weight_0.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/Weight_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/Weight_10.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/Weight_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/Weight_15.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/Weight_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results/Weight_5.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results_TIMIT/WF_Babble_ConMinTrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results_TIMIT/WF_Babble_ConMinTrack.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results_TIMIT/WF_Babble_MCRA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results_TIMIT/WF_Babble_MCRA.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results_TIMIT/WF_Babble_MCRA2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results_TIMIT/WF_Babble_MCRA2.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results_TIMIT/WF_Babble_Weight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results_TIMIT/WF_Babble_Weight.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results_TIMIT/WF_White_ConMinTrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results_TIMIT/WF_White_ConMinTrack.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results_TIMIT/WF_White_MCRA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results_TIMIT/WF_White_MCRA.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results_TIMIT/WF_White_MCRA2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results_TIMIT/WF_White_MCRA2.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results_TIMIT/WF_White_Weight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/results_TIMIT/WF_White_Weight.png -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/results_TIMIT/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /wiener_filtering_noise_estimation/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_noise_estimation/sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_os/in_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/in_SNR0_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_os/in_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/in_SNR10_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_os/in_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/in_SNR15_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_os/in_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/in_SNR5_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_os/in_babble.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/in_babble.wav -------------------------------------------------------------------------------- /wiener_filtering_os/in_train.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/in_train.wav -------------------------------------------------------------------------------- /wiener_filtering_os/out_SNR0_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/out_SNR0_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_os/out_SNR10_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/out_SNR10_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_os/out_SNR15_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/out_SNR15_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_os/out_SNR15_sp01000.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/out_SNR15_sp01000.wav -------------------------------------------------------------------------------- /wiener_filtering_os/out_SNR5_sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/out_SNR5_sp01.wav -------------------------------------------------------------------------------- /wiener_filtering_os/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /wiener_filtering_os/results/OS_mel_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/results/OS_mel_0.png -------------------------------------------------------------------------------- /wiener_filtering_os/results/OS_mel_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/results/OS_mel_10.png -------------------------------------------------------------------------------- /wiener_filtering_os/results/OS_mel_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/results/OS_mel_15.png -------------------------------------------------------------------------------- /wiener_filtering_os/results/OS_mel_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/results/OS_mel_5.png -------------------------------------------------------------------------------- /wiener_filtering_os/results/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /wiener_filtering_os/sp01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipchengrui/traditional-speech-enhancement/79cefa66c7a69587f1864a7334cc9da7e31e883d/wiener_filtering_os/sp01.wav --------------------------------------------------------------------------------