{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Quantization of Signals\n", "\n", "*This jupyter notebook is part of a [collection of notebooks](../index.ipynb) on various topics of Digital Signal Processing. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Requantization of a Speech Signal\n", "\n", "The following example illustrates the requantization of a speech signal. The signal was originally recorded with a wordlength of $w=16$ bits. It is requantized by a [uniform mid-tread quantizer](linear_uniform_characteristic.ipynb#Mid-Tread-Chacteristic-Curve) to various wordlengths. The signal-to-noise ratio (SNR) after quantization is computed and a portion of the (quantized) signal is plotted. It is further possible to listen to the requantized signal and the quantization error. Note, the level of the quantization error has been normalized for better audability of the effects." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import soundfile as sf\n", "\n", "idx = 130000 # index to start plotting\n", "\n", "\n", "def uniform_midtread_quantizer(x, w):\n", " \"\"\"Uniform mid-tread quantizer with limiter.\"\"\"\n", " # quantization step\n", " Q = 1 / (2 ** (w - 1))\n", " # limiter\n", " x = np.copy(x)\n", " idx = np.where(x <= -1)\n", " x[idx] = -1\n", " idx = np.where(x > 1 - Q)\n", " x[idx] = 1 - Q\n", " # linear uniform quantization\n", " xQ = Q * np.floor(x / Q + 1 / 2)\n", "\n", " return xQ\n", "\n", "\n", "def evaluate_requantization(x, xQ):\n", " \"\"\"Evaluate rquantization by plotting signals and computing SNR.\"\"\"\n", " e = xQ - x\n", " # SNR\n", " SNR = 10 * np.log10(np.var(x) / np.var(e))\n", " print(\"SNR: {:2.1f} dB\".format(SNR))\n", " # plot signals\n", " plt.figure(figsize=(10, 4))\n", " plt.plot(x[idx : idx + 100], label=r\"signal $x[k]$\")\n", " plt.plot(xQ[idx : idx + 100], label=r\"requantized signal $x_Q[k]$\")\n", " plt.plot(e[idx : idx + 100], label=r\"quantization error $e[k]$\")\n", " plt.xlabel(r\"sample index $k$\")\n", " plt.grid()\n", " plt.legend()\n", " # normalize error\n", " e = 0.2 * e / np.max(np.abs(e))\n", " return e\n", "\n", "\n", "# load speech sample\n", "x, fs = sf.read(\"../data/speech.wav\")\n", "# normalize sample\n", "x = x / np.max(np.abs(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Original Signal**\n", "\n", "[../data/speech.wav](../data/speech.wav)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Requantization to 8 bit" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SNR: 34.0 dB\n" ] }, { "data": { "application/pdf": "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+AUiYYxt2CdK5ezf5i0naeD0D9fSoDiscXZVNB84i3x4S/WEjcSUppVHU5zd2hYOK4MUu9gWFl5hEaTyapjxeVPVwJJSlOXN+n93PcerG7oKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMtT2JsaXF1ZSAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgODEgL1EgMTAxIC9lIDEwNyAvayAxMjAgL3ggXSAvVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnREZXNjcmlwdG9yIDEzIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTIgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDgKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk5NSA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMTUgMCBvYmoKPDwgL1EgMTYgMCBSIC9lIDE3IDAgUiAvayAxOCAwIFIgL3ggMTkgMCBSID4+CmVuZG9iagoyNCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDMw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NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMyAwIG9iago8PCAvYSAyNCAwIFIgL2JyYWNrZXRsZWZ0IDI1IDAgUiAvYnJhY2tldHJpZ2h0IDI2IDAgUiAvZCAyNyAwIFIgL2UgMjggMCBSCi9laWdodCAyOSAwIFIgL2ZvdXIgMzAgMCBSIC9nIDMxIDAgUiAvaSAzMiAwIFIgL2wgMzMgMCBSIC9tIDM0IDAgUgovbiAzNiAwIFIgL28gMzcgMCBSIC9vbmUgMzggMCBSIC9wIDM5IDAgUiAvcGVyaW9kIDQwIDAgUiAvcSA0MSAwIFIKL3IgNDIgMCBSIC9zIDQzIDAgUiAvc2l4IDQ0IDAgUiAvc3BhY2UgNDUgMCBSIC90IDQ2IDAgUiAvdGhyZWUgNDcgMCBSCi90d28gNDggMCBSIC91IDQ5IDAgUiAveCA1MCAwIFIgL3ogNTEgMCBSIC96ZXJvIDUyIDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjIgMCBSIC9GMiAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EzIDw8IC9DQSAwLjggL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMC44ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9GMS1EZWphVnVTYW5zLW1pbnVzIDM1IDAgUiA+PgplbmRvYmoKMiAwIG9iago8PCAvQ291bnQgMSAvS2lkcyBbIDEwIDAgUiBdIC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKNTMgMCBvYmoKPDwgL0NyZWF0aW9uRGF0ZSAoRDoyMDIxMDExODEyMTU0NyswMicwMCcpCi9DcmVhdG9yIChNYXRwbG90bGliIHYzLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChNYXRwbG90bGliIHBkZiBiYWNrZW5kIHYzLjMuMikgPj4KZW5kb2JqCnhyZWYKMCA1NAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAxNjg3OCAwMDAwMCBuIAowMDAwMDE2NjAyIDAwMDAwIG4gCjAwMDAwMTY2NDUgMDAwMDAgbiAKMDAwMDAxNjc4NyAwMDAwMCBuIAowMDAwMDE2ODA4IDAwMDAwIG4gCjAwMDAwMTY4MjkgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwMzk4IDAwMDAwIG4gCjAwMDAwMDAyMDggMDAwMDAgbiAKMDAwMDAwNDM0OCAwMDAwMCBuIAowMDAwMDA2MDQyIDAwMDAwIG4gCjAwMDAwMDU4MzQgMDAwMDAgbiAKMDAwMDAwNTQ5OCAwMDAwMCBuIAowMDAwMDA3MDk1IDAwMDAwIG4gCjAwMDAwMDQzNjkgMDAwMDAgbiAKMDAwMDAwNDc3NSAwMDAwMCBuIAowMDAwMDA1MTc1IDAwMDAwIG4gCjAwMDAwMDUzMzQgMDAwMDAgbiAKMDAwMDAxNTE5NyAwMDAwMCBuIAowMDAwMDE0OTk3IDAwMDAwIG4gCjAwMDAwMTQ1MjIgMDAwMDAgbiAKMDAwMDAxNjI1MCAwMDAwMCBuIAowMDAwMDA3MTU3IDAwMDAwIG4gCjAwMDAwMDc1MzQgMDAwMDAgbiAKMDAwMDAwNzY3NyAwMDAwMCBuIAowMDAwMDA3ODE2IDAwMDAwIG4gCjAwMDAwMDgxMTYgMDAwMDAgbiAKMDAwMDAwODQzNCAwMDAwMCBuIAowMDAwMDA4ODk5IDAwMDAwIG4gCjAwMDAwMDkwNjEgMDAwMDAgbiAKMDAwMDAwOTQ3MiAwMDAwMCBuIAowMDAwMDA5NjEyIDAwMDAwIG4gCjAwMDAwMDk3MjkgMDAwMDAgbiAKMDAwMDAxMDA1NyAwMDAwMCBuIAowMDAwMDEwMjI3IDAwMDAwIG4gCjAwMDAwMTA0NjEgMDAwMDAgbiAKMDAwMDAxMDc0OCAwMDAwMCBuIAowMDAwMDEwOTAwIDAwMDAwIG4gCjAwMDAwMTEyMDkgMDAwMDAgbiAKMDAwMDAxMTMzMCAwMDAwMCBuIAowMDAwMDExNjQwIDAwMDAwIG4gCjAwMDAwMTE4NzAgMDAwMDAgbiAKMDAwMDAxMjI3NSAwMDAwMCBuIAowMDAwMDEyNjY1IDAwMDAwIG4gCjAwMDAwMTI3NTQgMDAwMDAgbiAKMDAwMDAxMjk1OCAwMDAwMCBuIAowMDAwMDEzMzY5IDAwMDAwIG4gCjAwMDAwMTM2OTAgMDAwMDAgbiAKMDAwMDAxMzkzNCAwMDAwMCBuIAowMDAwMDE0MDkzIDAwMDAwIG4gCjAwMDAwMTQyMzkgMDAwMDAgbiAKMDAwMDAxNjkzOCAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDUzIDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSA1NCA+PgpzdGFydHhyZWYKMTcwOTUKJSVFT0YK\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-01-18T12:15:47.593462\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xQ = uniform_midtread_quantizer(x, 8)\n", "e = evaluate_requantization(x, xQ)\n", "sf.write(\"speech_8bit.wav\", xQ, fs)\n", "sf.write(\"speech_8bit_error.wav\", e, fs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Requantized Signal**\n", "\n", "[speech_8bit.wav](speech_8bit.wav)\n", "\n", "**Quantization Error**\n", "\n", "[speech_8bit_error.wav](speech_8bit_error.wav)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Requantization to 6 bit" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SNR: 22.9 dB\n" ] }, { "data": { "application/pdf": "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x6sbugplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjw8IC9CYXNlRm9udCAvRGVqYVZ1U2Fucy1PYmxpcXVlIC9DaGFyUHJvY3MgMTUgMCBSCi9FbmNvZGluZyA8PCAvRGlmZmVyZW5jZXMgWyA4MSAvUSAxMDEgL2UgMTA3IC9rIDEyMCAveCBdIC9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTMgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMiAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMiAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNSAwIG9iago8PCAvUSAxNiAwIFIgL2UgMTcgMCBSIC9rIDE4IDAgUiAveCAxOSAwIFIgPj4KZW5kb2JqCjI0IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzA0ID4+CnN0cmVhbQp4nD2SO5LDMAxDe52CF8iM+JPk82Qnlff+7T4yyVaASYkAKC91mbKmPCBpJgn/0eHhYjvld9iezczAtUQvE8sp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Tj+MDgBgIl5ZgOyuRDlL0o6ln2+8x/cPQABTtAplbmRzdHJlYW0KZW5kb2JqCjIyIDAgb2JqCjw8IC9CYXNlRm9udCAvRGVqYVZ1U2FucyAvQ2hhclByb2NzIDIzIDAgUgovRW5jb2RpbmcgPDwKL0RpZmZlcmVuY2VzIFsgMzIgL3NwYWNlIDQ2IC9wZXJpb2QgNDggL3plcm8gL29uZSAvdHdvIC90aHJlZSAvZm91ciA1NCAvc2l4IDU2IC9laWdodAo5MSAvYnJhY2tldGxlZnQgOTMgL2JyYWNrZXRyaWdodCA5NyAvYSAxMDAgL2QgL2UgMTAzIC9nIDEwNSAvaSAxMDggL2wgL20gL24KL28gL3AgL3EgL3IgL3MgL3QgL3UgMTIwIC94IDEyMiAveiBdCi9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udERlc2NyaXB0b3IgMjEgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMjAgMCBSID4+CmVuZG9iagoyMSAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjIwIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIzIDAgb2JqCjw8IC9hIDI0IDAgUiAvYnJhY2tldGxlZnQgMjUgMCBSIC9icmFja2V0cmlnaHQgMjYgMCBSIC9kIDI3IDAgUiAvZSAyOCAwIFIKL2VpZ2h0IDI5IDAgUiAvZm91ciAzMCAwIFIgL2cgMzEgMCBSIC9pIDMyIDAgUiAvbCAzMyAwIFIgL20gMzQgMCBSCi9uIDM2IDAgUiAvbyAzNyAwIFIgL29uZSAzOCAwIFIgL3AgMzkgMCBSIC9wZXJpb2QgNDAgMCBSIC9xIDQxIDAgUgovciA0MiAwIFIgL3MgNDMgMCBSIC9zaXggNDQgMCBSIC9zcGFjZSA0NSAwIFIgL3QgNDYgMCBSIC90aHJlZSA0NyAwIFIKL3R3byA0OCAwIFIgL3UgNDkgMCBSIC94IDUwIDAgUiAveiA1MSAwIFIgL3plcm8gNTIgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMiAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTMgPDwgL0NBIDAuOCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAwLjggPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0YxLURlamFWdVNhbnMtbWludXMgMzUgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iago1MyAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMjEwMTE4MTIxNTQ4KzAyJzAwJykKL0NyZWF0b3IgKE1hdHBsb3RsaWIgdjMuMy4yLCBodHRwczovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKE1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgdjMuMy4yKSA+PgplbmRvYmoKeHJlZgowIDU0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDE2ODAyIDAwMDAwIG4gCjAwMDAwMTY1MjYgMDAwMDAgbiAKMDAwMDAxNjU2OSAwMDAwMCBuIAowMDAwMDE2NzExIDAwMDAwIG4gCjAwMDAwMTY3MzIgMDAwMDAgbiAKMDAwMDAxNjc1MyAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTggMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDA0MjcyIDAwMDAwIG4gCjAwMDAwMDU5NjYgMDAwMDAgbiAKMDAwMDAwNTc1OCAwMDAwMCBuIAowMDAwMDA1NDIyIDAwMDAwIG4gCjAwMDAwMDcwMTkgMDAwMDAgbiAKMDAwMDAwNDI5MyAwMDAwMCBuIAowMDAwMDA0Njk5IDAwMDAwIG4gCjAwMDAwMDUwOTkgMDAwMDAgbiAKMDAwMDAwNTI1OCAwMDAwMCBuIAowMDAwMDE1MTIxIDAwMDAwIG4gCjAwMDAwMTQ5MjEgMDAwMDAgbiAKMDAwMDAxNDQ0NiAwMDAwMCBuIAowMDAwMDE2MTc0IDAwMDAwIG4gCjAwMDAwMDcwODEgMDAwMDAgbiAKMDAwMDAwNzQ1OCAwMDAwMCBuIAowMDAwMDA3NjAxIDAwMDAwIG4gCjAwMDAwMDc3NDAgMDAwMDAgbiAKMDAwMDAwODA0MCAwMDAwMCBuIAowMDAwMDA4MzU4IDAwMDAwIG4gCjAwMDAwMDg4MjMgMDAwMDAgbiAKMDAwMDAwODk4NSAwMDAwMCBuIAowMDAwMDA5Mzk2IDAwMDAwIG4gCjAwMDAwMDk1MzYgMDAwMDAgbiAKMDAwMDAwOTY1MyAwMDAwMCBuIAowMDAwMDA5OTgxIDAwMDAwIG4gCjAwMDAwMTAxNTEgMDAwMDAgbiAKMDAwMDAxMDM4NSAwMDAwMCBuIAowMDAwMDEwNjcyIDAwMDAwIG4gCjAwMDAwMTA4MjQgMDAwMDAgbiAKMDAwMDAxMTEzMyAwMDAwMCBuIAowMDAwMDExMjU0IDAwMDAwIG4gCjAwMDAwMTE1NjQgMDAwMDAgbiAKMDAwMDAxMTc5NCAwMDAwMCBuIAowMDAwMDEyMTk5IDAwMDAwIG4gCjAwMDAwMTI1ODkgMDAwMDAgbiAKMDAwMDAxMjY3OCAwMDAwMCBuIAowMDAwMDEyODgyIDAwMDAwIG4gCjAwMDAwMTMyOTMgMDAwMDAgbiAKMDAwMDAxMzYxNCAwMDAwMCBuIAowMDAwMDEzODU4IDAwMDAwIG4gCjAwMDAwMTQwMTcgMDAwMDAgbiAKMDAwMDAxNDE2MyAwMDAwMCBuIAowMDAwMDE2ODYyIDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gNTMgMCBSIC9Sb290IDEgMCBSIC9TaXplIDU0ID4+CnN0YXJ0eHJlZgoxNzAxOQolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-01-18T12:15:47.946903\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xQ = uniform_midtread_quantizer(x, 6)\n", "e = evaluate_requantization(x, xQ)\n", "sf.write(\"speech_6bit.wav\", xQ, fs)\n", "sf.write(\"speech_6bit_error.wav\", e, fs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Requantized Signal**\n", "\n", "[speech_6bit.wav](speech_6bit.wav)\n", "\n", "**Quantization Error**\n", "\n", "[speech_6bit_error.wav](speech_6bit_error.wav)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Requantization to 4 bit" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SNR: 11.7 dB\n" ] }, { "data": { "application/pdf": "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IG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMtT2JsaXF1ZSAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgODEgL1EgMTAxIC9lIDEwNyAvayAxMjAgL3ggXSAvVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnREZXNjcmlwdG9yIDEzIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTIgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDgKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk5NSA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMTUgMCBvYmoKPDwgL1EgMTYgMCBSIC9lIDE3IDAgUiAvayAxOCAwIFIgL3ggMTkgMCBSID4+CmVuZG9iagoyNCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDMwNCA+PgpzdHJlYW0KeJw9kjuSwzAMQ3udghfIjPiT5PNkJ5X3/u0+MslWgEmJACgvdZmypjwgaSYJ/9Hh4WI75XfYns3MwLVELxPLKc+hK8TcRfmymY26sjrFqsMwnVv0qJyLhk2T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U7QKZW5kc3RyZWFtCmVuZG9iagoyMiAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMgL0NoYXJQcm9jcyAyMyAwIFIKL0VuY29kaW5nIDw8Ci9EaWZmZXJlbmNlcyBbIDMyIC9zcGFjZSA0NiAvcGVyaW9kIDQ4IC96ZXJvIC9vbmUgL3R3byAvdGhyZWUgL2ZvdXIgNTQgL3NpeCA1NiAvZWlnaHQKOTEgL2JyYWNrZXRsZWZ0IDkzIC9icmFja2V0cmlnaHQgOTcgL2EgMTAwIC9kIC9lIDEwMyAvZyAxMDUgL2kgMTA4IC9sIC9tIC9uCi9vIC9wIC9xIC9yIC9zIC90IC91IDEyMCAveCAxMjIgL3ogXQovVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnREZXNjcmlwdG9yIDIxIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDIwIDAgUiA+PgplbmRvYmoKMjEgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoyMCAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMyAwIG9iago8PCAvYSAyNCAwIFIgL2JyYWNrZXRsZWZ0IDI1IDAgUiAvYnJhY2tldHJpZ2h0IDI2IDAgUiAvZCAyNyAwIFIgL2UgMjggMCBSCi9laWdodCAyOSAwIFIgL2ZvdXIgMzAgMCBSIC9nIDMxIDAgUiAvaSAzMiAwIFIgL2wgMzMgMCBSIC9tIDM0IDAgUgovbiAzNiAwIFIgL28gMzcgMCBSIC9vbmUgMzggMCBSIC9wIDM5IDAgUiAvcGVyaW9kIDQwIDAgUiAvcSA0MSAwIFIKL3IgNDIgMCBSIC9zIDQzIDAgUiAvc2l4IDQ0IDAgUiAvc3BhY2UgNDUgMCBSIC90IDQ2IDAgUiAvdGhyZWUgNDcgMCBSCi90d28gNDggMCBSIC91IDQ5IDAgUiAveCA1MCAwIFIgL3ogNTEgMCBSIC96ZXJvIDUyIDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjIgMCBSIC9GMiAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EzIDw8IC9DQSAwLjggL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMC44ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9GMS1EZWphVnVTYW5zLW1pbnVzIDM1IDAgUiA+PgplbmRvYmoKMiAwIG9iago8PCAvQ291bnQgMSAvS2lkcyBbIDEwIDAgUiBdIC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKNTMgMCBvYmoKPDwgL0NyZWF0aW9uRGF0ZSAoRDoyMDIxMDExODEyMTU0OCswMicwMCcpCi9DcmVhdG9yIChNYXRwbG90bGliIHYzLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChNYXRwbG90bGliIHBkZiBiYWNrZW5kIHYzLjMuMikgPj4KZW5kb2JqCnhyZWYKMCA1NAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAxNjc3NiAwMDAwMCBuIAowMDAwMDE2NTAwIDAwMDAwIG4gCjAwMDAwMTY1NDMgMDAwMDAgbiAKMDAwMDAxNjY4NSAwMDAwMCBuIAowMDAwMDE2NzA2IDAwMDAwIG4gCjAwMDAwMTY3MjcgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwMzk3IDAwMDAwIG4gCjAwMDAwMDAyMDggMDAwMDAgbiAKMDAwMDAwNDI0NiAwMDAwMCBuIAowMDAwMDA1OTQwIDAwMDAwIG4gCjAwMDAwMDU3MzIgMDAwMDAgbiAKMDAwMDAwNTM5NiAwMDAwMCBuIAowMDAwMDA2OTkzIDAwMDAwIG4gCjAwMDAwMDQyNjcgMDAwMDAgbiAKMDAwMDAwNDY3MyAwMDAwMCBuIAowMDAwMDA1MDczIDAwMDAwIG4gCjAwMDAwMDUyMzIgMDAwMDAgbiAKMDAwMDAxNTA5NSAwMDAwMCBuIAowMDAwMDE0ODk1IDAwMDAwIG4gCjAwMDAwMTQ0MjAgMDAwMDAgbiAKMDAwMDAxNjE0OCAwMDAwMCBuIAowMDAwMDA3MDU1IDAwMDAwIG4gCjAwMDAwMDc0MzIgMDAwMDAgbiAKMDAwMDAwNzU3NSAwMDAwMCBuIAowMDAwMDA3NzE0IDAwMDAwIG4gCjAwMDAwMDgwMTQgMDAwMDAgbiAKMDAwMDAwODMzMiAwMDAwMCBuIAowMDAwMDA4Nzk3IDAwMDAwIG4gCjAwMDAwMDg5NTkgMDAwMDAgbiAKMDAwMDAwOTM3MCAwMDAwMCBuIAowMDAwMDA5NTEwIDAwMDAwIG4gCjAwMDAwMDk2MjcgMDAwMDAgbiAKMDAwMDAwOTk1NSAwMDAwMCBuIAowMDAwMDEwMTI1IDAwMDAwIG4gCjAwMDAwMTAzNTkgMDAwMDAgbiAKMDAwMDAxMDY0NiAwMDAwMCBuIAowMDAwMDEwNzk4IDAwMDAwIG4gCjAwMDAwMTExMDcgMDAwMDAgbiAKMDAwMDAxMTIyOCAwMDAwMCBuIAowMDAwMDExNTM4IDAwMDAwIG4gCjAwMDAwMTE3NjggMDAwMDAgbiAKMDAwMDAxMjE3MyAwMDAwMCBuIAowMDAwMDEyNTYzIDAwMDAwIG4gCjAwMDAwMTI2NTIgMDAwMDAgbiAKMDAwMDAxMjg1NiAwMDAwMCBuIAowMDAwMDEzMjY3IDAwMDAwIG4gCjAwMDAwMTM1ODggMDAwMDAgbiAKMDAwMDAxMzgzMiAwMDAwMCBuIAowMDAwMDEzOTkxIDAwMDAwIG4gCjAwMDAwMTQxMzcgMDAwMDAgbiAKMDAwMDAxNjgzNiAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDUzIDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSA1NCA+PgpzdGFydHhyZWYKMTY5OTMKJSVFT0YK\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-01-18T12:15:48.338133\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xQ = uniform_midtread_quantizer(x, 4)\n", "e = evaluate_requantization(x, xQ)\n", "sf.write(\"speech_4bit.wav\", xQ, fs)\n", "sf.write(\"speech_4bit_error.wav\", e, fs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Requantized Signal**\n", "\n", "[speech_4bit.wav](speech_4bit.wav)\n", "\n", "**Quantization Error**\n", "\n", "[speech_4bit_error.wav](speech_4bit_error.wav)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Requantization to 2 bit" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SNR: 2.4 dB\n" ] }, { "data": { "application/pdf": "JVBERi0xLjQKJazcIKu6CjEgMCBvYmoKPDwgL1BhZ2VzIDIgMCBSIC9UeXBlIC9DYXRhbG9nID4+CmVuZG9iago4IDAgb2JqCjw8IC9FeHRHU3RhdGUgNCAwIFIgL0ZvbnQgMyAwIFIgL1BhdHRlcm4gNSAwIFIKL1Byb2NTZXQgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0gL1NoYWRpbmcgNiAwIFIKL1hPYmplY3QgNyAwIFIgPj4KZW5kb2JqCjEwIDAgb2JqCjw8IC9Bbm5vdHMgWyBdIC9Db250ZW50cyA5IDAgUgovR3JvdXAgPDwgL0NTIC9EZXZpY2VSR0IgL1MgL1RyYW5zcGFyZW5jeSAvVHlwZSAvR3JvdXAgPj4KL01lZGlhQm94IFsgMCAwIDYwMy42ODEyNSAyNjcuODMxODc1IF0gL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDggMCBSCi9UeXBlIC9QYWdlID4+CmVuZG9iago5IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTEgMCBSID4+CnN0cmVhbQp4nN2aS4/cxhVG9/0ruEwWour9WFpwLCA720KyCLIwZNmxIsmRFcdBfn3OvZzuusXu1kzb8SCJAAEz35CXVfdVp4r0y+uDX75d3PKa/z8tfnnO/28Pjt/eHoqLa2k+ZH57Y34Lpa4t+lYzspt//cvh8M3h6ScY+cBdzw+H2Nakd/FDq3rV20Pu5Ux9Y9RQ3FqOJk8WJlUf9H65YD7ntoTg11qWH14tf1zeLU8/CTKesPye2THTtTFXbHXne3G1JQb69NNX//ju5asvnj9bXn44lLi2lFor07CHOg3l8OXh8+X98SkOf5qn4FGUew3GvMajHw7PCMpPh2cvlqef+cW75cU3B3leyb5zbeTxaQ1Vp/3i68Nv3G+XF6+X373QUfxnHHJ4vswO8aWsMaSwC6SRb3bJ/Sbvc4rPfe0lteyCK3uvhMdwSyiYczGXNM3ByDe75X6T97kllLCmlHzrLvW9W9JjuIXhraGF7uI0ByPf7Jb7Td7nlljS2kPMOKOHvVvKY7gl1cj9geSe5mDkm91yv8n73JJo38mFVkqNOe/c0h7DLbmWNSSfm58XiSHf7Jb7Td7nlkwbqi5k3xjz3i3enfzynlvd8sQxCC5Yu17j3RqWl2+xKEsp7i3bjcP8bz6IgUNeg+u4pccqq6zY/kr/UFYfag+9tNMf3uof+lqTD97e8be7O2KqJZdwlN+oHNZaWwwu+tMfXh2fkENMw8yiclx9xV/W/nfXDL07PjhSUm48+evLA7ry3H/eeaL7aqd7bThPPwtHH/5VL5Hk/FWb2dFs6av3ZwQz1Ac2skvmYrrLnMnalpYmwyppVUhcn7fsMvna1l0QSLuje94f3OrEiCTj3Q/cz81PPn31+qs//PjlV+8+PHn73bsfPyyffi/efBR/EtU1xTOHGvlGj04GTy6d7V30qXeZ/vIgp4b/dqcmOkQ+d+qQb3WqNTicOtm7yGZrrnIdhZ3vOHV9FPY4DbzzwPMdh5Fv9YQ1ODwx2fuIJxprT802jR7LEyG6NfYzTxj5Rk9MBk+emO1d90QIZc092y71Szzh16yeYFXMpRV8TGWmcvev8pfqcmtCfn35Yu8kswcjQB2U3HZmLOWltRwXwtsSgOmZVE2r6+Dm0iWWwclEa1+DLyxSTBLoypWtC3JLLH+u5rR4H1bvWq4q04tKqgGXBLdmaUuoPa2MkOehygLfaleZn30oWcpIpgQRdGTvEhvuAt4tLKXMrvessuyGmGpfPItEc6klGbTH7a6lnMvCWsoePgYehM4AAuMKkdzsa5NZqswCwwYMKx0n1NSzXk1wE7uPXBc2W2uCBUpVnaDyrMBWx0cuaVCT6En8nmJH7vTH5HUstIMWWhQrxNTlAOKInh1tIkS10um6bOr0+lworhI6dOXlVp/xKHoB+x14Rm54ckNyRkdj9qOuygAksOhsEwiy7yC2C6SW61knCxASGDaSzLYQ6JI1IL55KqvgfK3vHGPBTaJzEQ/u4rNMWFOqOp7u157gvEXudCX5qmZ65ZfmAslR69p81VnJELijd5KDlCo4W2clQ2Zt57mLDNhxeZLRBzIIT5J5RBYzKbqw6XXNJTbCLxMPNRII0UMgzJVaUJ10C+r9EGQMnhxXO4XgJ8kc/L52YqJ2Gt7EO1H1Roh6FTtVkgXniNdCAstarGKnBolKUDOJ9ZJodUk0/ORqijrMHGUBLkWcFlYX2+Ydordm0lLkKleELJkTqMjCWCgBdSu7GO0oZgfsO0kXems6SvY6naqPXjO2pVa0TKgWRs9CRY44mkROIasdSlM9KzkSGU4MXZ9LEQRiEoPqodSqsQ1UZwoR/2vuxBa33OHaNbPRkpMH7LN5akmmFSnPUn2M7HIdaZ2E8FWnnMWx02iip32Sl6Vu1gmPxgrSXimfoFYo8rTZpjgJ3ZbFxbnkxAOR2qREvNqQamhVHR+pTXY7PiYdCV3h7vokKd29E4+RB6RHUxkKKpGERY44GAeIYyLFSX/D9Vug2Chq+jFjhs5eSNKDvubAfXFMpDhdTL10TRtHHlSdUhH2b52x6clNCm0bztjDC1ZkX2Pf9CJbJ+msshywdGyXU2E5OvKPbtlWnxifmqc2maGUgKcw5Khs8xlJxNalVr+hoIvO6/Ap+O6kaNDFm9Fp/rEZXqkvFg1p8w1v16hyZfSOyC5ikAvUCpsxCi9RhYv4hvmVpDKl3BvteCHdHDs8zSU6E34NshZIJVCQ2ooThVlISLpl00xKGhDCz8gdDxW50zyLPjJSxnQbhtWoLDpo1aupSudZy5YmcaH+u6riosDoF/KbTo3nRM6S4YVGu5DexNx5nSQlGQlEEl8RusC2S7KU+RGXJPd6ur+TRVqHQk0ydeEati2rrI0aC3P+ILFg+k1Tg2WDhaaw6SV2DDczO7UvTiIfWeQlpk5PaVRnP8RoEqmBM7xuiEVn0LQPKkXWH0dwiz6WkmQ0TsxEYkcae7k8U5J40akZloXYWcNU7wzfSR1EYX23ZRgzZSGPvUrmiUXGqWZYmngUrtcFubA+ONWpSox0GU6SBkd1SiaRpQyZponXCE7q8aiz76cvpY2P8VLxegCO0Ug+eryWyDaCqWssXZqbqUa8RjhbpM/p8CnMwiKQpKCEQkl/tU9hVlZqQip6or1on88FlqE9N60zhiWdQWTyhaqkWsR8zb1FcT4GGAOeTToc7bdtoOLPZzUvgNZJxc7KK4Dmctowtn0U0BhcP+5EBqAN1QDaJA5Cs7sWQ2iTPAjNygbRJtkgmpEtos36YLRJN4w26YbRZv0EaZNsII3A56EPSJv0AWmzPCht0g2lzfqgtEk3lDbrg9Im3VDarA9Km6ZrKG3WB6VN+qC0WR6UZnWLabM+MG3SDabN+sC0STeYNusD0ybdYNqsD0ybdINpsz44bdINp836idMm2XDarA9Om3TDabM+OM1G3XLarA9Om3TDabM+OM3qltNm/chpk2o4bdINp836kdQm1ZDarA9Sm3RDatZnFtUm3aDarA9Um3SDarM+UG3SZ1Qz+gnVJtmg2qwPVJt0g2qzPlDN6gbVbMM3qDbJA9Vm+YRqkzxQbZZPqDbJA9Vm+YRqk3xCtVk9odokD1Sb5YFqk08Mqs36QLVJN6g26wPVJt2g2qwPVJv0gWqzPFDN6hbVZv2EapNsUG3WDapZ3aKa1S2qTbpBNatbVJt0g2pWN6g26wPVJn1CNSMbVLO6RbXzk95fdKxWwx2dHWQKDBaYp3DtXz5KbbIxqAR6h22eIqXoWuqW22QnljZoN9jWxUklhjZjW5PCZbvYZmyT13BMss3UVsQtaTvYMNTGRpRddN9Omyy1FRYBxV3LbJElr7fu+o7ZWATI5VTCjtkkaX3XQxyDbOyscmhVTx0Mssmmu7EI66mGQTbFGdye2oRsQj+shbrdNMQmW/FAWWznZIPYfHOyP2vbEeIgNtoQyRH8dg43iA0HSv9LuhU3xMYauGbdXM/EJhRFF6zd74hN9tbkZ4k7YnMSJudD3REbFS0QVctMbL4JXGXdi1tiI4fl1DftgC0k2eBUnZUFtiClQFdLO2CLmCmubnYMsBHxILRRdsAW5eTIyzIwAxt2uG87GrbARpgr1+m5rgW2IDAjrzh3wBZYIdvZsZoMoBdYZIdrXo5l8uYcg2vMT6bU2w7X8AcdOZzhmoPQaGq66bS4RsJi3W2HlwPX5Lit0t/7DtckPIEk1YNjg2satigTn3FNdMK2pY7BNT2ATrVvxz4D17ysHXLQnyyuTaMxuKbW+VlDZXBN9Jy7m2hNRPApbidHg9bEeKaa1PP7czUqdrve0JojD5rPdQdrjv7NBltbloU1iRRtXdPPwpoMl4bT/A7WSBt+CLXvYC3ivOL6NpwZ1kCcuI1nwJp8V0HX2i43sMadsbigvdnCmlzCxLeAGFjreMG5qscJFtb0R1c0AQ2sqXdkFaszrcnZEouni2nGNVlCaJjbWb7hNekVOK1qQhlgI2RUj+vajw2xSZ3E1GjDM7LJ9bV1WuHMbNLiGYLTY9ABbRKtysK1nTkNapN270NMeghjsE3WFUGUWHfcRh6T3tvrG8ttXV6k5K2pWW5jwcs159R33Nak6cTW/I7bJNCplL7nNunapaVtWobbSpVXL05bteG2kiTd+3aeaLitSDvELXHHbUWwggUozdyG7GUFrDtuK4JerPlxx21ZDvNBjLjjtkyzq8BH23GbrGm0tjt9cFtmIsWzoO64LcthPgtx3HGboBr2dYHbcVuSt37tnNuEA9w5t5WQi54SW26TqmfV8WHHbQyHZWnT57exgmTjTeyVl7zTV3EXP5nF6KUPb99e+/CW62/4etdebcx8zPrTT+L2slmIU144/6TT3L5Bpg7z8T5p/SdzQnp7WT4e5laop0WrZ3rU8eIsJ5hyQGrFcrzy5cHIlK4xPGTWlJIlAezTcj49bQxtiC/tRIYsfYYFk/L31epU0/njrBit4Xg+kTeTfJq0fdrwz0Ufv5SPq58d7n3NvjzwNftBPn2kqd49SE62j8FM+YKsuSFJ4Y5Jcff9gflqh35+unF45Od9cXf1+7ZvL3/Hdu2zt6tf7l39Eu8B37hd/jrOTOtPdzbYiMWyFePl7+RoWIImYyLGyJ/Hl3Qa7+2YfrnhmN4EOPqLAR7yjQGW9fshAf5BJ5HkAzq2ivd+7/j+cnR/vDW619Lh78fAUMEsRA/It38dMxQ3T0O9MoMr31le/ZDz/6QCnrBVM/EPS9XrPj9m+ekR83WPUDHTmcgNpyWmeCDOS8Uz5BuLB3J+UPH8D1XD1Wff/ozvj6ZA6Ltc+fg0rtbWlRK91pOu6VcHdO2GBxTQ5aH9igXx+eHfmZwQvAplbmRzdHJlYW0KZW5kb2JqCjExIDAgb2JqCjM2NDEKZW5kb2JqCjE2IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzMzID4+CnN0cmVhbQp4nD2RS27EMAxD9zmFLlDA+sfnmaKr9v7bPjnTLgIRlGKRVN8tS0LlQ+2WjuYz+dTL63Dyc3n2QZ5OdfHYp74uj3wz66lu7469Ga0tU/SWSvgqcM8+vfcUuxUa4J6SSxy6ERQBvQH7Pn9kUBGQ22jodil0mm+p3mJM9oojSaVti+/HSeQ+9XXNC4MKLa3Jf0uqRmybwq7jPv1JIZimA3JUtS2xmnn0sw8jBLJHFitQmSU9OzKfIL+viH/4FyUkc1UTaiw7yDNwcouTUtnotFZcFt4IhHlbE8zo1DslJtAJiKgVRb7HtU5y7FaWutap1uPgILwpGpRDTnJqk7lZyh0y63DlfgoBwgHmfYxGh+gaPudZyEweaiqHM5vltUDEXEwYwsvqXJOOg/o5VRDAqUilA0rOWohILOUc9NkzMQeH1jgB/UX2ur5+AZ84fzYKZW5kc3RyZWFtCmVuZG9iagoxNyAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDMyNyA+PgpzdHJlYW0KeJw9kkuOxDAIRPc5BRdoyfz8OU9Gs+q5/7YfdnoWUaEARVG4a0qT6PJSlxwq2Zv86BVTxc3k74mGxDRxN9DBKfe1owj+BLgOZu4M0UqJQb11icrykbHz19fTlwfvy9thsFF6lphXn5KxBgvydHTxAebc2u5/le8rk44svUpPRe9LvViWqA8x+2L1KdzG5hvbejCeTPFrNlGrmVPW2iK6DNRFSjex1QtQ7VGB41xHbxVtAxCBO0EHlQm1amzBSEi0RdYvzGlC98T/7QG6X9rEdeyD2LSNZ3xFGkPQ3bhHWcPMMep8anPD2tPZJuuU4kwu17I4Vgk0SstYakvwrHpdFGODGWilEM3RamxlaHbo62V4P8gMbzuKsailSs+eN6fgXH3s1xR68DyLHcGbnNgt6OeQrEIGLTZh6ixdr/A55339fgAqPX1GCmVuZHN0cmVhbQplbmRvYmoKMTggMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA4NyA+PgpzdHJlYW0KeJw1jcENwDAIA/+ZwiPEECDZp+qr3f9bSNSPfbKMsVjoUEtxCsI7LjZO3fg2iUNPZgFlJI1lsFFUJ4fEJ2RakrEWs8W+nREQrw7FdqLH/idPuz+4ThnECmVuZHN0cmVhbQplbmRvYmoKMTkgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA5MiA+PgpzdHJlYW0KeJw9jLENwDAIBHum+AUiYYxt2CdK5ezf5i0naeD0D9fSoDiscXZVNB84i3x4S/WEjcSUppVHU5zd2hYOK4MUu9gWFl5hEaTyapjxeVPVwJJSlOXN+n93PcerG7oKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMtT2JsaXF1ZSAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgODEgL1EgMTAxIC9lIDEwNyAvayAxMjAgL3ggXSAvVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnREZXNjcmlwdG9yIDEzIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTIgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTgg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RmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjIwIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIzIDAgb2JqCjw8IC9hIDI0IDAgUiAvYnJhY2tldGxlZnQgMjUgMCBSIC9icmFja2V0cmlnaHQgMjYgMCBSIC9kIDI3IDAgUiAvZSAyOCAwIFIKL2VpZ2h0IDI5IDAgUiAvZm91ciAzMCAwIFIgL2cgMzEgMCBSIC9pIDMyIDAgUiAvbCAzMyAwIFIgL20gMzQgMCBSCi9uIDM2IDAgUiAvbyAzNyAwIFIgL29uZSAzOCAwIFIgL3AgMzkgMCBSIC9wZXJpb2QgNDAgMCBSIC9xIDQxIDAgUgovciA0MiAwIFIgL3MgNDMgMCBSIC9zaXggNDQgMCBSIC9zcGFjZSA0NSAwIFIgL3QgNDYgMCBSIC90d28gNDcgMCBSCi91IDQ4IDAgUiAveCA0OSAwIFIgL3ogNTAgMCBSIC96ZXJvIDUxIDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjIgMCBSIC9GMiAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EzIDw8IC9DQSAwLjggL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMC44ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9GMS1EZWphVnVTYW5zLW1pbnVzIDM1IDAgUiA+PgplbmRvYmoKMiAwIG9iago8PCAvQ291bnQgMSAvS2lkcyBbIDEwIDAgUiBdIC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKNTIgMCBvYmoKPDwgL0NyZWF0aW9uRGF0ZSAoRDoyMDIxMDExODEyMTU0OSswMicwMCcpCi9DcmVhdG9yIChNYXRwbG90bGliIHYzLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChNYXRwbG90bGliIHBkZiBiYWNrZW5kIHYzLjMuMikgPj4KZW5kb2JqCnhyZWYKMCA1MwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAxNjIxNSAwMDAwMCBuIAowMDAwMDE1OTM5IDAwMDAwIG4gCjAwMDAwMTU5ODIgMDAwMDAgbiAKMDAwMDAxNjEyNCAwMDAwMCBuIAowMDAwMDE2MTQ1IDAwMDAwIG4gCjAwMDAwMTYxNjYgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwMzk4IDAwMDAwIG4gCjAwMDAwMDAyMDggMDAwMDAgbiAKMDAwMDAwNDExNCAwMDAwMCBuIAowMDAwMDA1ODA4IDAwMDAwIG4gCjAwMDAwMDU2MDAgMDAwMDAgbiAKMDAwMDAwNTI2NCAwMDAwMCBuIAowMDAwMDA2ODYxIDAwMDAwIG4gCjAwMDAwMDQxMzUgMDAwMDAgbiAKMDAwMDAwNDU0MSAwMDAwMCBuIAowMDAwMDA0OTQxIDAwMDAwIG4gCjAwMDAwMDUxMDAgMDAwMDAgbiAKMDAwMDAxNDU0OCAwMDAwMCBuIAowMDAwMDE0MzQ4IDAwMDAwIG4gCjAwMDAwMTM4NzcgMDAwMDAgbiAKMDAwMDAxNTYwMSAwMDAwMCBuIAowMDAwMDA2OTIzIDAwMDAwIG4gCjAwMDAwMDczMDAgMDAwMDAgbiAKMDAwMDAwNzQ0MyAwMDAwMCBuIAowMDAwMDA3NTgyIDAwMDAwIG4gCjAwMDAwMDc4ODIgMDAwMDAgbiAKMDAwMDAwODIwMCAwMDAwMCBuIAowMDAwMDA4NjY1IDAwMDAwIG4gCjAwMDAwMDg4MjcgMDAwMDAgbiAKMDAwMDAwOTIzOCAwMDAwMCBuIAowMDAwMDA5Mzc4IDAwMDAwIG4gCjAwMDAwMDk0OTUgMDAwMDAgbiAKMDAwMDAwOTgyMyAwMDAwMCBuIAowMDAwMDA5OTkzIDAwMDAwIG4gCjAwMDAwMTAyMjcgMDAwMDAgbiAKMDAwMDAxMDUxNCAwMDAwMCBuIAowMDAwMDEwNjY2IDAwMDAwIG4gCjAwMDAwMTA5NzUgMDAwMDAgbiAKMDAwMDAxMTA5NiAwMDAwMCBuIAowMDAwMDExNDA2IDAwMDAwIG4gCjAwMDAwMTE2MzYgMDAwMDAgbiAKMDAwMDAxMjA0MSAwMDAwMCBuIAowMDAwMDEyNDMxIDAwMDAwIG4gCjAwMDAwMTI1MjAgMDAwMDAgbiAKMDAwMDAxMjcyNCAwMDAwMCBuIAowMDAwMDEzMDQ1IDAwMDAwIG4gCjAwMDAwMTMyODkgMDAwMDAgbiAKMDAwMDAxMzQ0OCAwMDAwMCBuIAowMDAwMDEzNTk0IDAwMDAwIG4gCjAwMDAwMTYyNzUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyA1MiAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgNTMgPj4Kc3RhcnR4cmVmCjE2NDMyCiUlRU9GCg==\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-01-18T12:15:48.785314\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xQ = uniform_midtread_quantizer(x, 2)\n", "e = evaluate_requantization(x, xQ)\n", "sf.write(\"speech_2bit.wav\", xQ, fs)\n", "sf.write(\"speech_2bit_error.wav\", e, fs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Requantized Signal**\n", "\n", "[speech_2bit.wav](speech_2bit.wav)\n", "\n", "**Quantization Error**\n", "\n", "[speech_2bit_error.wav](speech_2bit_error.wav)" ] }, { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "**Copyright**\n", "\n", "This notebook is provided as [Open Educational Resource](https://en.wikipedia.org/wiki/Open_educational_resources). Feel free to use the notebook for your own purposes. The text is licensed under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/), the code of the IPython examples under the [MIT license](https://opensource.org/licenses/MIT). Please attribute the work as follows: *Sascha Spors, Digital Signal Processing - Lecture notes featuring computational examples*." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" } }, "nbformat": 4, "nbformat_minor": 1 }