Asymmetric and adaptive intensity for windowing at encoding and decoding times for audio compression
Asymmetric windowing with a power coefficient in audio codecs addresses inefficiencies by optimizing compression and decoding processes, ensuring efficient bit usage and seamless transitions.
Patent Information
- Application Number
- CN202280096055.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2022-05-17
- Publication Date
- 2024-12-13
AI Technical Summary
Conventional audio codecs inefficiently compress audio signals due to the use of the same windowing function in encoding and decoding, leading to loss of information at block edges and harmonic content, resulting in suboptimal bit usage.
Asymmetrically modify the windowing function for both the encoder and decoder using a power coefficient, allowing for improved compression by adjusting the initial blocking window based on entropy and time span characteristics of the audio signal.
Enhances audio compression efficiency by maintaining energy balance across encoding and decoding processes, reducing bit usage while minimizing perceptible noise transitions.
Smart Images

Figure CN119137662A_ABST
Abstract
Description
Technical Field
[0001] Embodiments relate to encoding and decoding audio. Background Art
[0002] It is common practice to communicate and / or store audio signals. For example, an audio signal can be streamed from a server to a user device so that the user can listen to a playback of the audio signal. The audio signal can be streamed alone or with a video stream. The audio signal can also be stored in a storage medium (e.g., fixed and / or portable computer memory) for later consumption. Summary of the invention
[0003] Example implementations may achieve improved compression by asymmetrically modifying a window (eg, a windowing function) associated with an audio encoder and / or an audio decoder.
[0004] In general aspects, an apparatus, a system, a non-transitory computer-readable medium (having a computer-executable program code stored thereon, which can be executed on a computer system), and / or a method can perform a process, wherein the method includes: receiving an initial time-domain audio signal; modifying the initial blocking window based on a power coefficient to generate a modified blocking window; using the modified blocking window to generate a blocked time-domain audio signal; transforming the blocked time-domain audio signal to generate a frequency-domain audio signal; and compressing the frequency-domain audio signal to generate a compressed frequency-domain audio signal.
[0005] In another general aspect, an apparatus, a system, a non-transitory computer-readable medium (having a computer-executable program code stored thereon, which can be executed on a computer system), and / or a method can perform a process, wherein the method includes: receiving a formatted data packet including a compressed frequency domain audio signal and a power coefficient; decompressing the compressed frequency domain audio signal; transforming the decompressed frequency domain audio signal into a blocked time domain audio signal; modifying an initial blocking window based on the power coefficient to generate a modified blocking window; and using the modified blocking window to generate a reconstructed time domain audio signal based on the blocked time domain audio signal.
[0006] Implementations may include one or more of the following features. For example, the method further includes generating a data packet including a compressed frequency domain audio signal and a power coefficient. The method may also store the compressed frequency domain audio signal and the power coefficient. The method may also include playing back the reconstructed time domain audio signal. The modified blocking window may be of an encoder, the decoder blocking window may be different from the modified blocking window, and the product of the modified blocking window and the decoder blocking window at an instance of the modified blocking window is equal to an amplitude of one (1). The modification made to the initial blocking window to generate the modified blocking window may be (2-pf) * f(t), where pf represents the power coefficient and f(t) represents the initial blocking window. The initial blocking window may include a first portion, a second portion, and a third portion, and modifying the initial blocking window to generate the modified blocking window may include modifying the first portion based on the power coefficient and modifying the third portion based on the power coefficient.
[0007] The power coefficient may be generated based on an initial time-domain audio signal. The power coefficient may be generated based on entropy associated with compression of a frequency-domain audio signal. The power coefficient may be generated based on an initial time-domain audio signal, and the power coefficient may be modified based on entropy associated with compression of the frequency-domain audio signal. The initial time-domain audio signal may be associated with a first time span, and the method may further include: detecting a change in the initial time-domain audio signal from the first time span to a second time span; and changing the power coefficient based on the second time span. The blocked time-domain audio signal may be a portion of the initial time-domain audio signal over a time span equal to a time span associated with the modified blocking window. The frequency-domain audio signal may include a frequency content representation of the blocked time-domain audio signal. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] Example embodiments will be more fully understood from the detailed description given herein below, and the accompanying drawings, in which like elements are denoted by like reference numerals, which are given by way of illustration only and thus are not limiting of example embodiments, and in which:
[0009] Figure 1 An audio encoder / decoder signal flow diagram according to an example implementation is shown.
[0010] Figure 2 A signal flow diagram for generating a power factor according to an example implementation is shown.
[0011] Figure 3 A blocked windowed signal diagram is shown according to an example implementation.
[0012] Figure 4A A block diagram of an audio encoder according to an example implementation is shown.
[0013] Figure 4B A block diagram of an audio decoder according to an example implementation is shown.
[0014] Figure 5 A method of generating a formatted data packet according to an example implementation is shown.
[0015] Figure 6 A method of generating an audio signal according to an example implementation is shown.
[0016] Figure 7 Examples of a computer device and a mobile computer device according to at least one example embodiment are shown.
[0017] It should be noted that these drawings are intended to illustrate the general characteristics of the methods and / or structures utilized in certain example embodiments and to supplement the written description provided below. However, these drawings are not drawn to scale and may not accurately reflect the precise structure or performance characteristics of any given embodiment, and should not be interpreted as defining or limiting the range of values or properties covered by the example embodiments. For example, the relative positioning of regions and / or structural elements may be reduced or enlarged for clarity. The use of similar or identical reference numerals in the various drawings is intended to indicate the presence of similar or identical elements or features. DETAILED DESCRIPTION
[0018] Audio signals are typically generated when captured using a capture device (e.g., a microphone) as analog or time-domain audio signals. However, for communication and / or storage, in many applications, when a digital format (e.g., MP3 format) is required, the audio signal can be more efficiently stored (e.g., stored in a mobile device) and / or communicated (e.g., streamed to another device).
[0019] In order to digitally process (e.g., compress, store in a memory, digitally communicate, stream, etc.) an audio signal (e.g., a time-domain audio signal), the audio signal may be processed into a block-based audio signal. The block-based audio signal may include samples (e.g., blocks) of the audio signal. The samples may be generated using time-domain windowing.
[0020] The input audio signal can be sampled in sequential time frames, and each frame can include a portion of the input audio signal sampled within a sliding time window (sometimes referred to as time windowing). Time windowing can be used, for example, in block-based audio compression. Windowing (e.g., time windowing) can include implementing a crossfade from a first (e.g., previous) block to a second (e.g., next) block. Crossfades can be used as a kind of audio transition between two blocks. For example, the audio of the first block fades out (e.g., is weakened), while the audio of the second block fades in (e.g., is enhanced) at the same time. During the crossfade, the audio from both blocks exists (e.g., during playback, both will be heard by the user). In some implementations, crossfades can be implemented in time windowing. For example, the amplitude of the first window decreases (e.g., fades out), while the amplitude of the second window increases (e.g., fades in) at the same time. Using windowing / crossfades can allow seamless movement from one block to the next without perceptible clicks at the block boundaries.
[0021] Unlike other (e.g., video and image) compression and decompression processes where decoding may be approximately opposite to encoding, the windowing in the audio decoding function may not be opposite to the windowing in the audio encoding function. Instead, the audio encoder and decoder can use the same windowing function. In an audio compression and decompression scheme, the energy of the audio stream input to the encoder should be equal to the energy of the audio stream as the output of the decoder. In order to retain energy, the following function should be retained for each processed (e.g., encoded and decoded) audio sample: (Current block encoding window value + next block encoding window value) * (Current block decoding window value + next block decoding window value)
[0022] Therefore, conventional codecs apply windowing functions twice. Therefore, the square function can be a function that affects the cross-fading of a block. However, when there is a transient at or near the edge of a block, the coding time windowing function can remove information. For example, due to cross-fading, the amplitude of the audio impulse (impulse) at the edge of a block (for example, at the time when the time window begins or ends) may be reduced. Therefore, the block obtained can be coded with fewer bits. In addition, when a block comprises harmonic content, the windowing function can introduce entropy (for example, repetition that can be further compressed). Therefore, the block obtained can be coded with fewer bits. Therefore, based on the characteristics of the audio signal and the characteristics of the windowing function, existing codecs may not be able to efficiently (for example, with minimum bits) compress the audio signal.
[0023] Example implementations may achieve improved compression by modifying a window (e.g., a window function) associated with an audio encoder and / or an audio decoder. Example implementations may achieve improved compression by using a power coefficient parameter used by the audio encoder, communicated in a compressed audio stream, and used by the audio decoder. An audio signal may be encoded using a window function defined as follows, for example: Window* (2 - power factor parameter), And decode using the window function defined as follows, for example: Window* (power factor parameter), where window is the codec windowing function.
[0024] Figure 1 An audio encoder / decoder signal flow diagram according to an example implementation is shown. Figure 1 As shown, the audio encoder / decoder signal stream includes an audio encoder 105 block and an audio decoder 130 block. The audio encoder 105 includes a windower 110 block, a converter 115 block, a compressor 120 block and a format 125 block. The audio decoder 130 includes a format 135 block, a decompressor 140 block, a converter 145 block and a windower 150 block.
[0025] The audio encoder 105 may be configured to process the input audio signal A n Input audio signal A n It can be a time domain audio signal. Compressing the audio signal may include converting the input audio signal A n As an analog (e.g., continuous, infinitely variable, time domain) signal, it is converted into a digital (e.g., discrete time, discrete amplitude, frequency domain) audio signal. Thus, compressing the audio signal may include converting the input audio signal A n Windowing (eg, time windowing) and conversion (eg, analog to digital) are performed.
[0026] The window adder 110 may be configured to process the input audio signal A in sequential time frames. n Each frame may include the input audio signal A sampled within a sliding time window (sometimes referred to as time windowing). n In other words, the window adder 110 can be configured to n To generate a block-based audio signal. Therefore, the window adder 110 can be called a blocking window.
[0027] The blocking window may have a windowing function as defined by the audio codec. In an example implementation, the blocking window (e.g., the windowing function) may be modified based on the power coefficient 155 to generate a modified blocking window. In an example implementation, the blocking window may be modified based on the input audio signal A. n To generate the power coefficient 155. In an example implementation, the power coefficient 155 may be generated based on the entropy associated with compressing the frequency domain audio signal generated by the transformer 115. In an example implementation, the power coefficient 155 may be generated based on the input audio signal A n and the entropy associated with compressing the frequency domain audio signal to generate the power coefficient 155. In an example implementation, the input audio signal A may also be used to generate the power coefficient 155 based on the entropy associated with compressing the frequency domain audio signal. n In an exemplary implementation, the power coefficient 155 can also be generated based on the input audio signal A n The power coefficient 155 is generated or changed by changing the time span.
[0028] The transformer 115 may be configured to convert the windowed input audio signal A n To generate a frequency domain audio signal. The converter 115 may include an analog-to-digital converter (ADC). The ADC may use a Fourier transform (e.g., DCT, DFT, FFT). The ADC may be defined by an audio codec. For example, the ADC may be a direct ADC, a successive approximation ADC, a sigma-delta ADC, a pipelined ADC, a ramp-compare ADC, a Wilkinson ADC, an integrated ADC, etc., to name a few. The window adder 110 and the converter 115 may be combined to form an ADC. The ADC often has an associated bandwidth (or a configurable bandwidth). The bandwidth may be the input audio signal A. n The number of times per second that a (eg, analog source) is sampled by the windower 110 to generate discrete digital (or frequency domain) values by the transformer 115 .
[0029] The compressor 120 may be configured to compress the digital (or frequency domain) audio signal generated by the converter 115 (e.g., reduce the number of bits representing the audio signal). The compressor 120 may be configured to quantize and entropy encode the digital audio signal generated by the converter 115. Quantization may reduce the data in each block (or frame as discussed above) of the digital audio signal. Quantization may involve mapping values in a relatively large range to values in a relatively small range, thereby reducing the amount of data required to represent each quantized block of the digital audio signal. Quantization may convert each block of the digital audio signal into a discrete quantum value, which is referred to as a quantized coefficient or quantization level. For example, quantization may be configured to add zeros to the data associated with the digital audio signal block. For example, a codec or coding standard may define 128 quantization levels in a scalar quantization process.
[0030] Entropy encoding a digital audio signal (quantized digital audio signal) may include creating and assigning a unique prefix-free code to each unique quantized coefficient or quantization level corresponding to the quantized digital audio signal. Entropy encoding may include compressing data by replacing each quantized coefficient or quantization level with a corresponding variable-length prefix-free output codeword to generate a compressed audio signal.
[0031] Format 125 can be configured to generate formatted files, and the formatted files include compressed audio signals and the power coefficient 155 used by window adder 110. The formatted files can be formatted based on codec. For example, the formatted files can be formatted into audio file formats such as opus, mp3, ambisonic, advanced audio codec (AAC).
[0032] The audio decoder 130 may be configured to generate a reconstructed audio signal A n '. The reconstructed audio signal A n ' may be an analog (or time domain) audio signal. The format 135 may be configured to deconstruct the formatted file generated by the format 125. For example, the format 135 may be configured to extract the compressed audio signal and the power coefficient 155 from the formatted file generated by the format 125.
[0033] The decompressor 140 may be configured to perform the reverse operation of the compressor 120. In other words, the decompressor 140 may be configured to perform inverse entropy encoding and decoding and inverse quantization on the compressed audio signal. The transformer 145 may be configured to perform the reverse operation of the transformer 115 (e.g., inverse discrete cosine transform (IDCT), inverse discrete Fourier transform (IDFT), inverse fast Fourier transform (IFFT)).
[0034] Window adder 150 can be configured to combine adjacent blocks into a continuous output audio signal. Adjacent blocks can overlap and add. In other words, the transformed audio data blocks can overlap and be cascaded together in time. Then, the overlapping cascaded audio blocks can be windowed. Overlapping audio blocks and windowing can generate a smooth transition (e.g., a transition with minimum noise) between the audio blocks. Windowing can use a windowing function as defined by an audio codec. In an example implementation, the windowing function can be modified based on the power coefficient 155 extracted from the formatted file by the format 135. Window adder 150 can generate a reconstructed audio signal A based on the overlap-add and windowed audio blocks. n '.
[0035] Figure 2 A flow chart for generating a power factor according to an example implementation is shown. Figure 2 As shown, the flow chart includes a window adder 110, a compressor 120 and a power coefficient generator 205. The power coefficient generator 205 may be configured to generate a power coefficient 155.
[0036] In an example implementation, the power coefficient generator 205 may be configured to generate a power factor based on the input audio signal A n To generate the power coefficient 155. For example, the power coefficient generator 205 can be configured to determine the input audio signal A n characteristics and uses a lookup table to calculate the n In an example implementation, the power coefficient generator 205 may be configured to use a machine learning model trained using a training audio signal to generate a power coefficient based on the input audio signal A. n To predict the power coefficient 155. In an example implementation, the power coefficient generator 205 may be configured to determine the input audio signal A n The characteristics of the input audio signal A are analyzed and data clustering is used to n The power coefficient 155 is selected based on the characteristics of the audio signal. In an example implementation, the audio context model may be applied to the audio signal A n , and the audio context model is used to select the power coefficient 155.
[0037] In an example implementation, the power coefficient generator 205 may be configured to generate the power coefficient 155 based on entropy associated with compressing the frequency domain audio signal generated by the transformer 115. For example, the entropy associated with compressing the frequency domain audio signal may be input into an entropy clustering model, and the power coefficient 155 may be selected using the entropy clustering model. In an example implementation, the power coefficient generator 205 may be configured to generate the power coefficient 155 based on the input audio signal A. nThe power coefficients 155 are generated by combining the entropy associated with compressing the frequency domain audio signal.
[0038] In addition to any of the above techniques used by the power coefficient generator 205 to generate the power coefficient 155, the power coefficient generator 205 may also use information associated with the blocking window. For example, the power coefficient generator 205 may use the time span of the blocking window, the ramp-up and / or ramp-down time, the slope of the ramp-up and / or ramp-down, the overlap of consecutive blocks, the overlap of two blocking windows, etc. In an example implementation, the power coefficient generator 205 may be configured to also generate a power coefficient based on a type (e.g., constant, pulsed, etc.) of the input audio signal A. n In an example implementation, the power coefficient generator 205 may be configured to further generate a power coefficient based on the input audio signal A n The power coefficient 155 is generated or changed by changing the time span of the block window. For example, the initial block window may have a time span of 20 ms, and if, for example, the input audio signal A n Including transient wide spectrum sounds, it can be switched to 2.5 ms. In switching the window length, the sum of the overall overlap of the encoder blocking window amplitude value multiplied by the decoder blocking window amplitude value should be one (1.0) when taking into account the contribution of consecutive windows.
[0039] Figure 3 A signal diagram including a blocking window according to an example implementation is shown. Figure 3 As shown, the signal diagram 300 may include multiple blocking windows. As an example, the signal diagram 300 includes a previous blocking window 305 and a current blocking window 310. The previous blocking window 305 and the current blocking window 310 may be defined by a windowing function. The windowing function may be based on a windowing function defined by a codec. In an example implementation, the windowing function may also be based on a power coefficient (e.g., a power coefficient of 155). The signal diagram 300 may be used for time windowing of an audio signal.
[0040] The signal diagram 300 may include multiple portions. For example, the signal diagram 300 may include constant portions 315, 325 and a cross-fade portion 320. The cross-fade portion 320 may include an increase (e.g., fade up) amplitude 330 of the current block window 310 and a simultaneous decrease (e.g., fade down) amplitude 335 of the previous block window 305. A cross-fade is a type of audio transition between two blocks. For example, the audio of a first block fades out while the audio of a second block fades in simultaneously.
[0041] During the crossfade, the audio from both blocks exists (e.g., during playback, both will be heard by the user). Crossfades can be implemented in time windowing. Using windowing / crossfades can allow seamless movement from one block to the next without perceptible clicks at block boundaries. For example, as shown in signal diagram 300, from time t1 to time t2, the amplitude of constant portion 315 is constant, so this generates a constant windowing of the audio signal from time t1 to time t2. In contrast, as shown in signal diagram 300, from time t2 to time t3, the amplitude 335 of the block window 305 decreases and the amplitude 330 of the block window 310 increases, so as to implement a crossfade (e.g., in crossfade portion 320) of the audio signal from time t2 to time t3. Then, as shown in signal graph 300, from time t3 to time t4, the amplitude of constant portion 325 is constant, which again generates a constant windowing of the audio signal from time t3 to time t4.
[0042] As mentioned above, conventional codecs use the same windowing function in the audio decoder as used in the audio encoder. However, in an example implementation, the windowing function used in the audio decoder may be different from the windowing function in the audio encoder. Therefore, the block window in the example audio encoder and the example audio decoder can modify the initial block window (e.g., the block window defined by the codec) to generate a modified block window. In an example implementation, the modified block window generated and used by the audio encoder may be different from the modified block window generated and used by the audio decoder. For example, the modified block window generated and used by the audio encoder can be a window function defined as follows, such as: A * Window * (B - Power Factor Parameter), And decode using the window function defined as follows, for example: C * Window * (D * Power Coefficient Parameter), where window is the codec windowing function, and A, B, C, and D are constants that are predetermined (eg, at run time or design time).
[0043] As mentioned above, the modified blocking window generated and used by the audio encoder can be different from the modified blocking window generated and used by the audio decoder. For example, in the windowing function of the audio encoder, A can be equal to one (1) and B can be equal to two (2), so that the modified blocking window to generate the modified blocking window for the audio encoder is (2-pf) * f(t), where pf represents the power coefficient and f(t) represents the initial blocking window. In addition, in the windowing function of the audio decoder, C can be equal to one (1) and D can be equal to one (1), so that the modified blocking window to generate the modified blocking window for the audio decoder is (pf) * f(t), where pf represents the power coefficient and f(t) represents the initial blocking window.
[0044] In an example implementation, the constant portion 315, 325 and the cross-fade portion 320 may be modified differently. For example, modifying the blocking window to generate a modified blocking window may include modifying the cross-fade portion 320 based on a power coefficient and keeping the constant portion 315, 325 unchanged, as defined by the codec, or modifying the blocking window to generate a modified blocking window may include modifying the constant portion 315, 325 based on a power coefficient and keeping the cross-fade portion 320 unchanged, as defined by the codec. For example, the increase amplitude 330 and / or the decrease amplitude 335 and / or the amplitude of the constant portion 315, 325 may be modified based on the power coefficient. In other words, there may be, for example, three (3) power coefficients.
[0045] In an example implementation, the sum of the multiplications at each sample of the initial time-domain audio signal when overlapping with consecutive instances of the modified blocking window is an amplitude equal to one (1). The sum of the multiplications of the modified blocking windows of the encoder and decoder at each sample of the initial time-domain audio signal when overlapping with consecutive instances of the modified blocking window is an amplitude equal to one (1). The product (e.g., multiplication) of the modified blocking window and the encoder or decoder blocking window at overlapping consecutive instances of each sample of the initial time-domain audio signal is equal to the amplitude of one (1). The product (e.g., multiplication) of the modified blocking window and the encoder or decoder blocking window at instances of the modified blocking window is equal to the amplitude of one (1).
[0046] Figure 4A A block diagram of an audio encoder according to an example implementation is shown. Figure 4A In the example of the present invention, the audio encoder system 400 can be at least one computing device and should be understood to represent almost any computing device configured to perform the methods described herein. Therefore, the audio encoder system 400 can be understood to include various standard components that can be used to implement the techniques described herein, or different versions or future versions thereof.
[0047] Figure 4A An audio encoder system 400 is shown according to at least one example implementation. Figure 4A As shown, the audio encoder system 400 includes at least one processor 405, at least one memory 410, a controller 420, and the audio encoder 105. The at least one processor 405, at least one memory 410, the controller 420, and the audio encoder 105 are communicatively coupled via a bus 415.
[0048] Therefore, it can be understood that at least one processor 405 can be used to execute instructions stored on at least one memory 410, so as to thereby implement various features and functions described herein, or additional or alternative features and functions. Of course, at least one processor 405 and at least one memory 410 can be used for various other purposes. In particular, at least one memory 410 can be understood to represent various types of memory and examples of related hardware and software that can be used to implement any of the modules described herein.
[0049] At least one processor 405 can be configured to execute computer instructions associated with the controller 420 and / or the audio encoder 105. The at least one processor 405 can be a shared resource. For example, the encoder system 400 can be an element of a larger system (e.g., a streaming server). Thus, the at least one processor 405 can be configured to execute computer instructions associated with other elements within the larger system (e.g., a streaming server that streams audio).
[0050] At least one memory 410 can be configured to store data and / or information associated with the encoder system 400. For example, the at least one memory 410 can be configured to store an audio codec. The controller 420 can be configured to generate various control signals and communicate the control signals to various blocks in the encoder system 400. The controller 420 can be configured to generate the control signals according to the techniques described above.
[0051] Figure 4B A block diagram of an audio decoder according to an example implementation is shown. Figure 4B In the example of , the audio decoder system 450 can be at least one computing device, and should be understood to represent substantially any computing device configured to perform the methods described herein. Thus, the audio decoder system 450 can be understood to include various standard components that can be used to implement the techniques described herein, or different versions or future versions thereof. Figure 4BAs shown, the audio decoder system 450 includes at least one processor 455, at least one memory 460, a controller 470, and the audio decoder 130. The at least one processor 455, at least one memory 460, the controller 470, and the audio decoder 130 are communicatively coupled via a bus 465.
[0052] At least one processor 455 can be used to execute instructions stored on at least one memory 460, so as to thereby implement various features and functions described herein, or additional or alternative features and functions. Of course, at least one processor 455 and at least one memory 460 can be used for various other purposes. In particular, at least one memory 460 can be understood as representing various types of memories and examples of related hardware and software that can be used to implement any of the modules described herein. According to an example embodiment, audio encoder system 400 and audio decoder system 450 can be included in the same larger system. In addition, at least one processor 405 and at least one processor 455 can be the same at least one processor, and at least one memory 410 and at least one memory 460 can be the same at least one memory. Further, controller 420 and controller 470 can be the same controller.
[0053] At least one processor 455 can be configured to execute computer instructions associated with the controller 470 and / or the audio decoder 130. The at least one processor 455 can be a shared resource. For example, the audio decoder system 450 can be an element of a larger system (e.g., a mobile device). Thus, the at least one processor 455 can be configured to execute computer instructions associated with other elements within the larger system (e.g., web browsing or wireless communication).
[0054] At least one memory 460 may be configured to store data and / or information associated with the audio decoder system 450. The controller 470 may be configured to generate various control signals and communicate the control signals to various blocks in the audio decoder system 450. The controller 470 may be configured to generate the control signals according to the techniques described above.
[0055] Figure 5 A method of generating a formatted data packet according to an example implementation is shown. Figure 5 As shown, in step S505, a first time-domain audio signal is received. For example, the input audio signal can be an analog (e.g., continuous, infinitely variable) or time-domain audio signal. For example, music or speech can be captured by a microphone as an analog audio signal.
[0056] In step S510, a blocking window is obtained. For example, an audio compression / decompression codec (e.g., opus, mp3, ambisonic, AAC, ASF, etc.) may include a windowing function corresponding to the blocking window. Therefore, the blocking window may be obtained from the codec (e.g., read from a memory).
[0057] In step S515, a power coefficient is generated. In an example implementation, the power coefficient may be generated based on the input audio signal. In an example implementation, the power coefficient may be generated based on an entropy associated with compressing the input audio signal. In an example implementation, the power coefficient may be generated based on the input audio signal and an entropy associated with compressing the input audio signal. In an example implementation, the power coefficient may also be generated based on a time span of the input audio signal. In an example implementation, the power coefficient may also be generated or changed based on a change in the time span of the input audio signal.
[0058] In step S520, the blocking window is modified based on the power coefficient. For example, the initial blocking window can be modified based on the power coefficient to generate a modified blocking window. For example, the amplitude of the windowing function associated with the blocking window can be modified based on the power coefficient.
[0059] In step S525, a second time domain audio signal is generated using the modified blocking window. For example, a blocked time domain audio signal may be generated using the modified blocking window. The input audio signal may be sampled in sequential time frames, each frame may include a portion of the input audio signal sampled within a sliding time window (sometimes referred to as time windowing). In other words, a second time domain audio signal may be generated based on the input audio signal as a block-based audio signal.
[0060] In step S530, the second time domain audio signal is transformed into a frequency domain audio signal. For example, the modified time domain audio signal may be transformed to generate a frequency domain audio signal. The transformation may include applying an analog-to-digital converter (ADC) to the second time domain audio signal or inputting the second time domain audio signal to the ADC. The ADC may use a Fourier transform (e.g., DCT, DFT, FFT).
[0061] In step S535, the frequency domain audio signal is compressed. For example, the frequency domain audio signal can be compressed to generate a compressed frequency domain audio signal. Compression can include reducing the number of bits representing the transformed frequency domain audio signal. Compression can include quantizing and entropy encoding the transformed frequency domain audio signal.
[0062] In step S540, a formatted file including the compressed frequency domain audio signal and the power coefficient is generated. For example, the formatted file can be formatted based on a codec. For example, the formatted file can be formatted into an audio file format such as opus, mp3, ambisonic, AAC, ASF, etc. The formatted file can include the compressed frequency domain audio signal and the power coefficient.
[0063] Figure 6 A method of generating an audio signal according to an example implementation is shown. Figure 6 As shown, in step S605, a formatted data packet including a compressed frequency domain audio signal and a power coefficient is received. For example, the formatted file can be formatted based on a codec. For example, the formatted file can be formatted into an audio file format such as opus, mp3, ambisonic, AAC, ASF, etc. The formatted file can include a compressed frequency domain audio signal and a power coefficient.
[0064] In step S610, the compressed frequency domain audio signal and power coefficient are extracted from the formatted data packet. For example, the formatted file can be stored in a memory of the receiving device. The frequency domain audio signal and power coefficient can be read from the memory location.
[0065] In step S615, the frequency domain audio signal is decompressed. For example, the reverse operation of the compression performed by the encoder may be performed. In other words, the compressed frequency domain audio signal may be subjected to inverse entropy and inverse quantization.
[0066] In step S620, the frequency domain audio signal is transformed into a first time domain audio signal. For example, the frequency domain audio signal can be transformed into a blocked time domain audio signal. The transformation can be, for example, IDCT, IDFT, IFFT, etc.
[0067] In step S625, a blocking window is obtained. For example, an audio compression / decompression codec (e.g., opus, mp3, ambisonic, AAC, ASF, etc.) may include a windowing function corresponding to the blocking window. Therefore, the blocking window may be obtained from the codec (e.g., read from a memory).
[0068] In step S630, the blocking window is modified based on the power coefficient. For example, the initial blocking window can be modified based on the power coefficient to generate a modified blocking window. For example, the amplitude of the windowing function associated with the blocking window can be modified based on the power coefficient.
[0069] In step S635, a second time-domain audio signal is generated using a modified blocking window. For example, a reconstructed time-domain audio signal can be generated based on a blocked time-domain audio signal using a modified blocking window. The second time-domain audio signal can be a combination of adjacent blocks of the first time-domain audio signal to generate a continuous output audio signal. Adjacent blocks can be overlapped and added. In other words, blocks associated with the first time-domain audio signal can overlap and be cascaded together in time. The overlapping cascaded audio blocks can then be windowed. Overlapping and windowing the audio blocks can generate a smooth transition (e.g., a transition with minimal noise) between the audio blocks. Windowing can use a windowing function as defined by an audio codec. The blocking window can generate a second time-domain audio signal as a reconstructed audio signal based on the overlapped and windowed audio blocks.
[0070] An example implementation may include a non-transitory computer-readable storage medium including instructions stored thereon, which when executed by at least one processor are configured to cause a computing system to perform any of the methods described above. An example implementation may include a device including means for performing any of the methods described above. An example implementation may include a device including at least one processor and at least one memory, the at least one memory including computer program code, the at least one memory and the computer program code being configured to, together with the at least one processor, cause the device to perform at least any of the methods described above.
[0071] Figure 7An example of a computer device 700 and a mobile computer device 750 that can be used with the techniques described herein (e.g., to implement the audio encoder 105 and the audio decoder 130) is shown. The computing device 700 includes a processor 702, a memory 704, a storage device 706, a high-speed interface 708 connected to the memory 704 and a high-speed expansion port 710, and a low-speed interface 712 connected to a low-speed bus 714 and the storage device 706. Each of the components 702, 704, 706, 708, 710, and 712 is interconnected using various buses and can be mounted on a common motherboard or otherwise as appropriate. The processor 702 can process instructions for execution within the computing device 700, including instructions stored in the memory 704 or on the storage device 706, to display graphical information of a GUI on an external input / output device (such as a display 716 coupled to the high-speed interface 708). In other implementations, multiple processors and / or multiple buses can be used together with multiple memories and multiple memory types as appropriate. Furthermore, multiple computing devices 700 may be connected, with each device providing portions of the necessary operations (eg, as a server farm, a group of blade servers, or a multi-processor system).
[0072] The memory 704 stores information within the computing device 700. In one implementation, the memory 704 is one or more volatile memory units. In another implementation, the memory 704 is one or more non-volatile memory units. The memory 704 may also be another form of computer-readable medium, such as a magnetic disk or optical disk.
[0073] The storage device 706 can provide mass storage for the computing device 700. In one implementation, the storage device 706 can be or include a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a magnetic tape device, a flash memory or another similar solid-state memory device, or an array of devices (including devices in a storage area network or other configuration). A computer program product can be tangibly embodied in an information carrier. The computer program product can also include instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable medium or a machine-readable medium, such as the memory 704, the storage device 706, or a memory on the processor 702.
[0074] The high-speed controller 708 manages bandwidth-intensive operations of the computing device 700, while the low-speed controller 712 manages less bandwidth-intensive operations. This allocation of functions is merely an example. In one implementation, the high-speed controller 708 is coupled to the memory 704, the display 716 (e.g., through a graphics processor or accelerator), and a high-speed expansion port 710 that can accept various expansion cards (not shown). In an implementation, the low-speed controller 712 is coupled to the storage device 706 and the low-speed expansion port 714. The low-speed expansion port, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a networking device (such as a switch or router), for example, through a network adapter.
[0075] The computing device 700 can be implemented in a variety of different forms, as shown. For example, it can be implemented as a standard server 720, or multiple times in a group of such servers. It can also be implemented as part of a rack server system 724. In addition, it can also be implemented in a personal computer (such as a laptop computer 722). Alternatively, components from the computing device 700 can be combined with other components in a mobile device (not shown) (such as device 750). Each of such devices can contain one or more of the computing devices 700, 750, and the entire system can be composed of multiple computing devices 700, 750 that communicate with each other.
[0076] The computing device 750 includes a processor 752, a memory 764, an input / output device (such as a display 754), a communication interface 766, and a transceiver 768, among other components. The device 750 may also be provided with a storage device, such as a micro drive or other device, to provide additional storage. Each of the components 750, 752, 764, 754, 766, and 768 are interconnected using various buses, and several of the components may be mounted on a common motherboard or otherwise as appropriate.
[0077] Processor 752 can execute instructions within computing device 750, including instructions stored in memory 764. The processor can be implemented as a chipset including separate multiple analog and digital processor chips. The processor can provide, for example, coordination of other components of device 750, such as control of a user interface, applications executed by device 750, and wireless communications performed by device 750.
[0078] The processor 752 can communicate with the user through a control interface 758 and a display interface 756 coupled to the display 754. The display 754 can be, for example, a TFT LCD (thin film transistor liquid crystal display) and an LED (light emitting diode) or OLED (organic light emitting diode) display or other appropriate display technology. The display interface 756 may include an appropriate circuit system for driving the display 754 to present graphical information and other information to the user. The control interface 758 can receive commands from the user and convert them for submission to the processor 752. In addition, an external interface 762 in communication with the processor 752 can be provided to enable near-field communication of the device 750 with other devices. In some implementations, the external interface 762 can provide, for example, wired communication, or in other implementations, wireless communication, and multiple interfaces can also be used.
[0079] The memory 764 stores information within the computing device 750. The memory 764 may be implemented as one or more of one or more computer-readable media, one or more volatile memory units, or one or more non-volatile memory units. An expansion memory 774 may also be provided and connected to the device 750 via an expansion interface 772, which may include, for example, a SIMM (single in-line memory module) card interface. Such an expansion memory 774 may provide additional storage space for the device 750, or may also store applications or other information of the device 750. Specifically, the expansion memory 774 may include instructions for executing or supplementing the processes described above, and may also include security information. Thus, for example, the expansion memory 774 may be provided as a security module for the device 750, and may be programmed with instructions that permit secure use of the device 750. In addition, a security application may be provided via a SIMM card together with additional information, such as placing identification information on a SIMM card in an unbreakable manner.
[0080] The memory may include, for example, flash memory and / or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable medium or machine-readable medium, such as memory 764, expansion memory 774, or memory on processor 752, which may be received, for example, via transceiver 768 or external interface 762.
[0081] Device 750 can communicate wirelessly via communication interface 766, which may include digital signal processing circuitry when necessary. Communication interface 766 can provide communication under various modes or protocols, such as GSM voice calls, SMS, EMS or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 or GPRS and other modes or protocols. Such communication can occur, for example, via radio frequency transceiver 768. In addition, short-range communication can occur, such as using Bluetooth, Wi-Fi or another such transceiver (not shown). In addition, GPS (global positioning system) receiver module 770 can provide additional navigation-related and location-related wireless data to device 750, which can be used as appropriate by applications running on device 750.
[0082] Device 750 may also communicate audibly using audio codec 760, which may receive verbal information from a user and convert it into usable digital information. Audio codec 760 may also generate audible sounds for the user, such as through a speaker (e.g., in a handset of device 750). Such sounds may include sounds from voice phone calls, may include recorded sounds (e.g., voice messages, music files, etc.), and may also include sounds generated by applications operating on device 750.
[0083] The computing device 750 can be implemented in many different forms, as shown in the figure. For example, it can be implemented as a cellular phone 780. It can also be implemented as part of a smart phone 782, a personal digital assistant or other similar mobile device.
[0084] Various implementations of the systems and techniques described herein can be implemented in digital electronic circuit systems, integrated circuit systems, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations may include implementations in one or more computer programs that can be executed and / or interpreted on a programmable system that includes at least one programmable processor, which may be special-purpose or general-purpose, coupled to receive data and instructions from and transmit data and instructions to a storage system, at least one input device, and at least one output device.
[0085] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages and / or in assembly / machine languages. As used herein, the terms "machine-readable medium," "computer-readable medium," refer to any computer program product, apparatus, and / or device (e.g., a disk, optical disk, memory, programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.
[0086] To provide interaction with a user, the systems and techniques described herein can be implemented on a computer having a display device (LED (light emitting diode) or OLED (organic LED) or LCD (liquid crystal display) monitor / screen) for displaying information to the user, and a keyboard and pointing device (e.g., mouse or trackball) through which the user can provide input to the computer. Other kinds of devices can also be used to provide interaction with the user; for example, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including sound, voice, or tactile input.
[0087] The systems and techniques described herein may be implemented in a computing system that includes a back-end component (e.g., as a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer with a graphical user interface or a web browser through which a user can interact with an implementation of the systems and techniques described herein), or any combination of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), and the Internet.
[0088] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The relationship of client and server arises through computer programs running on the respective computers and having a client-server relationship to each other.
[0089] In some implementations, the computing device depicted in the figure may include a sensor that interfaces with the AR head mounted device / HMD device 790 to generate an augmented environment for viewing inserted content in the physical space. For example, one or more sensors included on the computing device 750 depicted in the figure or other computing devices may provide input to the AR head mounted device 790, or generally speaking, to the AR space. Sensors may include, but are not limited to, touch screens, accelerometers, gyroscopes, pressure sensors, biometric sensors, temperature sensors, humidity sensors, and ambient light sensors. The computing device 750 may use sensors to determine the absolute position and / or detected rotation of the computing device in the AR space, which may then be used as input to the AR space. For example, the computing device 750 may be incorporated into the AR space as a virtual object (such as a controller, a laser pointer, a keyboard, a weapon, etc.). Positioning of the computing device / virtual object by the user when incorporated into the AR space may allow the user to position the computing device so as to view the virtual object in some way in the AR space. For example, if the virtual object represents a laser pointer, the user can manipulate the computing device as if it were an actual laser pointer. The user can move the computing device left to right, up and down, in circles, etc., and use the device in a manner similar to using a laser pointer. In some implementations, the user can use the virtual laser pointer to aim at a target location.
[0090] In some implementations, one or more input devices included on or connected to the computing device 750 can be used as input to the AR space. The input device can include, but is not limited to, a touch screen, a keyboard, one or more buttons, a trackpad, a touchpad, a pointing device, a mouse, a trackball, a joystick, a camera, a microphone, headphones or earbuds with input functionality, a game controller, or other connectable input device. When the computing device 750 is incorporated into the AR space, the user interacting with the input device included on the computing device can cause specific actions to occur in the AR space.
[0091] In some implementations, the touch screen of the computing device 750 can be rendered as a touch pad in the AR space. The user can interact with the touch screen of the computing device 750. For example, in the AR head mounted device 790, the interaction is rendered as movement on the rendered touch pad in the AR space. The rendered movement can control the virtual object in the AR space.
[0092] In some implementations, one or more output devices included on the computing device 750 may provide output and / or feedback to a user of the AR head mounted device 790 in the AR space. The output and feedback may be visual, tactile, or auditory. The output and / or feedback may include, but are not limited to, vibration, turning on and off or flashing and / or flashing one or more lights or strobe lights, sounding an alarm, playing a chime, playing a song, and playing an audio file. The output device may include, but is not limited to, a vibration motor, a vibration coil, a piezoelectric device, an electrostatic device, a light emitting diode (LED), a flash, and a speaker.
[0093] In some implementations, computing device 750 may appear as another object in a computer-generated 3D environment. User interactions with computing device 750 (e.g., rotating, shaking, touching a touch screen, swiping a finger across a touch screen) may be interpreted as interactions with objects in the AR space. In the example of a laser pointer in the AR space, computing device 750 appears as a virtual laser pointer in a computer-generated 3D environment. As the user manipulates computing device 750, the user in the AR space sees the movement of the laser pointer. The user receives feedback from the interaction with computing device 750 in the AR environment on computing device 750 or AR head-mounted device 790. User interactions with the computing device can be converted into interactions with a user interface generated for a controllable device in the AR environment.
[0094] In some implementations, computing device 750 may include a touch screen. For example, a user may interact with the touch screen to interact with a user interface of a controllable device. For example, the touch screen may include user interface elements, such as sliders, that may control characteristics of the controllable device.
[0095] Computing device 700 is intended to represent various forms of digital computers and devices, including but not limited to laptop computers, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. Computing device 750 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions are intended to be examples only and are not intended to limit implementations of the inventions described and / or claimed in this document.
[0096] A number of embodiments have been described, however, it will be appreciated that various modifications can be made without departing from the spirit and scope of the specification.
[0097] In addition, the logic flow depicted in the figure does not require the particular order or sequential order shown to achieve the desired results. In addition, other steps can be provided, or steps can be deleted from the described process, and other components can be added to the described system or removed from the described system. Therefore, other embodiments are within the scope of the appended claims.
[0098] In addition to the above description, controls may be provided to the user, which allow the user to make a choice about whether and when the system, program, or feature described herein can enable the collection of user information (e.g., information about the user's social network, social actions or activities, occupation, user's preferences, or the user's current location) and whether to send content or communications from the server to the user. In addition, before storing or using certain data, it may be processed in one or more ways to remove personally identifiable information. For example, the user's identity may be processed so that the user's personally identifiable information cannot be determined, or the user's geographic location for which location information is obtained may be generalized (such as to a city, zip code, or state level) so that the user's specific location cannot be determined. Therefore, the user can control what information is collected about the user, how the information is used, and what information is provided to the user.
[0099] Although certain features of the described implementations have been shown as described herein, those skilled in the art will now expect many modifications, substitutions, variations and equivalents. Therefore, it should be understood that the appended claims are intended to cover all these modifications and variations that fall within the scope of the implementations. It should be understood that they are presented only in an exemplary and non-restrictive manner, and various changes in form and detail may be made. In addition to mutually exclusive combinations, any part of the devices and / or methods described herein may be combined in any combination. The implementations described herein may include various combinations and / or sub-combinations of the functions, components and / or features of the different implementations described.
[0100] Although the example embodiments may include various modifications and alternative forms, their embodiments are shown by way of example in the drawings and will be described in detail herein. However, it should be understood that it is not intended to limit the example embodiments to the specific forms disclosed, but on the contrary, the example embodiments will cover all modifications, equivalents, and alternatives that fall within the scope of the claims. The same numbers refer to the same elements in the description of the drawings.
[0101] Some of the above example embodiments are described as processes or methods depicted as flow charts. Although the flow charts describe the operations as sequential processes, many operations can be performed in parallel, concurrently, or simultaneously. In addition, the order of the operations can be rearranged. Processes can terminate when their operations are completed, but can also have additional steps not included in the figure. A process can correspond to a method, function, procedure, subroutine, subprogram, etc.
[0102] The methods discussed above (some of which are illustrated by flow charts) may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented by software, firmware, middleware, or microcode, the program code or code segments for performing the necessary tasks may be stored in a machine-readable medium or a computer-readable medium (such as a storage medium). A processor may perform the necessary tasks.
[0103] The specific structural and functional details disclosed herein are merely representative for describing example embodiments. Example embodiments may, however, be embodied in many alternative forms and should not be construed as limited to only the embodiments set forth herein.
[0104] It should be understood that although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another element. For example, without departing from the scope of the exemplary embodiment, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element. As used herein, the terms and / or include any and all combinations of one or more of the associated listed items.
[0105] It should be understood that when an element is referred to as being connected or coupled to another element, the element may be directly connected or coupled to the other element, or there may be intervening elements. Conversely, when an element is referred to as being directly connected or coupled to another element, there are no intervening elements. Other words used to describe the relationship between elements should be interpreted in a similar manner (e.g., between versus directly between, adjacent versus directly adjacent, etc.).
[0106] The terms used herein are only used for the purpose of describing specific embodiments and are not intended to limit the exemplary embodiments. As used herein, unless the context clearly indicates otherwise, the singular forms one, a, and described are also intended to include the plural forms. It should also be understood that the terms include, include, include, and / or include when used herein specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0107] It should also be noted that in some alternative implementations, the functions / behaviors noted may not occur in the order noted in the figures. For example, two figures shown in succession may actually be executed simultaneously or may sometimes be executed in the reverse order, depending on the functionality / behaviors involved.
[0108] Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the example embodiments belong. It should also be understood that terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with their meaning in the context of the relevant art, and should not be interpreted in an idealized or overly formal sense unless explicitly defined as such herein.
[0109] Portions of the above example embodiments and corresponding detailed descriptions are presented in terms of software or algorithms and symbolic representations of operations on data bits within a computer memory. These descriptions and representations are descriptions and representations used by those of ordinary skill in the art to effectively convey the substance of their work to other persons of ordinary skill in the art. As the term is used herein, and as generally used, an algorithm is considered to be a self-consistent sequence of steps that produces a desired result. A step is a step that requires physical manipulation of physical quantities. Although not necessary, these quantities are typically in the form of optical, electrical, or magnetic signals that can be stored, transferred, combined, compared, and otherwise manipulated. It has been demonstrated that, primarily for common usage reasons, these signals can sometimes be appropriately referred to as bits, values, elements, symbols, characters, terms, numbers, etc.
[0110] In the above exemplary embodiments, references to symbolic representations of actions and operations that can be implemented as program modules or functional processes (e.g., in the form of flowcharts) include routines, programs, objects, components, data structures, etc., which perform specific tasks or implement specific abstract data types and can be described and / or implemented using existing hardware at existing structural elements. Such existing hardware may include one or more central processing units (CPUs), digital signal processors (DSPs), application specific integrated circuits, field programmable gate arrays (FPGAs), computers, etc.
[0111] It should be borne in mind, however, that all of these and similar terms will be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless otherwise specifically noted or as is apparent from the discussion, terms such as processing or computing or calculating or determining display refer to the actions and processes of a computer system or similar electronic computing device that manipulates data represented as physical electronic quantities within the computer system's registers and memories and transforms that data into other data similarly represented as physical quantities within the computer system's memories or registers or other such information storage, transmission or display devices.
[0112] It should also be noted that the software-implemented aspects of the example embodiments are typically encoded on some form of non-transitory program storage medium or implemented on some type of transmission medium. The program storage medium may be magnetic (e.g., a floppy disk or hard disk) or optical (e.g., a compact disk read-only memory or CD ROM), and may be read-only or random. Similarly, the transmission medium may be twisted pair, coaxial cable, optical fiber, or some other suitable transmission medium known in the art. The example embodiments are not limited by these aspects of any given implementation.
[0113] Finally, it should also be noted that although the appended claims set forth specific combinations of features described herein, the scope of the present disclosure is not limited to the specific combinations claimed below, but extends to cover any combination of features or embodiments disclosed herein, regardless of whether the specific combination is specifically listed in the appended claims.
Claims
1. A method comprising: receiving an initial time-domain audio signal; modifying an initial blocking window based on the power coefficient to generate a modified blocking window; generating a blocked time-domain audio signal using the modified blocking window; transforming the blocked time-domain audio signal to generate a frequency-domain audio signal; as well as The frequency domain audio signal is compressed to generate a compressed frequency domain audio signal.
2. The method of claim 1, further comprising: A data packet is generated including the compressed frequency-domain audio signal and the power coefficient.
3. The method of claim 1 or claim 2, further comprising: The compressed frequency-domain audio signal and the power coefficient are stored.
4. The method according to any one of claims 1 to 3, wherein The modified blocking window is of the encoder, The decoder blocking window is different from the modified blocking window, and The product of the modified blocking window and the decoder blocking window at the instance of the modified blocking window is equal to a magnitude of one (1).
5. The method of any one of claims 1 to 4, wherein the modification made to the initial blocking window to generate the modified blocking window is (2-pf)*f(t), where pf represents the power coefficient and f(t) represents the initial blocking window.
6. The method according to any one of claims 1 to 5, wherein The initial blocking window includes a first part, a second part and a third part, and Modifying the initial blocking window to generate the modified blocking window includes modifying the first portion based on the power coefficient and modifying the third portion based on the power coefficient.
7. The method of any one of claims 1 to 6, wherein the power coefficient is generated based on the initial time-domain audio signal.
8. The method of any one of claims 1 to 7, wherein the power coefficient is generated based on entropy associated with the compression of the frequency domain audio signal.
9. The method according to any one of claims 1 to 8, wherein The power coefficient is generated based on the initial time-domain audio signal, and The power coefficient is modified based on entropy associated with the compression of the frequency-domain audio signal.
10. The method according to any one of claims 1 to 9, wherein the initial time-domain audio signal is associated with a first time span, the method further comprising: detecting a change in the initial time-domain audio signal from the first time span to a second time span; as well as The power factor is varied based on the second time span.
11. The method of any one of claims 1 to 10, wherein the blocked time-domain audio signal is a portion of the original time-domain audio signal over a time span equal to a time span associated with the modified blocking window.
12. The method of any one of claims 1 to 11, wherein the frequency domain audio signal comprises a frequency content representation of the blocked time domain audio signal.
13. A method comprising: receiving a formatted data packet including a compressed frequency domain audio signal and a power coefficient; Decompressing the compressed frequency-domain audio signal; transforming the decompressed frequency-domain audio signal into a blocked time-domain audio signal; modifying the initial blocking window based on the power coefficient to generate a modified blocking window; and A reconstructed time domain audio signal is generated based on the blocked time domain audio signal using the modified blocking window.
14. The method of claim 13, further comprising: The reconstructed time-domain audio signal is played back.
15. A method as claimed in claim 13 or claim 14, wherein The modified blocking window is of the decoder, The encoder blocking window is different than the modified blocking window, and The product of the modified blocking window and the encoder blocking window at the instance of the modified blocking window is equal to a magnitude of one (1).
16. The method of any one of claims 13 to 15, wherein The initial blocking window includes a first part, a second part and a third part, and Modifying the initial blocking window to generate the modified blocking window includes modifying the first portion based on the power coefficient and modifying the third portion based on the power coefficient.
17. The method of any one of claims 13 to 16, wherein the power coefficient is generated based on an input audio signal corresponding to the reconstructed time-domain audio signal.
18. The method of any one of claims 13 to 17, wherein the power coefficient is generated based on entropy associated with the compression of the frequency domain audio signal.
19. The method of any one of claims 13 to 18, wherein The power coefficient is generated based on an input audio signal corresponding to the reconstructed time-domain audio signal, and The power coefficient is modified based on entropy associated with the compression of the frequency-domain audio signal.
20. A non-transitory computer-readable storage medium comprising instructions stored thereon, which when executed by at least one processor are configured to cause a computing system to: receiving an initial time-domain audio signal; modifying an initial blocking window based on the power coefficient to generate a modified blocking window; generating a blocked time-domain audio signal using the modified blocking window; transforming the blocked time-domain audio signal to generate a frequency-domain audio signal; as well as The frequency domain audio signal is compressed to generate a compressed frequency domain audio signal.
21. The non-transitory computer-readable storage medium of claim 20, the instructions further comprising: A data packet is generated including the compressed frequency-domain audio signal and the power coefficient.
22. The non-transitory computer-readable storage medium of claim 20 or claim 21, further comprising: The compressed frequency-domain audio signal and the power coefficient are stored.
23. The non-transitory computer-readable storage medium of any one of claims 20 to 22, wherein The modified blocking window is of the encoder, The decoder blocking window is different from the modified blocking window, and The product of the modified blocking window and the decoder blocking window at the instance of the modified blocking window is equal to a magnitude of one (1).
24. The non-transitory computer-readable storage medium of any one of claims 20 to 23, wherein the modification made to the initial blocking window to generate the modified blocking window is (2-pf)*f(t), where pf represents the power coefficient and f(t) represents the initial blocking window.
25. The non-transitory computer-readable storage medium of any one of claims 20 to 24, wherein The initial blocking window includes a first part, a second part and a third part, and Modifying the initial blocking window to generate the modified blocking window includes modifying the first portion based on the power coefficient and modifying the third portion based on the power coefficient.
26. The non-transitory computer-readable storage medium of any one of claims 20 to 25, wherein the power coefficient is generated based on the initial time-domain audio signal.
27. The non-transitory computer-readable storage medium of any one of claims 20 to 26, wherein the power coefficient is generated based on entropy associated with the compression of the frequency-domain audio signal.
28. The non-transitory computer-readable storage medium of any one of claims 20 to 27, wherein The power coefficient is generated based on the initial time-domain audio signal, and The power coefficient is modified based on entropy associated with the compression of the frequency-domain audio signal.
29. The non-transitory computer-readable storage medium of any one of claims 20 to 28, wherein the initial time-domain audio signal is associated with a first time span, the instructions further comprising: detecting a change in the initial time-domain audio signal from the first time span to a second time span; as well as The power factor is varied based on the second time span.
30. The non-transitory computer-readable storage medium of any one of claims 20 to 29, wherein the blocked time-domain audio signal is a portion of the initial time-domain audio signal over a time span equal to a time span associated with the modified blocking window.
31. The non-transitory computer-readable storage medium of any one of claims 20 to 30, wherein the frequency-domain audio signal comprises a frequency content representation of the blocked time-domain audio signal.
32. A non-transitory computer-readable storage medium comprising instructions stored thereon, which when executed by at least one processor are configured to cause a computing system to: receiving a formatted data packet including a compressed frequency domain audio signal and a power coefficient; Decompressing the compressed frequency-domain audio signal; transforming the decompressed frequency-domain audio signal into a blocked time-domain audio signal; modifying the initial blocking window based on the power coefficient to generate a modified blocking window; and A reconstructed time domain audio signal is generated based on the blocked time domain audio signal using the modified blocking window.
33. The non-transitory computer-readable storage medium of claim 32, further comprising: The reconstructed time-domain audio signal is played back.
34. The non-transitory computer-readable storage medium of claim 32 or claim 33, wherein The modified blocking window is associated with a decoder, The encoder blocking window is different than the modified blocking window, and The product of the modified blocking window and the encoder blocking window at the instance of the modified blocking window is equal to a magnitude of one (1).
35. The non-transitory computer readable storage medium of any one of claims 32 to 34, wherein The initial blocking window includes a first part, a second part and a third part, and Modifying the initial blocking window to generate the modified blocking window includes modifying the first portion based on the power coefficient and modifying the third portion based on the power coefficient.
36. The non-transitory computer-readable storage medium of any one of claims 32 to 35, wherein the power coefficient is generated based on an input audio signal corresponding to the reconstructed time-domain audio signal.
37. The non-transitory computer-readable storage medium of any one of claims 32 to 36, wherein the power coefficient is generated based on entropy associated with the compression of the frequency-domain audio signal.
38. The non-transitory computer-readable storage medium of any one of claims 32 to 37, wherein The power coefficient is generated based on an input audio signal corresponding to the reconstructed time-domain audio signal, and The power coefficient is modified based on entropy associated with the compression of the frequency-domain audio signal.
