<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">INFORMATICA</journal-id>
<journal-title-group><journal-title>Informatica</journal-title></journal-title-group>
<issn pub-type="epub">1822-8844</issn><issn pub-type="ppub">0868-4952</issn><issn-l>0868-4952</issn-l>
<publisher>
<publisher-name>Vilnius University</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">INFO1187</article-id>
<article-id pub-id-type="doi">10.15388/Informatica.2018.180</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>An Algorithm for Simple Differential Speech Coding Based on Backward Adaptation Technique</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Tomić</surname><given-names>Stefan S.</given-names></name><email xlink:href="stefan@elfak.rs">stefan@elfak.rs</email><xref ref-type="aff" rid="j_info1187_aff_001"/><xref ref-type="corresp" rid="cor1">∗</xref><bio>
<p><bold>S.S. Tomić</bold> was born in Vranje, Serbia, in 1989. He received MS degree in electrical engineering from the Faculty of Electronic Engineering, Nis, Serbia, in 2013. He is currently a student of doctoral studies at the same faculty. His current research interests include audio and speech signal coding. He has published over 10 papers, from which 6 are in peer-reviewed international journals.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Perić</surname><given-names>Zoran H.</given-names></name><email xlink:href="zoran.peric@elfak.ni.ac.rs">zoran.peric@elfak.ni.ac.rs</email><xref ref-type="aff" rid="j_info1187_aff_001"/><bio>
<p><bold>Z.H. Perić</bold> was born in Niš, Serbia, in 1964. He received the BS, MS and PhD degrees from the Faculty of Electronic Engineering, University of Niš, Serbia, in 1989, 1994 and 1999, respectively. He is a full-time professor at Department of Telecommunications, Faculty of Electronic Engineering, University of Niš. His current research interests include the information theory and signal processing. He is an author and co-author of over 240 papers. Dr. Perić has been a reviewer in a number of journals, including <italic>IEEE Transactions on Information Theory</italic>, <italic>IEEE Transactions on Signal Processing</italic>, <italic>IEEE Transactions on Communications</italic>, <italic>Compel</italic>, <italic>Informatica</italic>, <italic>Information Technology and Control</italic>, <italic>Expert Systems with Applications and Digital Signal Processing</italic>.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Nikolić</surname><given-names>Jelena R.</given-names></name><email xlink:href="jelena.nikolic@elfak.ni.ac.rs">jelena.nikolic@elfak.ni.ac.rs</email><xref ref-type="aff" rid="j_info1187_aff_001"/><bio>
<p><bold>J.R. Nikolić</bold> was born in Prokuplje, Serbia, in 1978. She received the BS, MS and PhD degrees in electrical engineering from the Faculty of Electronic Engineering, University of Niš, Serbia in 2003, 2006 and 2011, respectively. She is currently an assistant professor at the Department of Telecommunications at the same Faculty. Her current research interests include audio, speech and ECG signal compression and approximation methods with application in source coding. She has published over 100 papers, from which 41 in SCI journals. She is a member of the Editorial Board of the Journal of Advanced Computer Science &amp; Technology.</p></bio>
</contrib>
<aff id="j_info1187_aff_001">Faculty of Electronic Engineering, <institution>University of Nis</institution>, Aleksandra Medvedeva 14, Nis, <country>Serbia</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>∗</label>Corresponding author.</corresp>
</author-notes>
<pub-date pub-type="ppub"><year>2018</year></pub-date><pub-date pub-type="epub"><day>1</day><month>1</month><year>2018</year></pub-date><volume>29</volume><issue>3</issue><fpage>539</fpage><lpage>553</lpage><history><date date-type="received"><month>6</month><year>2017</year></date><date date-type="accepted"><month>5</month><year>2018</year></date></history>
<permissions><copyright-statement>© 2018 Vilnius University</copyright-statement><copyright-year>2018</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
<license-p>Open access article under the <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/4.0/">CC BY</ext-link> license.</license-p></license></permissions>
<abstract>
<p>This paper presents a simple differential speech signal coding algorithm, based on backward adaptation. The considered algorithm is executed in frame by frame manner, by implementing predictive and adaptive quantization techniques. Both prediction and adaptation are performed backward, based on the previously quantized input signal frame. This enables us to obtain high quality output signal, without increasing the bit rate. This research puts emphasis on the quantizer design, with the optimal support limit determination, and theoretical performance evaluation. Objective quality of the output signal is evaluated through signal to quantization noise ratio (SQNR). We perform theoretical and experimental analysis of the algorithm performance and provide comparative results of implementing speech signal coding techniques with similar complexity. Experimental results show that our simple differential speech coding algorithm satisfies the G.712 Recommendation for high-quality speech coding at the bit rate of 6 bits per sample. This indicates that the algorithm can be successfully implemented in high quality speech signal coding.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>speech coding algorithm</kwd>
<kwd>backward adaptive technique</kwd>
<kwd>prediction coding</kwd>
<kwd>differential coding</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="j_info1187_s_001">
<label>1</label>
<title>Introduction</title>
<p>It is well known that due to living in the digital era, we meet digitized signals daily, regardless of our occupation and personal interest. As capability to speak represents a crucial human characteristic, which separates humans from other living beings, speech signal takes high place in digital signal processing. Therefore, digital processing of speech signal has always occupied interest and a lot of research was conducted, for the purpose of representing speech signal with the smaller bit rate, while preserving sufficient quality (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Kondoz, <xref ref-type="bibr" rid="j_info1187_ref_009">2004</xref>; Chu, <xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>; Sayood, <xref ref-type="bibr" rid="j_info1187_ref_022">2017</xref>; Rabiner and Schafer, <xref ref-type="bibr" rid="j_info1187_ref_018">1978</xref>). Speech signal coding implies the application of a data compression technique to digitized speech signal samples, by using certain amount of bits per sample (Gibson, <xref ref-type="bibr" rid="j_info1187_ref_004">2016</xref>). The goal is to achieve high quality, by using fewer bits per sample possible. Speech signal coding plays a crucial role in any technology used for speech transmission, as: voice over Internet protocol (VOIP), digital cellular communications, and any system working with digitized speech (Chu, <xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>). Latest expansion in software applications, which offer functionality of voice and video communication, further emphasizes on speech coding, for the purpose of more efficient usage of the available data transmission bandwidth. By lowering the bit rate, we also lower the objective quality of the signal, so that signal compression always presents a compromise between the desired signal quality and the available bandwidth for transmission, or memory for storing the output signal. Different speech coding standards require fulfilling certain conditions regarding bit rate and signal quality (Chu, <xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>).</p>
<p>This paper presents a novel waveform speech signal coding algorithm, based on differential coding scheme. Waveform coding is suitable for application in speech signal coding, and it is known that this type of coding can provide the highest level of speech signal quality (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Kondoz, <xref ref-type="bibr" rid="j_info1187_ref_009">2004</xref>; Chu, <xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>). One of the most familiar and commonly used, simple waveform coder is defined by the G.711 standard (ITU-T, <xref ref-type="bibr" rid="j_info1187_ref_005">1972</xref>). G.711 coder is known as Pulse Code Modulation (PCM), with two basic types, <italic>μ</italic>-law and <italic>A</italic>-law. As PCM utilizes 8 bits per sample, a lot of research was performed for reducing the bit rate, while preserving original quality of the input signal (Kondoz, <xref ref-type="bibr" rid="j_info1187_ref_009">2004</xref>; Gibson, <xref ref-type="bibr" rid="j_info1187_ref_004">2016</xref>). Along with the bit rate, modifications and improvements have been done in the usage of available frequency bands (ITU-T, <xref ref-type="bibr" rid="j_info1187_ref_007">2008</xref>). For instance, ITU-T, Recommendation G.711.1 allows implementation in narrowband and wideband speech signal coding, with sample frequency up to 16 kHz and bit rate ranging from 64 to 90 kbit/s. Since the used bit rate has significant impact on overall algorithm performance, certain techniques have been introduced to lower the bit rate, like linear prediction technique (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Kondoz, <xref ref-type="bibr" rid="j_info1187_ref_009">2004</xref>; Chu, <xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>). Linear prediction implies that the value of the current input signal sample can be represented as a linear combination of the previous samples. The earliest system which implemented this technique was Differential Pulse Code Modulation (DPCM), where prediction has been implemented for calculating the error (difference) signal (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Suma, <xref ref-type="bibr" rid="j_info1187_ref_023">2012</xref>). Difference signal is obtained by subtracting the input signal sample from its predicted value. The main benefit of implementing differential coding is that the obtained difference signal is characterized by smaller variance and lower dynamic amplitude range. This means that the difference signal is more convenient for coding than the original input signal, regardless of the applied coding scheme type. Simplicity and benefits from implementing differential coding maintains this and related techniques interesting for exploitation and motivate researchers to consider it when designing new solutions and algorithms. For instance, in Uddin <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1187_ref_025">2016</xref>), a low bit rate speech signal coding algorithm with the implementation of DPCM has been analysed, and it has been shown that differential coding is suitable for application in coding of correlated speech signals. Predictive coding, which utilizes correlation as well, has been recently implemented in designing a LPC-Based Fronthaul Compression Scheme (Ramalho <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1187_ref_019">2017</xref>, <xref ref-type="bibr" rid="j_info1187_ref_020">2018</xref>), designed to compress LTE signal, by means of predictive and Huffman coding. The compression system from Ramalho <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1187_ref_019">2017</xref>, <xref ref-type="bibr" rid="j_info1187_ref_020">2018</xref>) is characterized by low computational complexity and low latency, while preserving high output signal quality. Microcontroller implementation of DPCM and ADPCM in speech signal compression has also been recently presented in Sarade (<xref ref-type="bibr" rid="j_info1187_ref_021">2017</xref>), and it has been shown how ADPCM can take advantage of correlated signals to achieve more efficient signal compression compared to DPCM technique.</p>
<p>Further implementing the adaptation techniques into DPCM resulted in ADPCM (Adaptive DPCM) algorithm, which exploits correlation between the input signal samples and reduces the bit rate required for coding (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>). Adaptation is most commonly implemented as forward or backward adaptation (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Kondoz, <xref ref-type="bibr" rid="j_info1187_ref_009">2004</xref>; Chu, <xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>; Sayood, <xref ref-type="bibr" rid="j_info1187_ref_022">2017</xref>). Adaptive quantization has wide area of implementation, as it represents a simple method for increasing the objective quality of the output signal. It is successfully applied in speech coding (Suma, <xref ref-type="bibr" rid="j_info1187_ref_023">2012</xref>; Dinčić <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1187_ref_002">2016</xref>), image and video coding (Ortega and Ramchandran, <xref ref-type="bibr" rid="j_info1187_ref_014">1995</xref>), as well as in wireless sensor networks (Fang and Li, <xref ref-type="bibr" rid="j_info1187_ref_003">2008</xref>). In this paper, we combine adaptive quantization with simple differential coding to perform high quality speech coding. The algorithm is convenient for improvements by implementing more complex differential coding and quantization techniques. As we design a low complexity algorithm, this is left to future research.</p>
<p>The coding algorithm developed in this research is based on the backward adaptive technique, so it does not require transmission of the side information. This allows the developed coding algorithm to be used in the cases when small delay is required, without increasing the bit rate, as is the case of using forward adaptation, where transmission and coding of the side information is required. The goal is to achieve high quality output speech signal, which would meet the G.712 Recommendation for a high-quality speech coding (ITU-T, <xref ref-type="bibr" rid="j_info1187_ref_006">2001</xref>), by using a low bit rate. Speech signal can be modelled with Gaussian or Laplacian probability density function (p. d. f.) (Kondoz, <xref ref-type="bibr" rid="j_info1187_ref_009">2004</xref>). The algorithm we propose considers both models of the input signal p. d. f. and as will be shown, in the case of the Gaussian distribution it provides higher quality of the output signal for each value of the compression factor <italic>μ</italic>. Eventually, for achieving high performance of the proposed algorithm, it is important to determine the support limit of the quantizer in the specific manner to minimize the signal distortion (Na and Neuhoff, <xref ref-type="bibr" rid="j_info1187_ref_013">2001</xref>), which we also take into account in designing our quantizer.</p>
<p>The rest of the paper is organized as follows. Section <xref rid="j_info1187_s_002">2</xref> describes the support limit determination for the Gaussian source model. In Section <xref rid="j_info1187_s_003">3</xref>, the basic principles of differential coding are described. The description of the novel differential speech signal coding algorithm is presented in Section <xref rid="j_info1187_s_004">4</xref>, while the results of its application are presented and discussed in Section <xref rid="j_info1187_s_005">5</xref>. Finally, Section <xref rid="j_info1187_s_006">6</xref> is devoted to conclusions.</p>
</sec>
<sec id="j_info1187_s_002">
<label>2</label>
<title>Support Limit Determination for the Quasilogarithmic Quantizer of Gaussian Source</title>
<p>In designing speech signal coding algorithm, input signal has to be modelled by some probability distribution function (PDF). It is well known that speech signal can be successfully modelled by Gaussian (normal) distribution (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Kondoz, <xref ref-type="bibr" rid="j_info1187_ref_009">2004</xref>; Chu, <xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>; Sayood, <xref ref-type="bibr" rid="j_info1187_ref_022">2017</xref>). PDF for a random variable with the Gaussian distribution with mean value denoted by <italic>α</italic> and variance by <inline-formula id="j_info1187_ineq_001"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\sigma ^{2}}$]]></tex-math></alternatives></inline-formula> is defined as Jayant and Noll (<xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>): 
<disp-formula id="j_info1187_eq_001">
<label>(1)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">σ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo movablelimits="false">exp</mml:mo>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">{</mml:mo>
<mml:mo>−</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">α</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">}</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ p(x,\sigma )=\frac{1}{\sqrt{2\pi {\sigma ^{2}}}}\exp \bigg\{-\frac{{(x-\alpha )^{2}}}{2{\sigma ^{2}}}\bigg\}.\]]]></tex-math></alternatives>
</disp-formula> 
Without loss of generality, we can assume that information source is memoryless Gaussian source with mean value equal to zero. PDF of thus defined Gaussian source is given by: 
<disp-formula id="j_info1187_eq_002">
<label>(2)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">σ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo movablelimits="false">exp</mml:mo>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">{</mml:mo>
<mml:mo>−</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">}</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ p(x,\sigma )=\frac{1}{\sqrt{2\pi {\sigma ^{2}}}}\exp \bigg\{-\frac{{x^{2}}}{2{\sigma ^{2}}}\bigg\}.\]]]></tex-math></alternatives>
</disp-formula> 
Quantization is a significant part in the digitalization process. A quantizer is defined as the structure of encoder and decoder (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>). Role of a quantizer is to perform mapping of the input signal amplitudes into the group of permitted amplitudes. An <italic>N</italic>-level scalar quantizer <italic>Q</italic> is defined by mapping <italic>Q</italic>: <inline-formula id="j_info1187_ineq_002"><alternatives><mml:math>
<mml:mi mathvariant="italic">R</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi></mml:math><tex-math><![CDATA[$R\in Y$]]></tex-math></alternatives></inline-formula>, where <italic>R</italic> represents a set of real numbers, while <inline-formula id="j_info1187_ineq_003"><alternatives><mml:math>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">⊂</mml:mo>
<mml:mi mathvariant="italic">R</mml:mi></mml:math><tex-math><![CDATA[$Y\equiv {y_{1}},{y_{2}},{y_{3}},\dots ,{y_{N}}\subset R$]]></tex-math></alternatives></inline-formula>, is a set of representation levels that makes the code book of size <inline-formula id="j_info1187_ineq_004"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi></mml:math><tex-math><![CDATA[$|Y|=N$]]></tex-math></alternatives></inline-formula> (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>). Scalar quantizer divides a set of real numbers into <italic>N</italic> cells <inline-formula id="j_info1187_ineq_005"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[${R_{i}}=({t_{i-1}},{t_{i}}]$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_info1187_ineq_006"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi></mml:math><tex-math><![CDATA[$i=1,\dots ,N$]]></tex-math></alternatives></inline-formula>, where <inline-formula id="j_info1187_ineq_007"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{i}}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_info1187_ineq_008"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi></mml:math><tex-math><![CDATA[$i=0,1,\dots ,N$]]></tex-math></alternatives></inline-formula> are decision thresholds of the quantizer, defined as <inline-formula id="j_info1187_ineq_009"><alternatives><mml:math>
<mml:mi mathvariant="italic">Q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$Q(x)={y_{i}}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_info1187_ineq_010"><alternatives><mml:math>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$x\in {R_{i}}$]]></tex-math></alternatives></inline-formula>. In practice, during the process of scalar quantization, the region of an input signal is divided into granular and overload regions, which are separated by the support region thresholds <inline-formula id="j_info1187_ineq_011"><alternatives><mml:math>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$-{t_{N-1}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_info1187_ineq_012"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{N-1}}$]]></tex-math></alternatives></inline-formula>. Minimum and maximum support region thresholds define the support region of the quantizer <inline-formula id="j_info1187_ineq_013"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$[-{t_{N-1}},{t_{N-1}}]$]]></tex-math></alternatives></inline-formula>, which has a high influence on the total distortion of the quantizer (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Na and Neuhoff, <xref ref-type="bibr" rid="j_info1187_ref_013">2001</xref>; Na, <xref ref-type="bibr" rid="j_info1187_ref_012">2004</xref>). In order to determine the optimal support region, we implement an iterative numerical method for determining the support region thresholds. Optimal support limit can be found by minimizing the total distortion. In the case of quasilogarithmic quantizer and an input signal modelled with Gaussian source, with mean value equal to zero and variance <inline-formula id="j_info1187_ineq_014"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[${\sigma ^{2}}=1$]]></tex-math></alternatives></inline-formula>, granular distortion is defined by Jayant and Noll (<xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>): 
<disp-formula id="j_info1187_eq_003">
<label>(3)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">ln</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">[</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msqrt>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">π</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
</mml:mrow>
</mml:msqrt>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">]</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {D_{g}}=\frac{{\ln ^{2}}(\mu +1)}{3{N^{2}}}\bigg[\frac{{t_{N-1}^{2}}}{{\mu ^{2}}}+{t_{N-1}}\frac{2}{\mu }\sqrt{\frac{2}{\pi }}+1\bigg],\]]]></tex-math></alternatives>
</disp-formula> 
where <italic>μ</italic> represents the compression factor. In the case of implementing larger compression factors, as is the case with the quantizer defined with the G.711 standard, where <inline-formula id="j_info1187_ineq_015"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>255</mml:mn></mml:math><tex-math><![CDATA[$\mu =255$]]></tex-math></alternatives></inline-formula>, (<inline-formula id="j_info1187_ineq_016"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo stretchy="false">≫</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\mu \gg 1$]]></tex-math></alternatives></inline-formula>) the term of the equation <inline-formula id="j_info1187_ineq_017"><alternatives><mml:math><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle></mml:math><tex-math><![CDATA[$\frac{1}{{\mu ^{2}}}$]]></tex-math></alternatives></inline-formula> tends towards zero, so that Eq. (<xref rid="j_info1187_eq_003">3</xref>) can be approximated as: 
<disp-formula id="j_info1187_eq_004">
<label>(4)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">ln</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">[</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msqrt>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">π</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
</mml:mrow>
</mml:msqrt>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">]</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {D_{g}}=\frac{{\ln ^{2}}(\mu +1)}{3{N^{2}}}\bigg[\frac{2}{\mu }\sqrt{\frac{2}{\pi }}{t_{N-1}}+1\bigg].\]]]></tex-math></alternatives>
</disp-formula> 
For a quantizer with a support region threshold <inline-formula id="j_info1187_ineq_018"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{N-1}}$]]></tex-math></alternatives></inline-formula> and input signal modelled by Gaussian PDF of zero mean and unit variance, overload distortion can be calculated as Na and Neuhoff (<xref ref-type="bibr" rid="j_info1187_ref_013">2001</xref>): 
<disp-formula id="j_info1187_eq_005">
<label>(5)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">o</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">π</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
</mml:mrow>
</mml:msqrt><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo movablelimits="false">exp</mml:mo>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">{</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">}</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {D_{o}}=\sqrt{\frac{2}{\pi }}\frac{2}{{t_{N-1}^{3}}}\exp \bigg\{\frac{-{t_{N-1}^{2}}}{2}\bigg\}.\]]]></tex-math></alternatives>
</disp-formula> 
The total distortion represents the sum of the granular and the overload distortion <inline-formula id="j_info1187_ineq_019"><alternatives><mml:math>
<mml:mi mathvariant="italic">D</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">o</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$D={D_{g}}+{D_{o}}$]]></tex-math></alternatives></inline-formula>. Minimizing the distortion in relation to the <inline-formula id="j_info1187_ineq_020"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{N-1}}$]]></tex-math></alternatives></inline-formula> is performed as: 
<disp-formula id="j_info1187_eq_006">
<label>(6)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi>∂</mml:mi>
<mml:mi mathvariant="italic">D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>∂</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \frac{\partial D}{\partial {t_{N-1}}}=0.\]]]></tex-math></alternatives>
</disp-formula> 
From Eq. (<xref rid="j_info1187_eq_006">6</xref>) we can obtain the optimal support limit, which is iteratively calculated by: 
<disp-formula id="j_info1187_eq_007">
<label>(7)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mo maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo movablelimits="false">ln</mml:mo>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">ln</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">)</mml:mo>
<mml:mo maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
</mml:mrow>
</mml:msqrt>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {t_{N-1}^{(i)}}=\sqrt{\bigg|2\ln \bigg(\frac{1}{\mu }\frac{{\ln ^{2}}(\mu +1)}{3{N^{2}}}\frac{{t_{N-1}^{4(i-1)}}}{{t_{N-1}^{2(i-1)}}+3}\bigg)\bigg|}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>For the purpose of increasing the algorithm speed, we use only two iterations and obtain the result near the optimal one, where optimality refers to the solution of Eq. (<xref rid="j_info1187_eq_006">6</xref>). The initial values are chosen intuitively, as it is known that the iterative procedure converges to the same output for different initial values. Table <xref rid="j_info1187_tab_001">1</xref> shows the convergation of support limit values, when different starting values are chosen.</p>
<table-wrap id="j_info1187_tab_001">
<label>Table 1</label>
<caption>
<p>Support limit convergation for different starting values chosen.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><italic>R</italic> bit rate</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Compression factor <italic>μ</italic></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Starting value <inline-formula id="j_info1187_ineq_021"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{N-1}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">1st iteration</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">2nd iteration</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">3rd iteration</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left">3</td>
<td style="vertical-align: top; text-align: left">4.3869</td>
<td style="vertical-align: top; text-align: left">4.1760</td>
<td style="vertical-align: top; text-align: left">4.2028</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left">3.5</td>
<td style="vertical-align: top; text-align: left">4.3001</td>
<td style="vertical-align: top; text-align: left">4.1869</td>
<td style="vertical-align: top; text-align: left">4.2014</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">6</td>
<td style="vertical-align: top; text-align: left">255</td>
<td style="vertical-align: top; text-align: left">4</td>
<td style="vertical-align: top; text-align: left">4.2264</td>
<td style="vertical-align: top; text-align: left">4.1963</td>
<td style="vertical-align: top; text-align: left">4.2002</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left">4.5</td>
<td style="vertical-align: top; text-align: left">4.1622</td>
<td style="vertical-align: top; text-align: left">4.2046</td>
<td style="vertical-align: top; text-align: left">4.1991</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">5</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4.1052</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4.2122</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4.1981</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>As already stated, in this research we have chosen to implement quasilogarithmic quantizer to perform input signal quantization. It represents a good choice, especially in the case of adaptive quantization, where we can easily adjust the quantizer by changing the compression factor. Also, a quasilogarithmic quantizer can be defined by the closed form formulas, which makes the design and analysis simple. Quasilogarithmic quantizer performs signal compression by applying a compressor function defined by Jayant and Noll (<xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>): 
<disp-formula id="j_info1187_eq_008">
<label>(8)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">ln</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo movablelimits="false">ln</mml:mo>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">)</mml:mo>
<mml:mtext>sgn</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo>⩽</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {c_{\mu }}(t)=\frac{{t_{N-1}}}{\ln (1+\mu )}\ln \bigg(1+\mu \frac{|t|}{{t_{N-1}}}\bigg)\text{sgn}(t),\hspace{1em}|t|\leqslant {t_{N-1}}.\]]]></tex-math></alternatives>
</disp-formula> 
By finding and implementing the optimal support limit and choosing the appropriate compression factor, we obtain a simple and efficient quantizer, which combined with the differential coding and backward adaptation technique is capable to provide a high quality output signal.</p>
</sec>
<sec id="j_info1187_s_003">
<label>3</label>
<title>Theoretical Background of Differential Coding</title>
<p>Signals in nature are often correlated, meaning that the successive samples have values similar to a certain extent (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Chu, <xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>). Wideband speech signal, sampled at 16 kHz, can be considered to be a correlated source, which can be practically examined by calculating the correlation coefficient of a real speech signal. For an input signal <inline-formula id="j_info1187_ineq_022"><alternatives><mml:math>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$x[n]$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_info1187_ineq_023"><alternatives><mml:math>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">M</mml:mi></mml:math><tex-math><![CDATA[$n=1,\dots ,M$]]></tex-math></alternatives></inline-formula>, with the length of <italic>M</italic> samples, the correlation coefficient can be calculated by: 
<disp-formula id="j_info1187_eq_009">
<label>(9)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">ρ</mml:mi>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \rho =\frac{{\textstyle\textstyle\sum _{n=1}^{M-1}}x[n]\times x[n+1]}{{\textstyle\textstyle\sum _{n=1}^{M}}{(x[n])^{2}}}.\]]]></tex-math></alternatives>
</disp-formula> 
Differential coding (DPCM) exploits the correlation of the successive samples of the input signal to reduce the redundancy of the input. It is based on quantizing the difference (prediction-error) signal <inline-formula id="j_info1187_ineq_024"><alternatives><mml:math>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$e[n]$]]></tex-math></alternatives></inline-formula>, which is obtained by subtracting the input signal <inline-formula id="j_info1187_ineq_025"><alternatives><mml:math>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$x[n]$]]></tex-math></alternatives></inline-formula> from the signal prediction <inline-formula id="j_info1187_ineq_026"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[${x_{p}}[n]$]]></tex-math></alternatives></inline-formula> formed between the actual value of the current sample and predicted value of the previous sample (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Chu, <xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>). Prediction is commonly performed by implementing linear prediction, in which current sample is predicted as a linear combination of the previously quantized samples (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Makhoul, <xref ref-type="bibr" rid="j_info1187_ref_010">1975</xref>; Markel and Gray, <xref ref-type="bibr" rid="j_info1187_ref_011">2013</xref>). The number of previous samples used in prediction represents the order of a predictor. Function of the <italic>k</italic>-th order linear predictor is defined as: 
<disp-formula id="j_info1187_eq_010">
<label>(10)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub><mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {x_{p}}[n]={\sum \limits_{l=1}^{k}}{a_{l}}\hat{x}[n-1],\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_info1187_ineq_027"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${a_{l}}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_info1187_ineq_028"><alternatives><mml:math>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi></mml:math><tex-math><![CDATA[$l=1,2,\dots ,k$]]></tex-math></alternatives></inline-formula> are the prediction coefficients, while <inline-formula id="j_info1187_ineq_029"><alternatives><mml:math><mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\hat{x}[n-1]$]]></tex-math></alternatives></inline-formula> represents the previously quantized input signal samples. The main benefit of differential approach is that prediction-error signal has smaller variance and dynamic amplitude range, which makes it more suitable for quantization (Suma, <xref ref-type="bibr" rid="j_info1187_ref_023">2012</xref>). Quantizing prediction-error signal enables us to achieve higher SQNR for a given resolution, or equally given number of quantization levels <italic>N</italic>.</p>
<fig id="j_info1187_fig_001">
<label>Fig. 1</label>
<caption>
<p>DPCM encoder (top) and decoder (bottom).</p>
</caption>
<graphic xlink:href="info1187_g001.jpg"/>
</fig>
<p>DPCM encoder and decoder are presented in Fig. <xref rid="j_info1187_fig_001">1</xref>. Output of the encoder are indices <inline-formula id="j_info1187_ineq_030"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$i[n]$]]></tex-math></alternatives></inline-formula>, by which the decoder obtains quantized prediction error, which is used in forming the quantized input. The thus defined DPCM system has been successfully implemented in speech (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>; Ortega and Ramchandran, <xref ref-type="bibr" rid="j_info1187_ref_014">1995</xref>), image coding (Zschunke, <xref ref-type="bibr" rid="j_info1187_ref_026">1977</xref>), as well as in ECG signal coding (Peric <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1187_ref_015">2013a</xref>). We implement DPCM principles in designing a speech coding algorithm presented in this paper. The combination of differential coding and backward adaptation provides a simple and efficient coding scheme without increasing the bit rate used. The contribution of this research lies also in the optimal quantizer design with utilization of correlation in speech signal coding. This enables us to obtain high quality output signal, while implementing the simplest differential coding. The following section describes the design and implementation of the algorithm we propose.</p>
</sec>
<sec id="j_info1187_s_004">
<label>4</label>
<title>Algorithm for Differential Adaptive Coding of Speech Signal</title>
<p>Designing a speech coding algorithm is not a simple task, since a speech coding algorithm has to comply with the following Chu (<xref ref-type="bibr" rid="j_info1187_ref_001">2003</xref>): 
<list>
<list-item id="j_info1187_li_001">
<label>1.</label>
<p>Use low bit rate;</p>
</list-item>
<list-item id="j_info1187_li_002">
<label>2.</label>
<p>Provide high output signal quality;</p>
</list-item>
<list-item id="j_info1187_li_003">
<label>3.</label>
<p>Be robust in a wide area of possible speakers and languages;</p>
</list-item>
<list-item id="j_info1187_li_004">
<label>4.</label>
<p>Have low computational complexity and low coding delay.</p>
</list-item>
</list> 
We have chosen to implement low complexity coding techniques with the possibility of using small frame sizes. This enables the algorithm to be implemented when small delay is required, as is the case in real time speech communication or package transmission of data. Since the coding algorithm includes encoder and decoder, both blocks will be described in steps separately. The purpose of the encoder is to convert the input signal into a form convenient for transmission and to send the encoded bit-stream to transmission channel as indices (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>). The designed algorithm encoder is described in the following.</p>
<p>As we implement backward adaptation technique, the first frame of the input signal does not have the required information for this process, as there was no information before. This is overcome by implementing PCM encoder (ITU-T, <xref ref-type="bibr" rid="j_info1187_ref_005">1972</xref>) to the first frame of the input signal. As the same bit rate was implemented for all frames, the usage of PCM encoder for the first frame cannot significantly degrade the overall quality of the output, while it provides the initialization of the algorithm. The first encoded frame is used for accessing the statistical information required for the backward adaptation process, which is based on the previous, encoded frame. In the following steps, we calculate and implement the statistical data from the previous frame for coding the current one. Firstly, we calculate the correlation coefficient, starting from the second frame. The correlation coefficient used for coding the current <italic>j</italic>th frame can be determined with the implementation of Eq. (<xref rid="j_info1187_eq_009">9</xref>) as: 
<disp-formula id="j_info1187_eq_011">
<label>(11)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">ρ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>×</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\rho ^{(j-1)}}=\frac{{\textstyle\textstyle\sum _{n=1}^{M-1}}{\hat{x}^{(j-1)}}[n]\times {\hat{x}^{(j-1)}}[n+1]}{{\textstyle\textstyle\sum _{n=1}^{M}}{({\hat{x}^{(j-1)}}[n])^{2}}},\hspace{1em}j=2,\dots ,L,\]]]></tex-math></alternatives>
</disp-formula> 
where <italic>L</italic> represents the total number of the input signal frames, <italic>M</italic> is the total number of samples in the frame, while <inline-formula id="j_info1187_ineq_031"><alternatives><mml:math>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$x[n]$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_info1187_ineq_032"><alternatives><mml:math>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$x[n+1]$]]></tex-math></alternatives></inline-formula> denote the current and the next sample of the current input signal frame, respectively. The next parameter used is the variance of the previously quantized frame, defined by: 
<disp-formula id="j_info1187_eq_012">
<label>(12)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">[</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow/>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msubsup>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">η</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\big[{\sigma _{\hat{x}}^{{^{(j-1)}}}}\big]^{2}}=\frac{1}{M}{\sum \limits_{n=1}^{M}}{\big({\hat{x}^{(j-1)}}[n]-{\eta ^{(j-1)}}\big)^{2}},\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_info1187_ineq_033"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">η</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[${\eta ^{(j-1)}}=\frac{1}{M}{\textstyle\sum _{n=1}^{M}}{\hat{x}^{(j-1)}}[n]$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_info1187_ineq_034"><alternatives><mml:math>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">L</mml:mi></mml:math><tex-math><![CDATA[$j=2,\dots ,L$]]></tex-math></alternatives></inline-formula> represents the mean value of the quantized <inline-formula id="j_info1187_ineq_035"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(j-1)$]]></tex-math></alternatives></inline-formula>th signal frame.</p>
<p>Difference signal frame is formed in sample by sample manner, as: 
<disp-formula id="j_info1187_eq_013">
<label>(13)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">ρ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {d^{(j)}}[n]={x^{(j)}}[n]-{\rho ^{(j-1)}}{\hat{x}^{(j)}}[n-1].\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The next step is to calculate difference frame variance, which is defined by: 
<disp-formula id="j_info1187_eq_014">
<label>(14)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">[</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">[</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">[</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">ρ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\big[{\sigma _{d}^{(j)}}\big]^{2}}={\big[{\sigma _{\hat{x}}^{(j-1)}}\big]^{2}}\big(1-{\big[{\rho ^{(j-1)}}\big]^{2}}\big).\]]]></tex-math></alternatives>
</disp-formula> 
The last step of encoding is the application of the designed adaptive quasilogarithmic quantizer <inline-formula id="j_info1187_ineq_036"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$({Q_{ad}})$]]></tex-math></alternatives></inline-formula> to the difference signal sample: 
<disp-formula id="j_info1187_eq_015">
<label>(15)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">[</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">]</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\hat{d}^{(j)}}[n]={Q_{ad}}\big[{d^{(j)}}[n]\big],\]]]></tex-math></alternatives>
</disp-formula> 
where the adaptive quantizer has the support region threshold defined by: 
<disp-formula id="j_info1187_eq_016">
<label>(16)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {t_{N-1}^{(j)}}={t_{N-1}}\times {\sigma _{d}^{(j)}},\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_info1187_ineq_037"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{N-1}}$]]></tex-math></alternatives></inline-formula> is obtained from Eq. (<xref rid="j_info1187_eq_007">7</xref>). Thus defined adaptive support region thresholds contain information about the input signal, as in the case of implementing backward adaptation and differential coding represents the information about the previously quantized difference signal frame. In this manner, by implementing few simple calculations we adapt the quantization process to the input signal and its statistics and obtain better signal compression. Finally, the output of the described encoder is sent through the channel as binary information <inline-formula id="j_info1187_ineq_038"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">I</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(I)$]]></tex-math></alternatives></inline-formula>. The encoded values are received and decoded for the purpose of reconstructing the input signal.</p>
<p>Decoding represents an inverse process to encoding, with the purpose of extracting the input signal from its encoded representation. The first frame of the input signal is decoded by applying the PCM decoder (ITU-T, <xref ref-type="bibr" rid="j_info1187_ref_005">1972</xref>). By reconstructing the first frame, we are able to extract the data required for decoding the following one. As in the encoding procedure, firstly we extract the correlation coefficient of the previous frame, by implementing Eq. (<xref rid="j_info1187_eq_011">11</xref>). The next statistical parameter from the previous frame used is the variance, calculated by implementing Eq. (<xref rid="j_info1187_eq_012">12</xref>). When we have the information about the previous frame variance, we can apply the inverse quantization to obtain the difference signal sample: 
<disp-formula id="j_info1187_eq_017">
<label>(17)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">I</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\hat{d}^{(j)}}[n]={Q_{ad}^{-1}}[I].\]]]></tex-math></alternatives>
</disp-formula> 
Actual input signal sample can be reconstructed as: 
<disp-formula id="j_info1187_eq_018">
<label>(18)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">ρ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\hat{x}^{(j)}}[n]={\hat{d}^{(j)}}[n]+{\rho ^{(j-1)}}{\hat{x}^{(j)}}[n-1].\]]]></tex-math></alternatives>
</disp-formula> 
This step completes the decoding procedure, as we obtain the values of the quantized input signal samples.</p>
<p>The encoding algorithm can be presented as a series of the following steps:</p>
<list>
<list-item id="j_info1187_li_005">
<label>Step 1.</label>
<p>The first frame <inline-formula id="j_info1187_ineq_039"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(j=1)$]]></tex-math></alternatives></inline-formula> is fed to the buffer.</p>
</list-item>
<list-item id="j_info1187_li_006">
<label>Step 2.</label>
<p>The samples of the first frame are successively encoded by PCM encoder and decoded by local PCM decoder for the purpose of initialization.</p>
</list-item>
</list>
<p>From the second to the last frame (for <inline-formula id="j_info1187_ineq_040"><alternatives><mml:math>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">L</mml:mi></mml:math><tex-math><![CDATA[$j=2,\dots ,L$]]></tex-math></alternatives></inline-formula>) the following steps repeat:</p>
<list>
<list-item id="j_info1187_li_007">
<label>Step 3.</label>
<p>Each frame is fed to the frame buffer.</p>
</list-item>
<list-item id="j_info1187_li_008">
<label>Step 4.</label>
<p>From the previously quantized frame, the correlation coefficient <inline-formula id="j_info1187_ineq_041"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">ρ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\rho ^{(j-1)}}$]]></tex-math></alternatives></inline-formula> and variance <inline-formula id="j_info1187_ineq_042"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo fence="true" stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${[{\sigma _{\hat{x}}^{(j-1)}}]^{2}}$]]></tex-math></alternatives></inline-formula> are calculated (Eqs. (<xref rid="j_info1187_eq_011">11</xref>) and (<xref rid="j_info1187_eq_012">12</xref>)).</p>
</list-item>
<list-item id="j_info1187_li_009">
<label>Step 5.</label>
<p>Difference signal is formed in sample by sample manner, where the correlation of the previously quantized frame and the previously quantized signal sample are used (Eq. (<xref rid="j_info1187_eq_013">13</xref>)).</p>
</list-item>
<list-item id="j_info1187_li_010">
<label>Step 6.</label>
<p>Difference signal is fed to the input of variance-adaptive quasilogarithmic quantizer, which is adapted to the variance <inline-formula id="j_info1187_ineq_043"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo fence="true" stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${[{\sigma _{d}^{(j)}}]^{2}}$]]></tex-math></alternatives></inline-formula> given by Eq. (<xref rid="j_info1187_eq_014">14</xref>).</p>
</list-item>
<list-item id="j_info1187_li_011">
<label>Step 7.</label>
<p>Encoded difference signal frames are sent through the channel as binary information.</p>
</list-item>
</list>
<p>The decoding procedure is performed by applying the following steps:</p>
<list>
<list-item id="j_info1187_li_012">
<label>Step 1.</label>
<p>The first frame is decoded with PCM decoder.</p>
</list-item>
</list>
<p>From the second to the last frame the following is repeated: 
<list>
<list-item id="j_info1187_li_013">
<label>Step 2.</label>
<p>Output frames are fed to the frame buffer.</p>
</list-item>
<list-item id="j_info1187_li_014">
<label>Step 3.</label>
<p>Information about the previous frame correlation coefficient and variance is extracted.</p>
</list-item>
<list-item id="j_info1187_li_015">
<label>Step 4.</label>
<p>Output signal sample is obtained from the quantized difference signal, quantized previous sample and from the correlation coefficient of the previously quantized frame (Eq. (<xref rid="j_info1187_eq_018">18</xref>)).</p>
</list-item>
<list-item id="j_info1187_li_016">
<label>Step 5.</label>
<p>Samples are fed to the output frame buffer, where we have reconstructed signal samples.</p>
</list-item>
</list> 
By performing quantization, we introduce an irreversible error due to rounding the current values of the input signal to the representation levels. This error is named quantization error and it can be expressed by distortion, which is commonly defined as the average value of a mean-squared error (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>). Eqs. (<xref rid="j_info1187_eq_003">3</xref>)–(<xref rid="j_info1187_eq_005">5</xref>) define theoretical distortion for the quasilogarithmic quantization of Gaussian source. In the case of applying algorithm in real input signal coding, distortion can be calculated by: 
<disp-formula id="j_info1187_eq_019">
<label>(19)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">D</mml:mi>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>−</mml:mo><mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ D=\frac{1}{S}{\sum \limits_{n=1}^{S}}{\big(x[n]-\hat{x}[n]\big)^{2}},\]]]></tex-math></alternatives>
</disp-formula> 
where <italic>S</italic> represents the total number of the input signal samples. Thus defined distortion with input signal power determines signal to quantization noise ratio, an objective signal quality measure, used in this paper (Jayant and Noll, <xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>): 
<disp-formula id="j_info1187_eq_020">
<label>(20)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mtext>SQNR</mml:mtext>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mtext>dB</mml:mtext>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">D</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \text{SQNR}[\text{dB}]=10{\log _{10}}\bigg(\frac{\frac{1}{S}{\textstyle\textstyle\sum _{n=1}^{S}}{(x[n])^{2}}}{D}\bigg).\]]]></tex-math></alternatives>
</disp-formula>
</p>
</sec>
<sec id="j_info1187_s_005">
<label>5</label>
<title>Numerical Results and Analysis</title>
<p>This section presents the numerical results of applying the proposed algorithm in speech signal coding. In addition, we observe the theoretical characteristics of the basic coding schemes implemented in differential speech signal coding, to show the improvements which are results of the algorithm design. As we implement quasilogarithmic quantization, firstly we analyse the theoretical performance of the quasilogarithmic quantizer. This represents the case when quantization is performed only by applying quasilogarithmic quantization, with 6 bits per sample and the usage of different compression factors. Speech signal is modelled with the Gaussian distribution with zero mean and unit variance, as it has been assumed in the proposed algorithm design. Additionally, we show the theoretical performance of the quasilogarithmic quantizer in the case of using Laplacian distribution with zero mean and unit variance for modelling a speech signal. In the case of using Laplacian distribution, optimal support limit of quasilogarithmic quantizer can be defined as Jayant and Noll (<xref ref-type="bibr" rid="j_info1187_ref_008">1984</xref>): 
<disp-formula id="j_info1187_eq_021">
<label>(21)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mfenced separators="" open="{" close="">
<mml:mrow>
<mml:mtable columnspacing="4.0pt" equalrows="false" columnlines="none" equalcolumns="false" columnalign="left left">
<mml:mtr>
<mml:mtd class="array">
<mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo movablelimits="false">ln</mml:mo>
<mml:mo maxsize="1.61em" minsize="1.61em" fence="true" mathvariant="normal">(</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">ln</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="1.61em" minsize="1.61em" fence="true" mathvariant="normal">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>⩾</mml:mo>
<mml:mn>255</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array">
<mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo movablelimits="false">ln</mml:mo>
<mml:mo maxsize="1.61em" minsize="1.61em" fence="true" mathvariant="normal">(</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">ln</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo movablelimits="false">ln</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">ln</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="1.61em" minsize="1.61em" fence="true" mathvariant="normal">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mn>255.</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {t_{N-1}^{Lap}}=\left\{\begin{array}{l@{\hskip4.0pt}l}\frac{1}{\sqrt{2}}\ln \Big(\frac{3{N^{2}}\mu }{{\ln ^{2}}(1+\mu )}\Big),\hspace{1em}& \mu \geqslant 255,\\ {} \frac{1}{\sqrt{2}}\ln \Big(\frac{\frac{3{N^{2}}\mu }{{\ln ^{2}}(1+\mu )}}{1+\frac{1}{\mu }\ln (\frac{3{N^{2}}\mu }{{\ln ^{2}}(1+\mu )})}\Big),\hspace{1em}& \mu <255.\end{array}\right.\]]]></tex-math></alternatives>
</disp-formula> 
The total distortion of the quasilogarithmic quantizer designed for the Laplacian source can be calculated by Kondoz (<xref ref-type="bibr" rid="j_info1187_ref_009">2004</xref>), Peric <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1187_ref_016">2013b</xref>): 
<disp-formula id="j_info1187_eq_022">
<label>(22)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">Lap</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">ln</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">[</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">Lap</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">Lap</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true">]</mml:mo>
<mml:mo>+</mml:mo>
<mml:mo movablelimits="false">exp</mml:mo>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">{</mml:mo>
<mml:mo>−</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">Lap</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true">}</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {D^{\mathit{Lap}}}=\frac{{\ln ^{2}}(\mu +1)}{3{N^{2}}}\bigg[\frac{{({t_{N-1}^{\mathit{Lap}}})^{2}}}{{\mu ^{2}}}+\frac{\sqrt{2}{t_{N-1}^{\mathit{Lap}}}}{\mu }+1\bigg]+\exp \big\{-\sqrt{2}{t_{N-1}^{\mathit{Lap}}}\big\}.\]]]></tex-math></alternatives>
</disp-formula> 
We show the results for the case of using smaller compression factor values, ranging from 2 to 50, as our algorithm implements adaptive quantization and it is expected that it will have the best performance in this range of compression factors. Fig. <xref rid="j_info1187_fig_002">2</xref> shows the benefits of modelling speech signal with Gaussian source, as the quasilogarithmic quantizer designed for Gaussian source provides better theoretical SQNR characteristics.</p>
<fig id="j_info1187_fig_002">
<label>Fig. 2</label>
<caption>
<p>Theoretical dependence of SQNR on compression factor for the quasilogarithmic quantizer that is designed for Gaussian vs. Laplacian source models for speech signal.</p>
</caption>
<graphic xlink:href="info1187_g002.jpg"/>
</fig>
<p>The figure shows that the highest theoretical SQNR value in the case of using Gaussian model is obtained for the compression factor equal to 4 and it amounts to around 31.3 dB. When using Laplacian model, maximum is obtained in the case when compression factor is equal to 10, and it amounts to around 29.2 dB. One can notice that the theoretical maximum in SQNR is greater when using Gaussian source model, and the gain amounts to 2.1 dB. For higher compression factor values SQNR characteristics are in steady decline, while the gain is obtained for all compression factor values. This confirms the benefits of modelling speech signal with the Gaussian distribution.</p>
<p>In order to evaluate the performance of the proposed coding algorithm, an experiment was also conducted. The input signal has been a 15 seconds long sequence of a male speech signal, sampled at 16 kHz. The objective quality measure used in the experiment is SQNR, expressed in dB. Along the performance of the proposed algorithm, we analyse the performance of the algorithm without using adaptive quantization and PCM scheme. The advantage of implementing adaptive quantization is observed through the obtained gain in SQNR, especially for lower compression factor values. Comparison with PCM indicates significantly higher objective output signal quality obtained with the implementation of the proposed algorithm.</p>
<table-wrap id="j_info1187_tab_002">
<label>Table 2</label>
<caption>
<p>Experimentally obtained SQNR for the proposed algorithm with comparison.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><italic>R</italic> bit rate</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Frame size</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Compression factor <italic>μ</italic></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">SQNRP<sub>CM</sub> [dB]</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">SQNR<sub>NON-AD</sub> [dB]</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">SQNR<sub>AD</sub> [dB]</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"><bold>10</bold></td>
<td style="vertical-align: top; text-align: left">24.0995</td>
<td style="vertical-align: top; text-align: left">3.7499</td>
<td style="vertical-align: top; text-align: left">35.7590</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"><bold>20</bold></td>
<td style="vertical-align: top; text-align: left">24.0995</td>
<td style="vertical-align: top; text-align: left">7.4873</td>
<td style="vertical-align: top; text-align: left">36.3638</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"><bold>30</bold></td>
<td style="vertical-align: top; text-align: left">24.0995</td>
<td style="vertical-align: top; text-align: left">9.7586</td>
<td style="vertical-align: top; text-align: left">36.4615</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><bold>6</bold></td>
<td style="vertical-align: top; text-align: left"><bold>40</bold></td>
<td style="vertical-align: top; text-align: left"><bold>40</bold></td>
<td style="vertical-align: top; text-align: left">24.0995</td>
<td style="vertical-align: top; text-align: left">11.3872</td>
<td style="vertical-align: top; text-align: left">36.4439</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"><bold>50</bold></td>
<td style="vertical-align: top; text-align: left">24.0995</td>
<td style="vertical-align: top; text-align: left">12.6633</td>
<td style="vertical-align: top; text-align: left">36.4267</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"><bold>100</bold></td>
<td style="vertical-align: top; text-align: left">24.0995</td>
<td style="vertical-align: top; text-align: left">16.5379</td>
<td style="vertical-align: top; text-align: left">36.0445</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><bold>255</bold></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">24.0995</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">21.2701</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">35.2108</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>By observing Table <xref rid="j_info1187_tab_002">2</xref>, one can notice that the proposed algorithm (SQNR<sub>AD</sub>) satisfies the G.712 Recommendation, by using 6 bits per sample for coding, as it provides SQNR greater than 34 dB (ITU-T, <xref ref-type="bibr" rid="j_info1187_ref_006">2001</xref>), for all values of compression factor implemented. Additionally, the proposed algorithm provides gain in SQNR from 11.1 to about 12.36 dB, when compared to PCM. We should point out that PCM uses fixed compression factor, equal to 255, so SQNR in the column has a single value. The constant gain in SQNR of more than 10 dB, compared to the widely used PCM, confirms that the proposed coding algorithm provides high quality output speech signal. The version of the differential algorithm without implementing adaptive quantization provides lower objective quality of the output signal, for all values of the compression factor used (SQNR<sub>NON-AD</sub>). When we use smaller compression factors, the non-adaptive quantizer is not suitable for application, while for the adaptive version of the algorithm it provides approximately constant performance for different compression factor values. In the case of using compression factor equal to 255, the gain in SQNR is close to 14 dB in favour of the proposed differential speech coding algorithm with adaptive quantization, when compared to non-adaptive version, while the gain amounts to about 11 dB, in comparison to the PCM.</p>
<p>Furthermore, we can compare our results with the results obtained in earlier researches, by using similar or greater complexity coding schemes, where some of them also comply with the G.712 Recommendation. Table <xref rid="j_info1187_tab_003">3</xref> shows the comparative results obtained by implementing DPCM with uniform quantization and the second order predictor (Suma, <xref ref-type="bibr" rid="j_info1187_ref_023">2012</xref>), providing SQNR of about 30 dB, while using 6 bits per sample. One can notice that the proposed algorithm provides gain in SQNR of about 6.5 dB, compared to the case of implementing the basic DPCM coding scheme for the same bit rate. This gain is somewhat justified by the more suitable design of our quantizer. It is also justified by the fact that we have processed the wideband speech signal, which is more correlated compared to the narrowband speech signal processed in Suma (<xref ref-type="bibr" rid="j_info1187_ref_023">2012</xref>). Additionally, Table <xref rid="j_info1187_tab_003">3</xref> shows the performance of the fixed and adaptive companding quantizer with variable-length codeword Perić <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1187_ref_017">2013c</xref>) and transform coding with forward adaptive quantization (Tancic <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1187_ref_024">2016</xref>). In both cases, SQNR obtained is greater than 34 dB, while it is achieved by using around 6.5 bits per sample. The algorithm proposed in this paper overreaches SQNR of the compared coding schemes by using around 0.5 bits per sample less for coding. We can easily estimate the performance of the proposed algorithm for the case of using 6.5 bits per sample. This could be done by obtaining the SQNR performance for the case of using 7 bits per sample and by finding the mean value of this value and the one obtained in the case of using 6 bits per sample from Table <xref rid="j_info1187_tab_003">3</xref>. The estimated SQNR performance of the proposed algorithm for 6.5 bits per sample amounts to about 39.51 dB. This shows that in the case of using the same bit rate, the proposed algorithm provides gain in SQNR from 4.3 dB to 4.9 dB, when compared to the aforementioned coding schemes.</p>
<table-wrap id="j_info1187_tab_003">
<label>Table 3</label>
<caption>
<p>Comparative SQNR performance of coding schemes which comply with the G. 712 Recommendation.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Bit rate<sup>a</sup></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">SQNR<sup>a</sup> [dB]</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Bit rate<sup>b</sup></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">SQNR<sup>b</sup> [dB]</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Bit rate<sup>c</sup></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">SQNR<sup>c</sup> [dB]</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Bit rate (proposed)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">SQNR<sub>AD</sub> [dB] (proposed)</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">6</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">30</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">6.5</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">35.143</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">6.52</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">34.603</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">6</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">36.46</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<p><sup>a</sup> Suma (<xref ref-type="bibr" rid="j_info1187_ref_023">2012</xref>), <sup>b</sup> Perić <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1187_ref_017">2013c</xref>), <sup>b</sup> Tancic <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1187_ref_024">2016</xref>).</p>
</table-wrap-foot>
</table-wrap>
<p>The experimental results of applying the proposed algorithm to a real speech signal and comparative results shown in Tables <xref rid="j_info1187_tab_002">2</xref> and <xref rid="j_info1187_tab_003">3</xref>, confirm the suitability of the proposed algorithm to be implemented in speech signal coding.</p>
</sec>
<sec id="j_info1187_s_006">
<label>6</label>
<title>Conclusion</title>
<p>This paper has presented a simple, differential wideband speech signal coding algorithm, with the implementation of backward adaptation technique. The algorithm implements low complexity signal coding techniques and provides high quality output speech signal, while using low bit rate. By implementing differential coding, instead of common waveform coding of input signal samples, we perform quantization on the difference signal, which has lower amplitude dynamics and, as shown, is more suitable for performing quantization. The difference signal has been quantized by the backward adaptive quasilogarithmic quantizer, whose design has been presented in this paper. By inspecting the theoretical performance of the quasilogarithmic quantizer, we have demonstrated the advantages of modelling the input signal with Gaussian distribution, since in that case SQNR overreaches the results of using Laplacian distribution to model the input signal. The experimental results have shown the benefits of implementing adaptive quantization and differential speech coding. Moreover, the experimental results have shown that the proposed algorithm can satisfy the G. 712 Recommendation for high-quality speech coding, in the case of using 6 bits per sample for coding. Comparative results of the proposed algorithm with similar complexity speech coding schemes have confirmed that the proposed algorithm can be successfully implemented in speech signal coding.</p>
</sec>
</body>
<back>
<ref-list id="j_info1187_reflist_001">
<title>References</title>
<ref id="j_info1187_ref_001">
<mixed-citation publication-type="book"><string-name><surname>Chu</surname>, <given-names>W.C.</given-names></string-name> (<year>2003</year>). <source>Speech Coding Algorithms</source>. <publisher-name>John Wiley &amp; Sons</publisher-name>, <publisher-loc>New Jersey</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_002">
<mixed-citation publication-type="journal"><string-name><surname>Dinčić</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Perić</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Jovanović</surname>, <given-names>A.</given-names></string-name> (<year>2016</year>). <article-title>New coding algorithm based on variable-length codewords for piecewise uniform quantizers</article-title>. <source>Informatica</source>, <volume>27</volume>(<issue>3</issue>), <fpage>527</fpage>–<lpage>548</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_003">
<mixed-citation publication-type="journal"><string-name><surname>Fang</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Li</surname>, <given-names>H.</given-names></string-name> (<year>2008</year>). <article-title>Distributed adaptive quantization for wireless sensor networks: From delta modulation to maximum likelihood</article-title>. <source>IEEE Transactions on Signal Processing</source>, <volume>56</volume>(<issue>10</issue>), <fpage>5246</fpage>–<lpage>5257</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_004">
<mixed-citation publication-type="journal"><string-name><surname>Gibson</surname>, <given-names>J.D.</given-names></string-name> (<year>2016</year>). <article-title>Speech compression</article-title>. <source>Information</source>, <volume>7</volume>(<issue>2</issue>), <fpage>7</fpage>–<lpage>23</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_005">
<mixed-citation publication-type="other"><string-name><surname>ITU-T</surname></string-name>, Recommendation G.711 (1972). <italic>Pulse Code Modulation (PCM) of Voice Frequencies</italic>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_006">
<mixed-citation publication-type="other"><string-name><surname>ITU-T</surname></string-name>, Recommendation G.712 (2001). <italic>Transmission Performance Characteristics of Pulse Code Modulation Channels</italic>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_007">
<mixed-citation publication-type="other"><string-name><surname>ITU-T</surname></string-name>, Recommendation G.711.1 (2008). <italic>Wideband Embedded Extension for ITU-T G.711 Pulse Code Modulation</italic>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_008">
<mixed-citation publication-type="book"><string-name><surname>Jayant</surname>, <given-names>N.S.</given-names></string-name>, <string-name><surname>Noll</surname>, <given-names>P.</given-names></string-name> (<year>1984</year>). <source>Digital Coding of Waveforms</source>. <publisher-name>Prentice-Hall</publisher-name>, <publisher-loc>New Jersey</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_009">
<mixed-citation publication-type="book"><string-name><surname>Kondoz</surname>, <given-names>A.M.</given-names></string-name> (<year>2004</year>). <source>Digital Speech: Coding for Low Bit Rate Communication Systems</source>. <publisher-name>John Wiley &amp; Sons</publisher-name>, <publisher-loc>New Jersey</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_010">
<mixed-citation publication-type="journal"><string-name><surname>Makhoul</surname>, <given-names>J.</given-names></string-name> (<year>1975</year>). <article-title>Linear prediction: a tutorial review</article-title>. <source>Proceedings of the IEEE</source>, <volume>63</volume>(<issue>4</issue>), <fpage>561</fpage>–<lpage>580</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_011">
<mixed-citation publication-type="book"><string-name><surname>Markel</surname>, <given-names>J.D.</given-names></string-name>, <string-name><surname>Gray</surname>, <given-names>A.J.</given-names></string-name> (<year>2013</year>). <source>Linear Prediction of Speech</source>. <publisher-name>Springer Science &amp; Business Media</publisher-name>, <publisher-loc>New York</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_012">
<mixed-citation publication-type="journal"><string-name><surname>Na</surname>, <given-names>S.</given-names></string-name> (<year>2004</year>). <article-title>On the support of fixed-rate minimum mean-squared error scalar quantizers for a Laplacian source</article-title>. <source>IEEE Transactions on Information Theory</source>, <volume>50</volume>(<issue>5</issue>), <fpage>937</fpage>–<lpage>944</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_013">
<mixed-citation publication-type="journal"><string-name><surname>Na</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Neuhoff</surname>, <given-names>D.L.</given-names></string-name> (<year>2001</year>). <article-title>On the support of MSE-optimal, fixed-rate, scalar quantizers</article-title>. <source>IEEE Transactions on Information Theory</source>, <volume>47</volume>(<issue>7</issue>), <fpage>2972</fpage>–<lpage>2982</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_014">
<mixed-citation publication-type="chapter"><string-name><surname>Ortega</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Ramchandran</surname>, <given-names>K.</given-names></string-name> (<year>1995</year>). <chapter-title>Forward-adaptive quantization with optimal overhead cost for image and video coding with applications to MPEG video coders</chapter-title>. In: <source>IS&amp;T/SPIE’s Symposium on Electronic Imaging: Science &amp; Technology</source>. <publisher-name>International Society for Optics and Photonics</publisher-name>, pp. <fpage>129</fpage>–<lpage>138</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_015">
<mixed-citation publication-type="journal"><string-name><surname>Peric</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Denic</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Nikolic</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Jocic</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Jovanovic</surname>, <given-names>A.</given-names></string-name> (<year>2013</year>a). <article-title>DPCM quantizer adaptation method for efficient ECG signal compression</article-title>. <source>Journal of Communications Technology and Electronics</source>, <volume>58</volume>(<issue>12</issue>), <fpage>1241</fpage>–<lpage>1250</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_016">
<mixed-citation publication-type="journal"><string-name><surname>Peric</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Aleksic</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Stefanovic</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Nikolic</surname>, <given-names>J.</given-names></string-name> (<year>2013</year>b). <article-title>New approach to support region determination of the <italic>μ</italic>-law quantizer</article-title>. <source>Elektronika ir Elektrotechnika</source>, <volume>19</volume>(<issue>8</issue>), <fpage>111</fpage>–<lpage>114</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_017">
<mixed-citation publication-type="journal"><string-name><surname>Perić</surname>, <given-names>Z.H.</given-names></string-name>, <string-name><surname>Nikolić</surname>, <given-names>J.R.</given-names></string-name>, <string-name><surname>Mosić</surname>, <given-names>A.V.</given-names></string-name>, <string-name><surname>Petković</surname>, <given-names>M.D.</given-names></string-name> (<year>2013</year>c). <article-title>Design of fixed and adaptive companding quantizer with variable-length codeword for memoryless Gaussian source</article-title>. <source>Informatica</source>, <volume>24</volume>(<issue>1</issue>), <fpage>71</fpage>–<lpage>86</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_018">
<mixed-citation publication-type="book"><string-name><surname>Rabiner</surname>, <given-names>L.R.</given-names></string-name>, <string-name><surname>Schafer</surname>, <given-names>R.W.</given-names></string-name> (<year>1978</year>). <source>Digital Processing of Speech Signals</source>. <publisher-name>Prentice-Hall</publisher-name>, <publisher-loc>New Jersey</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_019">
<mixed-citation publication-type="journal"><string-name><surname>Ramalho</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Fonseca</surname>, <given-names>M.N.</given-names></string-name>, <string-name><surname>Klautau</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Lu</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Berg</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Trojer</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Höst</surname>, <given-names>S.</given-names></string-name> (<year>2017</year>). <article-title>An LPC-based fronthaul compression scheme</article-title>. <source>IEEE Communications Letters</source>, <volume>21</volume>(<issue>2</issue>), <fpage>318</fpage>–<lpage>321</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_020">
<mixed-citation publication-type="other"><string-name><surname>Ramalho</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Freire</surname>, <given-names>I.</given-names></string-name>, <string-name><surname>Lu</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Berg</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Klautau</surname>, <given-names>A.</given-names></string-name> (2018). Improved LPC-based fronthaul compression with high rate adaptation resolution. <italic>IEEE Communications Letters</italic> (accepted for publication).</mixed-citation>
</ref>
<ref id="j_info1187_ref_021">
<mixed-citation publication-type="journal"><string-name><surname>Sarade</surname>, <given-names>S.</given-names></string-name> (<year>2017</year>). <article-title>Speech compression by using adaptive differential pulse code modulation (ADPCM) technique with microcontroller</article-title>. <source>Journal of Electronics and Communication Systems</source>, <volume>2</volume>(<issue>3</issue>), <fpage>1</fpage>–<lpage>9</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_022">
<mixed-citation publication-type="book"><string-name><surname>Sayood</surname>, <given-names>K.</given-names></string-name> (<year>2017</year>). <source>Introduction to Data Compression</source>. <publisher-name>Morgan Kaufmann</publisher-name>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_023">
<mixed-citation publication-type="chapter"><string-name><surname>Suma</surname>, <given-names>M.N.</given-names></string-name> (<year>2012</year>). <chapter-title>Performance analysis of DPCM and ADPCM</chapter-title>. In: <source>International Conference on Electronic Design and Signal Processing (ICEDSP)</source>, pp. <fpage>19</fpage>–<lpage>23</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_024">
<mixed-citation publication-type="journal"><string-name><surname>Tancic</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Peric</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Tomic</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Simic</surname>, <given-names>N.</given-names></string-name> (<year>2016</year>). <article-title>Speech signal coding using forward adaptive quantization and simple transform coding</article-title>. <source>Elektronika ir Elektrotechnika</source>, <volume>22</volume>(<issue>3</issue>), <fpage>74</fpage>–<lpage>77</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_025">
<mixed-citation publication-type="journal"><string-name><surname>Uddin</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Ansari</surname>, <given-names>I.R.</given-names></string-name>, <string-name><surname>Naaz</surname>, <given-names>S.</given-names></string-name> (<year>2016</year>). <article-title>Low bit rate speech coding using differential pulse code modulation</article-title>. <source>Advances in Research, SCIENCEDOMAIN International</source>, <volume>8</volume>(<issue>3</issue>), <fpage>2348</fpage>–<lpage>2394</lpage>.</mixed-citation>
</ref>
<ref id="j_info1187_ref_026">
<mixed-citation publication-type="journal"><string-name><surname>Zschunke</surname>, <given-names>W.</given-names></string-name> (<year>1977</year>). <article-title>DPCM picture coding with adaptive prediction</article-title>. <source>IEEE Transactions on Communications</source>, <volume>25</volume>(<issue>11</issue>), <fpage>1295</fpage>–<lpage>1302</lpage>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>