AUDIO ENCODING/DECODING APPARATUS AND METHOD USING VECTOR QUANTIZED RESIDUAL ERROR FEATURE

20230039546 · 2023-02-09

    Inventors

    Cpc classification

    International classification

    Abstract

    An audio encoding/decoding apparatus and method using vector quantized residual error features are disclosed. An audio signal encoding method includes outputting a bitstream of a main codec by encoding an original signal, decoding the bitstream of the main codec, determining a residual error feature vector from a feature vector of a decoded signal and a feature vector of the original signal, and outputting a bitstream of additional information by encoding the residual error feature vector.

    Claims

    1. An audio signal encoding method, the method comprising: outputting a bitstream of a main codec by encoding an original signal; decoding the bitstream of the main codec; determining a residual error feature vector from a feature vector of a decoded signal and a feature vector of the original signal; and outputting a bitstream of additional information by encoding the residual error feature vector.

    2. The method of claim 1, wherein the outputting of the additional information bitstream comprises: mapping the residual error feature vector to a latent space; allocating and encoding the residual error feature vector mapped to the latent space as a code vector for vector quantization; and quantizing the encoded residual error feature vector to output the additional information bitstream.

    3. The method of claim 1, wherein an additional information encoder configured to encode the residual error feature vector is trained according to a loss function determined according to a loss due to encoding of the additional information encoder, a loss due to vector quantization of an additional information decoder configured to decode the additional information bitstream, and a difference between the feature vector of the original signal and a feature vector of the original signal estimated from the bitstream of the main codec and the bitstream of the additional information.

    4. The method of claim 1, further comprising: training an additional information encoder configured to encode the residual error feature vector together with an additional information decoder configured to decode the additional information bitstream and a post-processing processor configured to estimate a feature vector of the original signal based on the bitstream of the main codec and the bitstream of the additional information.

    5. The method of claim 4, wherein the training comprises training the additional information encoder, the additional information decoder, and the post-processing processor using a loss function based on a mean squared error (MSE) function and a loss function of a vector quantized variational auto-encoder (VQ-VAE).

    6. The method of claim 1, further comprising: extracting the feature vector of the decoded signal from acoustic features included in the decoded signal; and extracting the feature vector of the original signal from acoustic features included in the original signal.

    7. An audio signal decoding method, the method comprising: receiving a bitstream of a main codec and a bitstream of additional information; decoding the bitstream of the main codec; extracting a feature vector of a decoded signal from acoustic features included in the decoded signal; restoring a residual error feature vector by decoding the bitstream of the additional information; and estimating a feature vector of an original signal from the feature vector of the decoded signal and the residual error feature vector.

    8. The method of claim 7, wherein the estimating of the feature vector of the original signal comprises estimating the feature vector of the original signal by combining the feature vector of the decoded signal and the residual error feature vector.

    9. The method of claim 7, further comprising: transforming the estimated feature vector of the original signal into a time domain representation and outputting the transformed feature vector.

    10. The method of claim 7, further comprising: training an additional information decoder configured to decode the additional information bitstream and a post-processing processor configured to estimate the feature vector of the original signal based on the bitstream of the main codec and the bitstream of the additional information together with an additional information encoder configured to encode the residual error feature vector in an encoding apparatus.

    11. An audio signal encoding apparatus, the apparatus comprising: a main codec encoder configured to output a bitstream of a main codec by encoding an original signal; a main codec decoder configured to decode the bitstream of the main codec; and an additional information encoder configured to determine a residual error feature vector from a feature vector of a decoded signal and a feature vector of the original signal and output a bitstream of additional information by encoding the residual error feature vector.

    12. The apparatus of claim 11, wherein the additional information encoder is configured to map the residual error feature vector to the latent space, allocate and encode the residual error feature vector mapped to the latent space as a code vector for vector quantization, and quantize the coded residual error feature vector to output the additional information bitstream.

    13. The apparatus of claim 11, wherein the additional information encoder is trained according to a loss function determined according to a loss due to encoding of the additional information encoder, a loss due to vector quantization of an additional information decoder, and a difference between the feature vector of the original signal and a feature vector of the original signal estimated from the bitstream of the main codec and the bitstream of the additional information.

    14. The apparatus of claim 11, wherein the additional information encoder is trained together with an additional information decoder configured to decode the additional information bitstream and a post-processing processor configured to estimate a feature vector of the original signal based on the bitstream of the main codec and the bitstream of the additional information.

    15. The apparatus of claim 14, wherein the additional information encoder is trained together with the additional information decoder and the post-processing processor using a loss function based on a mean squared error (MSE) function and a loss function of a vector quantized variational auto-encoder (VQ-VAE).

    Description

    BRIEF DESCRIPTION OF THE DRAWINGS

    [0032] These and/or other aspects, features, and advantages of the invention will become apparent and more readily appreciated from the following description of example embodiments, taken in conjunction with the accompanying drawings of which:

    [0033] FIG. 1 is a diagram illustrating an audio encoding apparatus and an audio decoding apparatus according to an example embodiment;

    [0034] FIG. 2 is an example of operations of an audio encoding apparatus and an audio decoding apparatus according to an example embodiment;

    [0035] FIG. 3 is an example of performance evaluation for an output of an audio decoding apparatus according to an example embodiment;

    [0036] FIG. 4 is an example of evaluation of sound quality for an output of an audio decoding apparatus according to an example embodiment;

    [0037] FIG. 5 is an example of spectrograms of a signal output by an audio decoding apparatus according to an example embodiment;

    [0038] FIG. 6 is a flowchart illustrating an audio encoding method according to an example embodiment; and

    [0039] FIG. 7 is a flowchart illustrating an audio decoding method according to an example embodiment.

    DETAILED DESCRIPTION

    [0040] Hereinafter, example embodiments will be described in detail with reference to the accompanying drawings. An audio encoding method and an audio decoding method according to an example embodiment may be performed by an audio encoding apparatus 110 and an audio decoding apparatus 120.

    [0041] FIG. 1 is a diagram illustrating an audio encoding apparatus and an audio decoding apparatus according to an example embodiment.

    [0042] The audio encoding apparatus 110 may include a main codec encoder 111, a main codec decoder 112, a feature extractor 113, a feature extractor 114, and an additional information encoder 115, as shown in FIG. 1. In this case, the main codec encoder 111, the main codec decoder 112, the feature extractor 113, the feature extractor 114, and the additional information encoder 115 may be respective modules included in different processes or in one process.

    [0043] The main codec encoder 111 may encode an original signal x.sub.o and output a bitstream of a main codec. For example, the main codec may be a legacy codec such as high-efficiency advanced audio coding (HE-AAC).

    [0044] The main codec decoder 112 may decode the bitstream of the main codec and output a decoded signal x.sub.d.

    [0045] The feature extractor 113 may extract a feature vector X.sub.d of the decoded signal x.sub.d from acoustic features included in the decoded signal x.sub.d.

    [0046] The feature extractor 114 may extract a feature vector X.sub.o of the original signal x.sub.o from acoustic features included in the original signal x.sub.o. For example, the feature extractor 113 and the feature extractor 114 may extract the feature vector X.sub.d and the feature vector X.sub.o using at least one of various types of acoustic features such as log power spectra (LPS).

    [0047] The additional information encoder 115 may determine a residual error feature vector X.sub.r from the feature vector X.sub.d of the decoded signal x.sub.d and the feature vector X.sub.o of the original signal x.sub.o. Further, the additional information encoder 115 may encode the residual error feature vector X.sub.r to output a bitstream of additional information. Here, the residual error feature vector X.sub.r may satisfy Equation (1).


    X.sub.r=X.sub.0−X.sub.d  [Equation 1]

    [0048] In this case, the additional information encoder 115 may map the residual error feature vector X.sub.r to a latent space having a smaller dimension than the number of dimensions of the residual error feature vector. For example, the number of dimensions of the residual error feature vector X.sub.r input to the additional information encoder 115 may be 257, and the number of dimensions of the bitstream output from the additional information encoder 115 may be 32. In addition, the latent space may be a space expressing latent information inherent in observed data.

    [0049] Then, the additional information encoder 115 may allocate and encode the residual error feature vector mapped to the latent space as a code vector for vector quantization. Next, the additional information encoder 115 may quantize the encoded residual error feature vector to output the additional information bitstream.

    [0050] In this case, the additional information encoder 115 may be trained according to a loss function determined according to a loss due to the encoding and vector quantization of the additional information encoder 115, and a difference between the feature vector of the original signal and a feature vector of the original signal estimated by a post-processing processor 1240 from the bitstream of the main codec and the bitstream of the additional information. Here, the additional information encoder 115 may be trained together with an additional information decoder 123 and the post-processing processor 124. For example, the additional information encoder 115, the additional information decoder 123, and the post-processing processor 124 may perform joint training according to a loss function L represented by Equation (2).


    custom-character=∥sg(f(X.sub.r))−e∥.sub.2.sup.2+∥sg(e)−f(X.sub.r)∥.sub.2.sup.2+∥X.sub.o−{tilde over (X)}.sub.o∥.sub.2.sup.2.  [Equation 2]

    [0051] In this case, ∥sg(f(X.sub.r))−e∥.sub.2.sup.2 may be the loss due to the encoding and vector quantization for optimization of the additional information encoder 115, and ∥sg(e)−f(X.sub.r)∥.sub.2.sup.2 may be a loss due to decoding and vector quantization of the additional information decoder 123. Also, ∥X.sub.o−{tilde over (X)}.sub.o∥.sub.2.sup.2 may be the difference in the post-processing processor 124 between the feature vector X.sub.o of the original signal and the feature vector {tilde over (X)}.sub.o of the original signal estimated by the post-processing processor 124. Also, the loss function may be trained using various optimization methods such as mean squared error (MSE).

    [0052] In summary, the additional information encoder 115 may be trained together with the additional information decoder 123 and the post-processing processor 124 by using a loss function based on an MSE function and a loss function of a vector quantized variational auto-encoder (VQ-VAE). For example, the additional information encoder 115, the additional information decoder 123, and the post-processing processor 124 may be trained by using a loss function combining the MSE function (d functions of VQ-VAE (∥sg(f(X.sub.r))−e∥.sub.2.sup.2, ∥sg(e)−f(X.sub.r)∥.sub.2.sup.2) as in Equation 2.

    [0053] As shown in FIG. 1, the audio decoding apparatus 120 may include a main codec decoder 121, a feature extractor 122, an additional information decoder 123, and the post-processing processor 124. In this case, the main codec decoder 121, the feature extractor 122, the additional information decoder 123, and the post-processing processor 124 may be respective modules included in different processes or in one process.

    [0054] The main codec decoder 121 may receive the bitstream of the main codec from the main codec encoder 111 of the audio encoding apparatus 110. Further, the main codec decoder 121 may decode the received bitstream of the main codec and output a decoded signal x.sub.d. Also, the main codec decoder 121 may operate in the same manner as the main codec decoder 112 of the audio signal encoding apparatus 110.

    [0055] The feature extractor 122 may extract a feature vector X.sub.d of the signal x.sub.d decoded by the main codec decoder 121 from acoustic features included in the decoded signal x.sub.d. Also, the feature extractor 122 may operate in the same manner as the feature extractor 112 of the audio signal encoding apparatus 110.

    [0056] The additional information decoder 123 may receive the bitstream of the additional information from the additional information encoder 115 of the audio encoding apparatus 110. In addition, the additional information decoder 123 may restore the residual error feature vector by decoding the received bitstream of the additional information.

    [0057] The post-processing processor 124 may estimate a feature vector of the original signal from the feature vector X.sub.d of the decoded signal x.sub.d and the residual error feature vector {tilde over (X)}.sub.r restored by the side information decoder 123. Further, the post-processing processor 124 may transform the estimated feature vector of the original signal into a time domain representation {tilde over (x)}.sub.o and output {tilde over (x)}.sub.o. In this case, the post-processing processor 124 may estimate the feature vector of the original signal by combining the feature vector X.sub.d and the residual error feature vector {tilde over (X)}.sub.r.

    [0058] The audio encoding apparatus 110 according to the present disclosure encodes residual error features using a neural network, vector quantizes the encoded residual error features, and transmits the vector-quantized residual error features as additional information, and the audio decoding apparatus 120 post-processes the received additional information using a neural network, thereby capable of providing backward compatibility with an existing codec and improving sound quality of an audio signal decoded with the existing codec.

    [0059] FIG. 2 is an example of operations of an audio encoding apparatus and an audio decoding apparatus according to an example embodiment.

    [0060] An original signal x.sub.o may be input to the main codec encoder 111 and the feature extractor 114 as shown in FIG. 2.

    [0061] In this case, the main codec encoder 111 may encode the original signal x.sub.o and transmit the encoded original signal to the main codec decoder 112 of the audio encoding apparatus 120 and the main codec decoder 121 of the audio decoding apparatus 120.

    [0062] In addition, each of the main codec decoder 112 and the main codec decoder 121 may decode received bitstream and output a decoded signal x.sub.d.

    [0063] The feature extractor 113 may extract a feature vector X.sub.d of the decoded signal x.sub.d from acoustic features included in the decoded signal x.sub.d. Further, the feature extractor 114 may extract a feature vector X.sub.o of the original signal x.sub.o from acoustic features included in the original signal x.sub.o.

    [0064] In this case, the additional information encoder 115 may determine a residual error feature vector X.sub.r, which is a difference between the feature vector X.sub.o of the original signal x.sub.o and the feature vector X.sub.d of the decoded signal x.sub.d. In addition, the additional information encoder 115 may encode the residual error feature vector X.sub.r to output a bitstream of additional information. For example, a neural network used by the additional information encoder 115 to encode the residual error feature vector X.sub.r may be formed by a deep learning model having a structure 210. Also, an output code vector of the additional information encoder 115 may be allocated as a representative code vector of a VQ codebook 220. In this case, the representative code vector may be code vectors having the closest distance between vectors among vectors included in the VQ codebook 220. For example, a distance between vectors may be calculated using Euclidean distance or the like.

    [0065] Then, the additional information encoder 115 may quantize the encoded residual error feature vector to output an additional information bitstream. In this case, the additional information bitstream may include a codebook index (code vector index) of the additional information. In addition, the additional information encoder 115 may transmit the codebook 220 and the additional information bitstream to the additional information decoder 123.

    [0066] The additional information decoder 123 may restore the residual error feature vector by decoding the bitstream of the additional information received from the additional information encoder 115 of the audio encoding apparatus 110. For example, a neural network used by the additional information decoder 123 to decode the residual error feature vector X.sub.r may be formed by a deep learning model having a structure 230. In this case, the additional information decoder 123 may restore the residual error feature vector using a code vector of to the code book 220.

    [0067] The feature extractor 122 may extract the feature vector X.sub.d of the decoded signal x.sub.d from acoustic features included in the signal x.sub.d decoded by the main codec decoder 121.

    [0068] A concatenate operator 201 may input to the post-processing processor 124, which is a result [X.sub.d′.Math.{tilde over (X)}.sub.r] of performing a concatenate operation on the feature vector X.sub.d and the residual error feature vector X.sub.r restored by the additional information decoder 123. Then, the post-processing processor 124 may estimate a feature vector of the original signal from [X.sub.d′.Math.X.sub.r] using a deep learning module having a structure 240. Then, the post-processing processor 124 may output the estimated feature vector {tilde over (x)}o of the original signal. In this case, a waveform restorer 202 may transform the estimated feature vector of the original signal {tilde over (x)}.sub.o into a time domain representation {tilde over (x)}.sub.o and output {tilde over (x)}.sub.o.

    [0069] The audio encoding apparatus 110 and the audio decoding apparatus 120 may perform end-to-end deep learning for jointly training the deep learning model for encoding the residual error feature vector in the additional information encoder 115, the deep learning model for restoring the residual error feature vector in the additional information decoder 123, and the deep learning model for estimating the feature vector of the original signal in the post-processing processor 124, thereby capable of preventing errors of the additional information encoder 115, the additional information decoder 123, and the post-processing processor 124 using the deep learning models from being sequentially accumulated.

    [0070] Further, the audio encoding apparatus 110 and the audio decoding apparatus 120 may perform end-to-end deep learning for jointly training the deep learning model having the structure 210, the deep learning model having the structure 230, and the deep learning module having the structure 240, thereby effectively training a code vector that quantizes a compressed latent vector to extract additional information for sound quality improvement in the audio encoding process. Specifically, the audio encoding apparatus 110 and the audio decoding apparatus 120 may optimize the additional information encoder 115, the additional information decoder 123, the codebook 220, and the post-processing processor 124 by training the deep learning model having the structure 210 to minimize the loss function of Equation 2, the deep learning model having the structure 230, and the deep learning module having the structure 240.

    [0071] FIG. 3 is an example of performance evaluation for an output of an audio decoding apparatus according to an example embodiment.

    [0072] Performance evaluation of an audio decoding apparatus using NeroAAC codec of MPEG-4 high-efficiency advanced audio coding (HE-AAC) v1 (NeroAAC), performance evaluation of an audio decoding apparatus with a post-processor added to the NeroAAC codec (+PP only), and performance evaluation of the audio decoding apparatus 120 using the NeroAAC codec as the main codec (Prop. (+0.6 kbps)) may be as shown in the upper table of FIG. 3. The table of FIG. 3 is an example of the performance measured using a standardized speech quality evaluation tool, ITU-T Recommendation P.862.2 wideband perceptual evaluation of speech quality (PESQ).

    [0073] In addition, performance evaluation of an audio decoding apparatus using QAAC codec (QAAC), performance evaluation of an audio decoding apparatus with a post-processor added to the QAAC codec (+PP only), and performance evaluation of the audio decoding apparatus 120 using the QAAC codec as the main codec (Prop. (+0.6 kbps)) may be as shown in the lower table of FIG. 3.

    [0074] As shown in FIG. 3, the audio encoding apparatus 110 and the audio decoding apparatus 120 according to an example embodiment may have a higher average PESQ score, despite an additionally used bit rate being about 0.6 kbps, than a method using only a post-processing module in addition to the main codec operating at a higher bit rate.

    [0075] FIG. 4 is an example of evaluation of sound quality for an output of an audio decoding apparatus according to an example embodiment.

    [0076] The graph 410 may show the extent to which the quality of a signal decoded by the audio decoding apparatus with the post-processor added to the NeroAAC codec is improved compared to a signal decoded by the audio decoding apparatus using the NeroAAC codec operated at 16 kbps (+PP only), and the extent to which the quality of a signal decoded by the audio decoding apparatus 120 using the NeroAAC codec as the codec is improved compared to the signal decoded by the audio decoding apparatus using the NeroAAC codec operated at 16 kbps (Prop. (+0.6 kbps)).

    [0077] Further, the graph 420 may show the extent to which the quality of a signal decoded by the audio decoding apparatus with the post-processor added to the QAAC codec is improved compared to a signal decoded by the audio decoding apparatus using the QAAC codec operated at 16 kbps (+PP only), and the extent to which the quality of a signal decoded by the audio decoding apparatus 120 using the QAAC codec as the main codec is improved compared to the signal decoded by the audio decoding apparatus using the QAAC codec operated at 16 kbps (Prop. (+0.6 kbps)).

    [0078] Here, the graph 410 and the graph 420 may be the results measured according to the MUltiple Stimuli with Hidden Reference and Anchor (MUSHRA) test, which is one of methods of performing a codec listening test to evaluate the quality of codec output signals. According to the graph 410 and the graph 420, the signal decoded by the audio decoding apparatus 120 according to an example embodiment, it can be seen that the signal decoded by the audio decoding apparatus 120 is improved by 9.73 points for NeroAAC and 7.93 for QAAC compared to the signal decoded by the audio decoding apparatus using only post-processing in addition to the main codec.

    [0079] FIG. 5 is an example of spectrograms of a signal output by an audio decoding apparatus according to an example embodiment.

    [0080] The spectrogram 510 of FIG. 5 shows the original signal (a), the signal decoded by the audio decoding apparatus 120 using the NeroAAC codec as the main codec (b), the signal decoded by the audio decoding apparatus with the post-processor added to the NeroAAC codec (c), and the signal decoded by an existing audio decoding apparatus using the NeroAAC codec (d).

    [0081] Further, the spectrogram 520 of FIG. 5 shows the original signal (a), the signal decoded by the audio decoding apparatus 120 using the QAAC codec as the main codec (b), the signal decoded by the audio decoding apparatus with the post-processor added to the QAAC codec (c), and the signal decoded by an existing audio decoding apparatus using the QAAC codec (d).

    [0082] According to the spectrogram 510 and the spectrogram 520, it can be seen that the high frequency band, which is not well restored in (c), is well restored in (b).

    [0083] FIG. 6 is a flowchart illustrating an audio encoding method according to an example embodiment.

    [0084] In operation 610, the main codec encoder 111 may encode an original signal x.sub.o to output a bitstream of the main codec. In this case, the main codec encoder 111 may transmit the bitstream of the main codec to the audio decoding apparatus 120.

    [0085] In operation 620, the main codec decoder 112 may decode the bitstream of the main codec output in operation 610 to output a decoded signal x.sub.d.

    [0086] In operation 630, the feature extractor 113 may extract, from the acoustic features included in the signal x.sub.d decoded in operation 620, a feature vector X.sub.d of the decoded signal x.sub.d.

    [0087] In operation 640, the feature extractor 114 may extract a feature vector X.sub.o of the original signal x.sub.o from the acoustic features included in the original signal x.sub.0.

    [0088] In operation 650, the additional information encoder 115 may determine a residual error feature vector X.sub.r from the feature vector X.sub.d of the decoded signal x.sub.d and the feature vector X.sub.o of the original signal x.sub.o.

    [0089] In operation 660, the additional information encoder 115 may encode the residual error feature vector X.sub.r to output a bitstream of additional information. In this case, the additional information encoder 115 may map the residual error feature vector X.sub.r to the latent space. Then, the additional information encoder 115 may encode the residual error feature vector mapped to the latent space by allocating the residual error feature vector as a code vector for vector quantization. Then, the additional information encoder 115 may quantize the encoded residual error feature vector to output an additional information bitstream.

    [0090] FIG. 7 is a flowchart illustrating an audio decoding method according to an example embodiment.

    [0091] In operation 710, the main codec decoder 121 may receive the bitstream of the main codec from the main codec encoder 111 of the audio encoding apparatus 110. Further, the main codec decoder 121 may decode the received bitstream of the main codec to output a decoded signal x.sub.d.

    [0092] In operation 720, the feature extractor 122 may extract a feature vector X.sub.d of the decoded signal x.sub.d from the acoustic features included in the signal x.sub.d decoded in operation 710.

    [0093] In operation 730, the additional information decoder 123 may receive the bitstream of the additional information from the additional information encoder 115 of the audio encoding apparatus 110. Further, the additional information decoder 123 may restore the residual error feature vector by decoding the received bitstream of the additional information.

    [0094] In operation 740, the post-processing processor 124 may estimate a feature vector of the original signal from the feature vector X.sub.d of the decoded signal x.sub.d and the residual error feature vector {tilde over (X)}.sub.r restored by the additional information decoder 123. Here, the post-processing processor 124 may estimate the feature vector of the original signal by combining the feature vector X.sub.d and the residual error feature vector {tilde over (X)}.sub.r.

    [0095] In operation 750, the post-processing processor 124 may transform the estimated feature vector {tilde over (X)}.sub.o of the original signal into a time domain representation to {tilde over (x)}.sub.o output {tilde over (x)}.sub.o.

    [0096] The audio encoding apparatus 110 according to the present disclosure encodes residual error features using a neural network, vector quantizes the encoded residual error features, and transmits the vector-quantized residual error features as additional information, and the audio decoding apparatus 120 post-processes the received additional information using a neural network, thereby capable of providing backward compatibility with the existing codec and improving sound quality of an audio signal decoded with the existing codec.

    [0097] Further, according to example embodiments, it is possible to prevent errors of the additional information encoder 115, the additional information decoder 123, and the post-processing processor 124 using the deep learning models from being sequentially accumulated by performing end-to-end deep learning for jointly training the deep learning model for encoding the residual error feature vector in the additional information encoder 115, the deep learning model for restoring the residual error feature vector in the additional information decoder 123, and the deep learning model for estimating the feature vector of the original signal in the post-processing processor 124.

    [0098] In addition, according to example embodiments, it is possible to effectively train the code vector that quantizes the compressed latent vector to extract the additional information for sound quality improvement in the audio encoding process by performing end-to-end deep learning for jointly training the deep learning models.

    [0099] The components described in the example embodiments may be implemented by hardware components including, for example, at least one digital signal processor (DSP), a processor, a controller, an application-specific integrated circuit (ASIC), a programmable logic element, such as a field programmable gate array (FPGA), other electronic devices, or combinations thereof. At least some of the functions or the processes described in the example embodiments may be implemented by software, and the software may be recorded on a recording medium. The components, the functions, and the processes described in the example embodiments may be implemented by a combination of hardware and software.

    [0100] The methods according to example embodiments may be embodied as a program that is executable by a computer and may be implemented as various recording media such as a magnetic storage medium, an optical reading medium, and a digital storage medium.

    [0101] Various techniques described herein may be implemented as digital electronic circuitry, or as computer hardware, firmware, software, or combinations thereof. The techniques may be implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable storage device (for example, a computer-readable medium) or in a propagated signal for processing by, or to control an operation of a data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program(s) may be written in any form of a programming language, including compiled or interpreted languages and may be deployed in any form including a stand-alone program or a module, a component, a subroutine, or other units suitable for use in a computing environment. A computer program may be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.

    [0102] Processors suitable for execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. Elements of a computer may include at least one processor to execute instructions and one or more memory devices to store instructions and data. Generally, a computer will also include or be coupled to receive data from, transfer data to, or perform both on one or more mass storage devices to store data, e.g., magnetic, magneto-optical disks, or optical disks. Examples of information carriers suitable for embodying computer program instructions and data include semiconductor memory devices, for example, magnetic media such as a hard disk, a floppy disk, and a magnetic tape, optical media such as a compact disk read only memory (CD-ROM), a digital video disk (DVD), etc. and magneto-optical media such as a floptical disk, and a read only memory (ROM), a random access memory (RAM), a flash memory, an erasable programmable ROM (EPROM), and an electrically erasable programmable ROM (EEPROM). A processor and a memory may be supplemented by, or integrated into, a special purpose logic circuit.

    [0103] Also, non-transitory computer-readable media may be any available media that may be accessed by a computer and may include both computer storage media and transmission media.

    [0104] The present specification includes details of a number of specific implements, but it should be understood that the details do not limit any invention or what is claimable in the specification but rather describe features of the specific example embodiment. Features described in the specification in the context of individual example embodiments may be implemented as a combination in a single example embodiment. In contrast, various features described in the specification in the context of a single example embodiment may be implemented in multiple example embodiments individually or in an appropriate sub-combination. Furthermore, the features may operate in a specific combination and may be initially described as claimed in the combination, but one or more features may be excluded to from the claimed combination in some cases, and the claimed combination may be changed into a sub-combination or a modification of a sub-combination.

    [0105] Similarly, even though operations are described in a specific order on the drawings, it should not be understood as the operations needing to be performed in the specific order or in sequence to obtain desired results or as all the operations needing to be performed. In a specific case, multitasking and parallel processing may be advantageous. In addition, it should not be understood as requiring a separation of various apparatus components in the above described example embodiments in all example embodiments, and it should be understood that the above-described program components and apparatuses may be incorporated into a single software product or may be packaged in multiple software products.

    [0106] It should be understood that the example embodiments disclosed herein are merely illustrative and are not intended to limit the scope of the invention. It will be apparent to one of ordinary skill in the art that various modifications of the example embodiments may be made without departing from the spirit and scope of the claims and their equivalents.