{"id":18678234,"url":"https://github.com/wvangansbeke/speech-subband-coding","last_synced_at":"2025-09-10T00:24:30.860Z","repository":{"id":109046957,"uuid":"168038523","full_name":"wvangansbeke/Speech-Subband-Coding","owner":"wvangansbeke","description":"Subband filtering with ADPCM","archived":false,"fork":false,"pushed_at":"2019-01-28T21:30:41.000Z","size":1985,"stargazers_count":10,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T22:21:18.234Z","etag":null,"topics":["adpcm","c","filterbank","quantization","speech-processing"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wvangansbeke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-28T21:14:01.000Z","updated_at":"2024-04-19T11:32:20.000Z","dependencies_parsed_at":"2023-03-13T14:19:11.745Z","dependency_job_id":null,"html_url":"https://github.com/wvangansbeke/Speech-Subband-Coding","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wvangansbeke%2FSpeech-Subband-Coding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wvangansbeke%2FSpeech-Subband-Coding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wvangansbeke%2FSpeech-Subband-Coding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wvangansbeke%2FSpeech-Subband-Coding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wvangansbeke","download_url":"https://codeload.github.com/wvangansbeke/Speech-Subband-Coding/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248507467,"owners_count":21115607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adpcm","c","filterbank","quantization","speech-processing"],"created_at":"2024-11-07T09:36:32.383Z","updated_at":"2025-04-12T02:41:02.442Z","avatar_url":"https://github.com/wvangansbeke.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Speech-Subband-Coding\nIn this project a subband filterbank is designed with adaptive quantisation for the compression of stereo\naudio signals with fixed point numbers. This report regards the implementation of a system with the\nfollowing specifications: stereo sound, 16khz fs, 24kbits/s and 150ms max delay.\n\n## Filterbank\nThe transition band is completely determined by a speciffc attenuation in the stopband and the filter or-\nder. If a higher stopband attenuation or steeper transition band is required, a higher filter order needs to\nused, introducing more latency. Furthermore, good performance in the subbands depends on frequency\nselectivity. At higher frequencies the masking effect is spread over a wider range, resulting in a reduced\nnumber of quantisation bits needed. Eventually, by using lower filter orders, a higher amount of overlap\nand less frequency selectivity is introduced causing lower PESQ/SNR scores. The same information is\nafter all encoded with a different amount of bits to exploit the masking effect. On the other hand, a\nhigher filter length creates higher complexity and latency. The latter one is actually a soft constraint,\ni.e. 150ms, and can easily be obtained. It can be divided into two parts. On the one hand the delay\nintroduced by the buffer communication and on the other hand the delay due to the convolution (roughly\nthe filter length divided by a factor of 2). By iterating over multiple filter lengts, the amount of filter taps \nwas determined.\n\n## ADPCM\nThe quantisation algorithm used in this application is called ADPCM or Adaptive Differential Pulse\nCode Modulation. This relies on the use of PCM, which is in fact a discretization of a continuous\n(speech) signal. It is done by quantizing the continuous signal with a given number of bits N.\nThe differential in the name refers to quantizing the difference between succeeding signal samples instead\nof the signal samples themselves. What is actually quantized in this use of the algorithm is the difference\nbetween the signal sample s_n and its previous estimated sample s*\\_n. This leads to smaller signals that\nneed to be quantized, hence smaller differences between the different samples and thus also a more precise\nquantisation with a small number of bits.\nThe final part of the algorithm is the adaptive one. This means something changes every iteration based\non the previous outcome, which could be the step size or the number of bits to quantize the signal\nwith. In this specific application there is chosen to make the number of bits constant for a subband and\nadapt the step size throughout the signal. This is done in an AQB sense or Adaptive Quantisation with\nBackwards estimation. Consequently, the quantized levels are adapted automatically to the range of the\nsignal in a certain window.\n\n# Usage\nThe implementation in both Matlab and C can be found in their respective folders.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwvangansbeke%2Fspeech-subband-coding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwvangansbeke%2Fspeech-subband-coding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwvangansbeke%2Fspeech-subband-coding/lists"}