{"id":16889808,"url":"https://github.com/jonashaag/pydct","last_synced_at":"2025-04-11T13:08:38.798Z","repository":{"id":136754598,"uuid":"269693652","full_name":"jonashaag/pydct","owner":"jonashaag","description":"Short-Time Discrete Cosine Transform (DCT) for Python. SciPy, TensorFlow and PyTorch implementations.","archived":false,"fork":false,"pushed_at":"2021-02-11T15:50:35.000Z","size":154,"stargazers_count":27,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-05T00:44:48.449Z","etag":null,"topics":["dct","discrete-cosine-transform","python","pytorch","scipy","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonashaag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-06-05T15:59:12.000Z","updated_at":"2024-05-26T07:01:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"6bb83907-229d-4878-aec4-619b535ce66d","html_url":"https://github.com/jonashaag/pydct","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/jonashaag%2Fpydct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonashaag%2Fpydct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonashaag%2Fpydct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonashaag%2Fpydct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonashaag","download_url":"https://codeload.github.com/jonashaag/pydct/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248404690,"owners_count":21097805,"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":["dct","discrete-cosine-transform","python","pytorch","scipy","tensorflow"],"created_at":"2024-10-13T16:59:08.042Z","updated_at":"2025-04-11T13:08:38.786Z","avatar_url":"https://github.com/jonashaag.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyDCT\n\nShort-Time Discrete Cosine Transform (DCT) for Python. SciPy, TensorFlow and PyTorch implementations.\nThis similar to `librosa.core.{stft,istft}`, `tf.signal.{stft,inverse_stft}`, `torch.{stft,istft}` but using DCT.\n\nNote that the PyTorch implementation requires [torch-dct](https://github.com/zh217/torch-dct).\n\n## Usage\n\nSee also: [Example notebook](./example.ipynb).\n\n```py\n# Short-Time DCT\nspectrogram = pydct.scipy.sdct(example_audio, frame_length=1024, frame_step=256)\nspectrogram_tf = pydct.tf.sdct_tf(example_audio, frame_length=1024, frame_step=256)\nspectrogram_torch = pydct.torch.sdct_torch(torch.from_numpy(example_audio), frame_length=1024, frame_step=256)\n\n# Inverse Short-Time DCT\nexample_audio_2 = pydct.scipy.isdct(spectrogram, frame_step=256)\nexample_audio_2_tf = pydct.tf.isdct_tf(spectrogram_tf, frame_step=256)\nexample_audio_2_torch = pydct.torch.isdct_torch(spectrogram_torch, frame_step=256)\n\n# Plot with librosa\nlibrosa.display.specshow(\n    librosa.core.amplitude_to_db(spectrogram),\n    y_axis='log',\n)\n```\n\n## Differences between SciPy and TensorFlow implementations\n\n### Batching\n\n#### SciPy\n\nNo batch support.\n\n#### TensorFlow\n\nSupports batching:\n\n```py\nexample_audio_batch.shape  # (32, ...)\nspectrogram_tf_batch = pydct.tf.sdct_tf(example_audio_batch, ...)\nspectrogram_tf_batch.shape  # TensorShape([32, ..., ...])\n```\n\n#### PyTorch\n\nSupports batching plus arbitrary number of additional dimensions:\n\n- `pydct.torch.sdct_torch: (..., time) -\u003e (..., frequencies, time)`\n- `pydct.torch.isdct_torch: (..., frequencies, time) -\u003e (..., time)`\n\n### Order of dimensions\n\n#### SciPy\n\nDimension order is \"F-T\", identical to `librosa.core.stft`: `pydct.scipy.sdct(...) -\u003e (frequencies, time)`\n\n#### TensorFlow\n\nDimension order is \"T-F\", identical to `tf.signal.stft`: `pydct.tf.sdct_tf(...) -\u003e (batch, time, frequencies)`\n\n#### PyTorch\n\nDimension order is \"F-T\", identical to `torch.stft`: `pydct.torch.sdct_torch(...) -\u003e (..., frequencies, time)`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonashaag%2Fpydct","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonashaag%2Fpydct","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonashaag%2Fpydct/lists"}