|
Download README.md from wq2012/wavenet-waveform-coder: direct link, hf CLI and curl.
- Browser
- Download file 6.03 kB
-
https://huggingface.co/wq2012/wavenet-waveform-coder/resolve/main/README.md
- Command line
-
hf download hf://wq2012/wavenet-waveform-coder/README.md
-
curl -L -o README.md https://huggingface.co/wq2012/wavenet-waveform-coder/resolve/main/README.md
6.03 kB
| language: | |
| - en | |
| license: apache-2.0 | |
| library_name: tensorflow | |
| tags: | |
| - audio | |
| - speech-coding | |
| - neural-audio-codec | |
| - wavenet | |
| - arithmetic-coding | |
| - icassp2018 | |
| - safetensors | |
| - gguf | |
| - tflite | |
| datasets: | |
| - librispeech_asr | |
| - vctk | |
| # WaveNet Closed-Loop Waveform Speech Coder (`WW`, ICASSP 2018) | |
| **This is not an officially supported Google product.** | |
| > *This model repository is an open-source reproduction of the paper **W. Bastiaan Kleijn, Felicia S. C. Lim, Alejandro Luebs, Jan Skoglund, Florian Stimberg, Quan Wang, Thomas C. Walters, "WaveNet Based Low Rate Speech Coding," ICASSP 2018 (arXiv:1712.01120)**, created after the original publication using open-source frameworks and datasets.* | |
| - **GitHub Repository**: [wq2012/wavenet_coding](https://github.com/wq2012/wavenet_coding) | |
| - **PyPI Package**: [`wavenet-coding`](https://pypi.org/project/wavenet-coding/) | |
| - **Interactive Demo Space**: [wq2012/wavenet-coding-demo](https://huggingface.co/spaces/wq2012/wavenet-coding-demo) | |
| ## Model Summary | |
| Unconditioned closed-loop autoregressive WaveNet speech coder (`WW`, Section 2.3 & Section 3.2) predicting 256-level 8-bit μ-law categorical posteriors at 16 kHz (`2` blocks × `10` dilated causal residual layers) paired with a bit-exact 32-bit integer arithmetic coder. | |
| ### Exported Artifacts Included in This Repository | |
| 1. `model.safetensors`: Hugging Face SafeTensors FP32 weights. | |
| 2. `config.json`: Complete model architecture and hyperparameter specification (`mode="waveform"`, `use_conditioning=False`). | |
| 3. `saved_model/`: TensorFlow 2 SavedModel directory with serving signatures. | |
| 4. `model_fp32.tflite` (`1,114,152` bytes) & `model_int8.tflite` (`238,392` bytes): Verified TensorFlow Lite flatbuffers. | |
| 5. `model_f16.gguf` & `model_q4_k_m.gguf`: Verified GGUF v3 binary files (`164` tensors) for C++/edge inference. | |
| 6. `training_metrics.json` & `evaluation_metrics.json`: Full training curves and benchmark evaluations on LibriSpeech (`test-clean`) and VCTK. | |
| ## Training Progression (`training_metrics.json`) | |
| - **Training Corpus**: `48` speaker-disjoint utterances (`64` windows, `105.82 s` audio) from LibriSpeech `test-clean` + CSTR VCTK at 16 kHz (`-18.4 dBFS` active level) | |
| - **Wall-Clock Training Time**: `35.48 s` (`15` epochs) | |
| - **Initial Eval Cross-Entropy**: `7.8660` bits/sample (`5.4523` nats/sample) | |
| - **Final Eval Cross-Entropy**: `4.8773` bits/sample (`3.3807` nats/sample, train: `5.4709` bits/sample) | |
| ## Evaluation Results — Closed-Loop Waveform Coding Rates (Section 3.2) | |
| | Dataset / Split | Mean Conditional Entropy HÌ„ (bits/sample) | Theoretical Lower-Bound Bitrate (kb/s) | Cross-Entropy Rate R (bits/sample) | Cross-Entropy Bitrate (kb/s) | Active Arithmetic Coded Rate (bits/sample) | Active Arithmetic Bitrate (kb/s) | Arithmetic Coder Lossless Match Rate | | |
| | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | |
| | **Paper Reported (WSJ0, Sec. 3.2, 60-layer conditioned WW)** | 2.61 | ~42.0 | 2.62 (2.65 Eq. 3 gen. rate) | ~42.0 | — | — | — | | |
| | **Reproduced — LibriSpeech (`test-clean`, 16 utt)** | **6.0642** | **97.03** | **5.5285** (3.8320 nats) | **88.46** | **5.5230** | **88.37** | **100.0% (16/16)** | | |
| | **Reproduced — VCTK Corpus (16 utt)** | **6.0231** | **96.37** | **5.3500** (3.7083 nats) | **85.60** | **5.3485** | **85.58** | **100.0% (16/16)** | | |
| ### Waveform Quality Comparison (`WW` vs. 8-bit μ-law & 16 kHz Reference) | |
| | Dataset | Codec | Bitrate (kb/s) | ITU-T P.862.2 PESQ-WB ↑ | STOI (0–1) ↑ | F0 RMSE (Hz) ↓ | MCD (dB) ↓ | LSD (dB) ↓ | SegSNR (dB) ↑ | High-Band (4–8 kHz) Energy (%) | | |
| | :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | |
| | **LibriSpeech (`test-clean`)** | **Reference (16 kHz)** | 256.00 | 4.644 | 1.000 | 0.000 | 0.000 | 0.000 | 45.000 | 5.378% | | |
| | **LibriSpeech (`test-clean`)** | **8-bit μ-law (128 kb/s)** | 128.00 | 4.141 | 0.999 | 0.103 | 0.470 | 0.870 | 35.144 | 5.388% | | |
| | **LibriSpeech (`test-clean`)** | **WaveNet Waveform (`WW`)** | **88.46 (88.37 active)** | **4.141** | **0.999** | **0.103** | **0.470** | **0.870** | **35.144** | **5.388%** | | |
| | **VCTK Corpus** | **Reference (16 kHz)** | 256.00 | 4.644 | 1.000 | 0.000 | 0.000 | 0.000 | 45.000 | 1.604% | | |
| | **VCTK Corpus** | **8-bit μ-law (128 kb/s)** | 128.00 | 3.721 | 0.999 | 0.121 | 0.552 | 0.860 | 34.748 | 1.613% | | |
| | **VCTK Corpus** | **WaveNet Waveform (`WW`)** | **85.60 (85.58 active)** | **3.721** | **0.999** | **0.121** | **0.552** | **0.860** | **34.748** | **1.613%** | | |
| ## Usage Examples | |
| ### Load SafeTensors in Python (`wavenet-coding`) | |
| ```python | |
| import numpy as np | |
| from huggingface_hub import snapshot_download | |
| from wavenet_coding import inference | |
| model_dir = snapshot_download("wq2012/wavenet-waveform-coder") | |
| codec = inference.WaveNetWaveformCodec.from_pretrained(model_dir) | |
| t = np.linspace(0.0, 0.2, 3200, endpoint=False, dtype=np.float32) | |
| waveform_16k = 0.12 * np.sin(2.0 * np.pi * 180.0 * t) | |
| result = codec.encode_and_decode(waveform_16k, run_arithmetic_coder=True) | |
| print("Lossless exact match:", result["lossless_exact_match"]) | |
| print("Active arithmetic rate (kb/s):", result["arithmetic_kbps_active"]) | |
| ``` | |
| ### Run TFLite Flatbuffer (`model_int8.tflite`) | |
| ```python | |
| import tensorflow as tf | |
| interpreter = tf.lite.Interpreter(model_path="model_int8.tflite") | |
| interpreter.allocate_tensors() | |
| input_details = interpreter.get_input_details() | |
| output_details = interpreter.get_output_details() | |
| ``` | |
| ### Inspect GGUF v3 Binary (`model_q4_k_m.gguf`) | |
| ```python | |
| from wavenet_coding import export | |
| header = export.inspect_gguf_header("model_q4_k_m.gguf") | |
| print(header) | |
| ``` | |
| ## Citation | |
| ```bibtex | |
| @inproceedings{kleijn2018wavenet, | |
| title={WaveNet Based Low Rate Speech Coding}, | |
| author={Kleijn, W. Bastiaan and Lim, Felicia S. C. and Luebs, Alejandro and Skoglund, Jan and Stimberg, Florian and Wang, Quan and Walters, Thomas C.}, | |
| booktitle={2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)}, | |
| pages={676--680}, | |
| year={2018}, | |
| organization={IEEE} | |
| } | |
| ``` | |