Determining spatial impulse response by acoustic scrambling
By rearranging the input segments of the frequency scan signal, an output signal is generated that is more suitable for human listeners, which solves the interference problem of frequency scan signals on humans in the prior art, and realizes a lower interference room impulse response measurement.
Patent Information
- Application Number
- CN202410994197.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-07-31
- Filing Date
- 2024-07-24
- Publication Date
- 2025-02-14
AI Technical Summary
The prior art uses audible frequency scan signals that are disturbing or stimulating to a human listener when measuring room impulse responses and are difficult to reduce interference.
By generating a frequency sweep signal with a monotonically increasing frequency, dividing it into N input segments, and rearranging these input segments using an encoding key with a sequence of N discontinuous numbers, an output signal is generated so that the speaker can be in the audio Audio tones are generated in the space.
With this method, the room impulse response can be determined using a test audio signal that is less disturbing to a human listener, and the test audio signal is more pleasant and can be mixed with other sounds to reduce interference.
Smart Images

Figure CN119450293A_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present disclosure relate generally to audio processing systems and, more particularly, to techniques for determining spatial impulse responses using acoustic scrambling.
[0002] Related technical description
[0003] Audio systems often use various techniques to improve the audio quality and realism of these audio systems as experienced by listeners. One such technique involves measuring how sound waves are affected by a specific acoustic space (such as a room, a concert hall, a vehicle passenger compartment, etc.). These techniques involve calculating a room impulse response (RIR), which characterizes how sound waves from a source position are distorted due to reflections of sound waves from surfaces in an acoustic space. RIR is the time-domain acoustic relationship between a sound source and a receiver in a given acoustic space, and indicates the intensity of sound waves received by a microphone over time. Audio systems use RIR to improve audio quality by determining the proper location of a speaker, eliminating echoes or other sounds that degrade audio quality, and the like.
[0004] The audio system can measure the RIR of the acoustic space during the system calibration phase. For example, the RIR of the acoustic space is measured by using a speaker to generate a stimulus sound (e.g., a sine sweep or other frequency sweep) and using a microphone to capture the resulting sound waves emitted and reflected by the acoustic space. The sine sweep can be an exponential sine sweep (ESS), in which the amplitude of the generated sound waves varies according to a sine wave that gradually increases the frequency over a certain time period. The frequency generated in the sine sweep can vary from a low frequency (such as 20 Hz) to a high frequency (such as 20 kHz). This example range corresponds to the range of frequencies that humans can hear. Sound waves travel in multiple directions, and each sound wave hits one or more surfaces, such as walls, furniture, people, and other objects in the acoustic space. More typically, when a sound wave traveling in a particular direction hits an object, a portion of the sound wave is absorbed while a portion of the sound wave is reflected. The reflected portion of the sound wave travels through the acoustic space in a direction different from the original sound wave direction. The reflected portion may strike another object where, again, a portion of the sound wave is absorbed while a portion of the sound wave is reflected. This process continues until the acoustic energy of the sound wave strikes an object and is completely absorbed, and little or no portion of the sound wave is reflected. The RIR represents the total effect of the absorption and reflection of all the sound waves emanating from the speaker. A microphone may capture the reflected sound waves at a specific location in the acoustic space, and the captured sound waves may be used to determine the RIR for the specific location.
[0005] One disadvantage of the above-described method for generating RIRs is that the sound emitted by the speaker when performing the frequency sweep is audibly perceptible to humans and may be disruptive or irritating to a human listener who hears the frequency sweep. The audible frequency sweep is generally perceived as a harsh sound, similar to the sirens of an ambulance or other emergency vehicle, which can create discomfort in the human auditory system. The audible frequency sweep may also be disruptive or disturbing to any human listener in the vicinity of the speaker generating the frequency sweep sound. An audible volume level is generally used at the transmitting speaker that is large enough to enable the microphone to detect the frequency sweep sound, so reducing the volume level is not a feasible way to eliminate the audible frequency sweep.
[0006] As the foregoing shows, improved techniques for determining a room impulse response using audible frequency sweeps would be useful. Summary of the invention
[0007] Various embodiments of the present disclosure describe a computer-implemented method for generating a frequency sweep signal. The method includes: generating a frequency sweep signal having a monotonically increasing frequency. The method also includes: dividing the frequency sweep signal into N input segments, each of the N input segments representing a different frequency range. The method also includes: generating a coding key having a sequence of N non-contiguous numbers, wherein each number in the sequence appears once. The method also includes: generating an output signal by selecting each of the N input segments in an order based on the sequence of N non-contiguous numbers in the coding key. The method also includes: causing a speaker to produce an audio tone in an audio space based on the output signal.
[0008] Other embodiments include, but are not limited to, systems implementing one or more aspects of the disclosed technology, and one or more computer-readable media including instructions for performing one or more aspects of the disclosed technology.
[0009] At least one technical advantage of the disclosed techniques over the prior art is that, using the disclosed techniques, a room impulse response can be determined using a test audio signal that is less disturbing to a human listener than the test audio signal of the prior art. The test audio signal of the disclosed techniques is also more pleasing to the ear of a human listener than the test audio signal of the prior art. The test audio signal of the disclosed techniques can also be mixed with other sounds, such as music, to further reduce the disturbing nature of the test audio signal. Further, the disclosed techniques improve the distance range over which an accurate wall distance estimate is obtained compared to calculating the wall distance estimate without preserving the reverberation tail. These technical advantages represent one or more technical improvements over the prior art methods. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] In order to be able to understand in detail the manner in which the features of one or more embodiments set forth above are described, a more particular description of one or more embodiments briefly outlined above may be provided by reference to certain specific embodiments, some of which are illustrated in the accompanying drawings. It should be noted, however, that the drawings illustrate only typical embodiments and are therefore not to be considered as limiting the scope in any way, as the scope of the present disclosure also includes other embodiments.
[0011] Figure 1 A computing system configured to implement one or more aspects of various embodiments is shown;
[0012] Figure 2 A computing system for generating a room impulse response using a modified frequency swept signal according to various embodiments is shown;
[0013] Figure 3 According to various implementation schemes Figure 1 A block diagram of a scanning signal encoder module;
[0014] Figure 4 According to various implementation schemes Figure 1 A block diagram of a scanning signal decoder module;
[0015] Figure 5A shows a frequency swept signal divided into input segments according to various embodiments;
[0016] Figure 5B shows an output signal including a sequence of rearranged input segments according to various embodiments;
[0017] Figure 5C Waveform diagrams showing sequences of rearranged input segments according to various embodiments;
[0018] Figure 5D Waveform diagrams showing a sequence of rearranged input segments with effects according to various embodiments;
[0019] Figure 5E shows a spectrogram view of a frequency swept signal divided into input segments according to various embodiments;
[0020] Fig. 5F shows a spectrogram view of an output signal including rearranged input segments according to various embodiments;
[0021] Figure 5G shows a spectrogram view of a decoded signal including received segments in a decoded order determined based on an encoding key according to various embodiments;
[0022] Figure 5Hshows a spectrogram view of filtered segments generated from captured sound data using bandpass filtering according to various embodiments;
[0023] Fig.5I shows a spectrogram view of a decoded signal including filtered segments in a decoded order determined based on an encoding key according to various embodiments;
[0024] Figure 6 is a flow chart of method steps for generating a modified frequency sweep signal having segments in an order determined based on an encoding key according to various embodiments; and
[0025] Figure 7 is a flow chart of method steps for decoding a modified frequency swept signal and determining a spatial impulse response based on the decoded signal according to various embodiments. DETAILED DESCRIPTION
[0026] In the following description, numerous specific details are set forth to provide a more thorough understanding of certain specific embodiments. However, it is apparent to one skilled in the art that other embodiments may be practiced without one or more of these specific details or with additional specific details.
[0027] Figure 1 A computing device 100 configured to implement one or more aspects of various embodiments is shown. As shown, computing device 100 includes, but is not limited to, processor 102, storage device 104, input / output (I / O) device interface 106, network interface 108, interconnect 110, and system memory 112.
[0028] The processor 102 retrieves and executes programming instructions stored in the system memory 112. Similarly, the processor 102 stores and retrieves application data residing in the system memory 112. The interconnect 110 facilitates transmission between the processor 102, the I / O device interface 106, the storage device 104, the network interface 108 and the system memory 112, such as the transmission of programming instructions and application data. The I / O device interface 106 is configured to receive input data from the user I / O device 122. Examples of the user I / O device 122 may include one or more buttons, keyboards, mice or other pointing devices, etc. The I / O device interface 106 may also include an audio output unit configured to generate an electrical audio output signal, and the user I / O device 122 may also include a speaker configured to generate an acoustic output in response to the electrical audio output signal. Another example of the user I / O device 122 is a display device, which generally represents any technically feasible device for generating an image for display. For example, the display device may be a liquid crystal display (LCD) display, an organic light emitting diode (OLED) display, or a digital light processing (DLP) display. The display device may be a TV including a broadcast or cable tuner for receiving digital or analog television signals. The display device may be included in a head mounted display (HMD) assembly such as a VR / AR head mounted device or a head up display (HUD) assembly. In addition, the display device may project the image onto one or more surfaces, such as a wall, a projection screen, or a windshield of a vehicle. Additionally or alternatively, the display device may project the image directly onto ( For example , projected onto the user's eyes via the retina.
[0029] Processor 102 is included to represent a single central processing unit (CPU), multiple CPUs, a single CPU with multiple processing cores, a digital signal processor (DSP), a field programmable gate array (FPGA), a graphics processing unit (GPU), a tensor processing unit, etc. And system memory 112 is generally included to represent random access memory. Storage device 104 can be a disk drive storage device. Although shown as a single unit, storage device 104 can be a combination of fixed and / or removable storage devices, such as a fixed disk drive, a floppy disk drive, a tape drive, a removable memory card or an optical storage device, a network attached storage device (NAS) or a storage area network (SAN). Processor 102 communicates with other computing devices and systems via network interface 108, where network interface 108 is configured to transmit and receive data via a communication network.
[0030] The system memory 112 includes, but is not limited to, a scanning signal encoder module 132 and a scanning signal decoder module 134. The scanning signal encoder module 132 and the scanning signal decoder module 134 perform one or more operations associated with the techniques described herein when executed by the processor 102. The scanning signal encoder module 132 converts monotonically increasing frequency sweep signals, such as ESS signals, into output signals 152 by dividing the signals into segments and rearranging the segments into a sequence of rearranged input segments 150 such that there is a discontinuity in frequency between each pair of adjacent rearranged input segments 150. In the rearranged input segments 150, each segment represents a frequency sweep as a portion of the duration of the frequency sweep signal 212, and there is an abrupt change in frequency between each pair of segments due to the discontinuity in frequency at the boundaries between the segments. When referring to sequences of input segments 142 and other sequences of segments herein, the word "sequence" is omitted for brevity.
[0031] The scan signal encoder module 132 generates an output signal 152 based on the rearranged input segments 150, or, if optional effects (such as fade-in, fade-out, and / or inter-segment silence) are to be included in the output signal 152, based on the input segments with effects 160. As an example, the output signal 152 may have the same frequencies as the rearranged input segments 150 in the same order as in the rearranged input segments 150. Alternatively, the output signal 152 may have the same frequencies as the input segments with effects 160 in the same order as in the input segments with effects 160. The scan signal encoder module 132 provides the output signal 152 to a speaker in the acoustic space, and causes the speaker to produce audio based on the output signal 152.
[0032] The audio produced by the speaker based on the output signal 152 propagates through the acoustic space and reflects within the acoustic space. The microphone captures sound data based on the sound waves that appear in the audio space due to the audio. The scanning signal decoder module 134 generates an input signal based on the captured sound data, identifies a portion of the input signal corresponding to a portion of the output signal 152, and divides the input signal into a sequence of received segments 148. The scanning signal decoder module 134 can generate a decoded signal 156 based on a sequence of decoded segments in an order corresponding to the sequence of input segments 142 by performing inverse mapping using the encoding key 144. Inverse mapping may involve selecting each of the received segments 148 in an order based on the encoding key 144.
[0033] The scan signal decoder module 134 may use one or more bandpass filters to remove copies of the reverberation tails of the segments that are not in the same order as the original signal, and then reorder the received segments 148 to form the decoded signal 156. In some embodiments, after removing frequencies outside the expected frequency range of the segments, the reverberation tails of the segments are reordered using the segments so that the reordered segments include the reverberation tails. The bandpass filters convert the received segments 148 into filtered segments 154, and the scan signal decoder module 134 may generate a decoded signal 156 based on the filtered segments 154 (which are in an order corresponding to the sequence of the input segments 142) by performing an inverse mapping using the encoding key 144.
[0034] When performing operations associated with the scanning signal encoder module 132, the processor 102 stores data in and retrieves data from portions of the data storage device 140, such as input segments 142, one or more encoding keys 144, encoding parameters 146, rearranged input segments 150, and output signals 152. When performing operations associated with the scanning signal decoder module 134, the processor 102 stores data in and retrieves data from portions of the data storage device 140, such as one or more encoding keys 144, received segments 148, filtered segments 154, decoded signals 156, and spatial impulse responses 158.
[0035] Figure 2 A computing system for generating a room impulse response using a modified frequency sweep signal according to various embodiments is shown. The computing device 100 includes a frequency sweep signal generator module 210 that generates a frequency sweep signal 212, such as an ESS signal or other signal whose frequency varies over time. The sweep signal encoder module 132 receives the frequency sweep signal 212, divides the frequency sweep signal 212 into a sequence of N input segments 142, and rearranges the N input segments 142 into a sequence of N rearranged input segments 150 such that there is a discontinuity in frequency between each pair of adjacent rearranged input segments 150. The number N may be specified or derived by the encoding parameters 146. In the rearranged input segments 150, each segment represents a frequency sweep that is a fraction (1 / N) of the duration of the frequency sweep signal 212, and there is an abrupt change in frequency between each pair of segments due to the discontinuity in frequency at the boundaries between the segments. Due to the shorter duration of the sweeps and the relatively large change in frequency between sweeps, the modified frequency swept signal using the sequence of shorter duration discontinuous frequency sweep segments specified by the sequence of rearranged input segments 150 sounds less intrusive and / or more pleasing to the human listener than a longer duration continuous frequency sweep signal. Although the N input segments 142 have equal lengths ( For example, duration)( For example , each being 1 / N time units), but in other examples, the N input segments 142 may include two or more segments having different lengths. For example, if the input segments have different lengths, each of the different lengths may be a corresponding predetermined length in a list of predetermined lengths.
[0036] The order of the segments in the rearranged input segments 150 may be determined based on the encoding key 144. The encoding key 144 is a sequence of N numbers for identifying segments, where N is the number of segments in the input segments 142. The encoding key 144 specifies the modified order of the input segments 142 as a sequence of rearranged segment indices that is a permutation of the initial order, such as the segment indices in their monotonically increasing order (which corresponds to the order of the segments in the input segments 142). The scan signal encoder module 132 rearranges the input segments 142 into the modified order specified by the encoding key 144 to form the rearranged input segments 150. The encoding key 144 may include a sequence of N non-consecutive random numbers, in which no numbers are repeated. Alternatively, the encoding key 144 may begin with the number 1 and end with the number N, in which case the sequence elements with indices 2 to N-1 form a sequence of N-2 non-consecutive random numbers, in which no numbers are repeated. A sequence that begins with 1 and ends with N may be less intrusive and / or more pleasing to the ear to a human listener than a sequence that begins and ends with other numbered segments.
[0037] The scan signal encoder module 132 on the computing device 100 generates an output signal 152 based on the rearranged input segments 150 and causes the speaker to produce audio tones in the audio space based on the output signal 152. The same computing device 100 that generates the output signal 152 and causes the speaker to produce the audio tones can use the microphone 206 to capture sound data 216 based on the sound waves that appear in the audio space due to the speaker producing the audio tones. The scan signal decoder module 134 on the computing device 100 can then use the encoding key 144 to convert the sound data 216 into a decoded signal 156, and the spatial impulse response generator 218 can convert the decoded signal 156 into a spatial impulse response 158.
[0038] The scanning signal encoder module 132 may provide the encoding key 144 to the encoding key transmitter module 220, which may For exampleThe encoding key 144 is sent to one or more other computing devices 100 over the communication network. At the other computing device 100, the encoding key receiver module 222 may receive the encoding key 144 over the communication network and provide the encoding key 144 to the scanning signal decoder module 134 so that the other computing device 100 can decode the sound data captured by the microphone 206 on the other computing device 100. The sound data captured by the microphone 206 on the other computing device may be based on sound waves that appear in the audio space due to the audio tones generated by the speaker 204 based on the output signal 152.
[0039] Figure 3 According to various implementation schemes Figure 1 1 is a block diagram of a sweep signal encoder module 132 of the embodiment of the present invention. The sweep signal encoder module 132 includes an input segment generator 310, a random number generator 302, an encoding key generator 306, a rearranged segment generator 312, and an output signal generator 314. The input segment generator 310 receives the frequency sweep signal 212 from the frequency sweep signal generator module 210. For example, the frequency sweep signal 212 can be a monotonically increasing frequency sweep signal, such as an ESS signal, or other signals whose frequency varies over time.
[0040] The sweep signal encoder module 132 converts the frequency sweep signal 212 into an output signal 152 having a sequence of N segments, and rearranges the segments to form a sequence of rearranged input segments 150, the segments having a discontinuity in frequency between each pair of adjacent segments. Due to the shorter duration of the sweeps in the output signal 152 and the relatively large change in frequency between sweeps, the resulting output signal 152 sounds less intrusive and / or more pleasing to a human listener than the frequency sweep signal 212.
[0041] The input segment generator 310 divides the frequency sweep signal 212 into N input segments 142. The number N may be specified or derived by the encoding parameters 146. In one example, the number N may be specified directly by the encoding parameters 146. In another example, the number N may be determined by dividing the length of the frequency sweep signal 212 by the segment length 308, which specifies the length of each segment in time units such as milliseconds (ms). The segment length 308 may be For example 40ms, and the length of the frequency sweep signal 212 may be example like 200ms.
[0042] The rearranged segment generator 312 orders the N input segments 142 into a sequence of N rearranged input segments 150 having a discontinuity in frequency between each pair of adjacent rearranged input segments 150. In some embodiments, at least one pair of adjacent rearranged input segments 150 is continuous in frequency ( For example , not separated by discontinuity), and there is a discontinuity in frequency between at least one other pair of adjacent rearranged input segments 150. In some embodiments, the encoding key 144 is a sequence of N non-contiguous numbers having values selected from the range 1 to N, wherein no numbers are repeated. In some embodiments, the encoding key 144 is a sequence of N random non-contiguous numbers having values selected from the range 1 to N, wherein no numbers are repeated. In some embodiments, the encoding key 144 is a sequence of numbers wherein the first and last numbers are 1 and N, respectively, and the numbers at indexes 2 to N-1 form a sequence of non-contiguous numbers having values selected from the range 2 to N-1, wherein no numbers are repeated. In some embodiments, the numbers at indexes 2 to N are random non-contiguous numbers having values selected from the range 2 to N-1, wherein no numbers are repeated. A sequence that begins with 1 and ends with N may be less disturbing and / or more pleasing to the human listener than sequences that begin and end with other numbers.
[0043] An example of a coding key 144 includes a sequence [1 4 3 2 5], wherein the portion of the sequence between the first element and the last element is [4 3 2], which is a sequence of non-continuous numbers. The numbers 4 and 3 are non-continuous, and the numbers 3 and 2 are non-continuous, so the sequence [4 3 2] is a sequence of non-continuous numbers. A sequence containing two consecutive numbers, such as [1,2] or [2,3], is not a valid coding key 144. Other valid coding keys 144 with a length of five that start with 1 and end with 5 include [1 2 4 3 5] and [1 3 2 4 5]. Since the coding key 144 can be a sequence of non-continuous random numbers, a specific coding key 144 with a length of five that starts with 1 and ends with 5 can be any one of [1 4 3 2 5], [1 2 4 3 5], or [1 3 2 4 5], wherein the specific sequence is randomly selected ( For example, each of the three possible valid sequences may have an equal probability of being selected when generating a particular encoding key 144). Sequences of length five that begin with 1 and end with 5 that are not valid encoding keys include [1 2 3 4 5], [1 3 2 4 5], and [1 3 4 2 5]. As another example, [1 5 7 3 8 4 9 6 2 10] is a valid encoding key 144, but [1 5 7 3 4 8 9 6 2 10] is not a valid encoding key because it contains the consecutive digits 3 and 4 as well as 8 and 9.
[0044] The rearranged segment generator 312 may convert the sequence of input segments 142 into a sequence of rearranged input segments 150 using a mapping operation that determines the order of the rearrangement of the input segments 142. The mapping operation may map the input segments 142 to the rearranged input segments 150 by selecting each of the input segments 142 in an order based on a mapping algorithm and / or based on a mapping data structure referred to herein as an encoding key 144. The encoding key 144 may be generated by the encoding key generator 306 based on one or more random numbers 304 using a suitable algorithm. The random numbers 304 may be generated by the random number generator 302.
[0045] The encoding key 144 specifies the order in which the input segments 142 are selected. The selection order is specified as a sequence of segment numbers identifying the segments in the input segments 142. The selection order may be a random order that meets the sorting criteria, such as a sequence of non-contiguous segment numbers where the first and last segments of the input segments 142 ( For example , at index 1 and index N) are also the first and last segments of the rearranged input segment 150. For example, the encoding key 144 may be a sequence having 1 in the first element and N in the Nth element.
[0046] As an example, to generate the encoding key 144, the encoding key generator 306 initializes the encoding key 144 to an empty sequence and generates a sequence of available numbers that initially includes numbers 2 to N-1. The encoding key generator 306 randomly selects an available number from the sequence of available numbers, adds the randomly selected available number to ( For example, appended) to the coding key 144, and removes the randomly selected available numbers from the sequence of available numbers. Then, the coding key generator 306 identifies the available numbers (if any), which are in the sequence of available numbers and are non-continuous with the numbers at the end of the coding key. If there are no available numbers, the coding key generator 306 randomly selects different available numbers from the sequence of available numbers. Otherwise, the coding key generator 306 adds the available numbers to the coding key 144 and removes the available numbers from the sequence of available numbers. The coding key generator 306 repeats the above operation until the coding key 144 includes every number in the range 2 to N-1.
[0047] The rearranged segment generator 312 may add each consecutive selected input segment 142 in the order in which the input segments 142 are selected ( For example , appended) to the rearranged input segment 150. For example, the encoding key 144 may be a sequence of non-consecutive numbers. The encoding key 144 may be a random key, For example , a random sequence of indices of the input segments 142 such that the indices are non-contiguous. The encoding key 144 may conform to the ordering criteria as described above, For example , element 1 and element N in the sequence may have values 1 and value N, while elements 2 to N-1 may be a random sequence of non-consecutive numbers having values selected from the range 2 to N-1.
[0048] The non-consecutive numbers in encoding key 144 are referred to as "elements" in the sequence. Each element in the sequence of non-consecutive numbers has an associated index ranging from 1 to N, where N is the number of elements in the sequence. Each of the numbers in encoding key 144 is associated with a source index representing the position of the number in encoding key 144. Further, each of the numbers in encoding key 144 identifies a target index in the sequence of rearranged input segments 150 ( For example , position), the segment identified by the source index in the input segment 142 is to be mapped to the target index.
[0049] The rearranged segment generator 312 may provide the rearranged input segment 150 to the output signal generator 314, which generates an output signal 152 based on the rearranged input segment 150 and causes the speaker 204 to produce audio tones in the audio space based on the output signal 152. Alternatively, the rearranged segment generator 312 may provide the rearranged input segment 150 to the fade-in and mute effect generator 316, which applies a fade-in, fade-out, and / or mute period effect to the rearranged input segment 150. The fade-in and mute effect generator 316 generates a sequence of rearranged input segments 160 with effects, including fade-in, fade-out, and / or mute period effects. Before the fade-in and / or fade-out effect is applied, each input segment in the rearranged input segment 150 has a predetermined amplitude A. Further, as described above, each input segment has a segment length 308 specified in time units such as milliseconds (ms).
[0050] The fade-in effect applied by the fade-in and mute effect generator 316 modifies the amplitude of the initial portion of each input segment to gradually increase from an initial value (such as 0 dB) to an amplitude A over a certain time period referred to herein as the "fade-in length". The fade-in and mute effect generator 316 can use gain scaling to apply the fade-in effect over a certain time period specified by the fade-in length and starting at the beginning of each input segment. The fade-in length can be, for example, 25% of the segment length 308. For example, if the segment length 308 is 40 ms, the fade-in length is 10 ms. The fade-out effect modifies the amplitude of the tail portion of each input segment to gradually decrease from amplitude A to an initial value (such as 0 dB) over a certain time period referred to herein as the "fade-out length". For example , 0dB). The fade-out length is therefore the length of the tail portion. The tail portion ends at the end of the input segment. For example, the fade-out length can be, for example, 25% of the segment length 308, in which case the fade-out length is 10ms.
[0051] The silence period effect applied by the fade and silence effect generator 316 inserts a silence period with a predefined silence length between each pair of adjacent input segments in the sequence of rearranged input segments 150 to form a sequence of rearranged input segments 160 with the effect, wherein the input segments are separated by the silence length. The predefined silence length may be the same as the segment length 308, For example , 40ms. As an example, refer to Figure 5C and 5D The fade-in, fade-out and mute effect generator 316 can apply fade-in, fade-out and mute cycle effects to Figure 5C The sequence of rearranged input segments 502 shown in FIG. 5 is used to generate Figure 5DThe sequence of input segment waveforms 506 with effects shown in FIG. The encoding key transmitter module 220 may also transmit the encoding key 144 to another computing device 100, as described herein with respect to FIG. Figure 2 described.
[0052] The scan signal encoder module 132 may perform additional processing to modify the rearranged input segments 150 and / or the output signal 152 before providing the output signal 152 to the speaker. The additional processing may include adding a certain silence period between each pair of segments in the rearranged input segments 150 and / or adding a fade-in and / or fade-out effect at the beginning and / or end of each of the rearranged input segments 150. The time length of the silence period and / or the fade-in and fade-out effect is specified by the encoding parameters 146.
[0053] As an example, the scan signal encoder module 132 may map five input segments 142 with indices "1,2,3,4,5" to five rearranged input segments 150 using an encoding key 144 [1,4,3,2,5] that specifies that an input segment with index 1 ("input segment 1") is to be mapped to a rearranged input segment with index 1 ("rearranged segment 1"), input segment 2 is to be mapped to rearranged segment 4, input segment 3 is to be mapped to rearranged segment 3, input segment 4 is to be mapped to rearranged segment 2, and input segment 5 is to be mapped to rearranged segment 5. Thus, the resulting rearranged input segments 150 are "1,4,3,2,5".
[0054] The scanning signal encoder module 132 generates an output signal 152 based on the rearranged input segments 150. For example, the output signal 152 may have the same frequencies as the rearranged input segments 150 in the same order as in the rearranged input segments 150. The scanning signal encoder module 132 provides the output signal 152 to the speaker 204 in the acoustic space and causes the speaker 204 to produce audio tones based on the output signal 152.
[0055] Although examples are described herein with reference to signals having increased frequencies and signal segments having a continuously higher frequency range, the techniques discussed herein may also be applied to signals having decreased frequencies and signal segments having a continuously lower frequency range with appropriate changes.
[0056] Figure 4 According to various implementation schemes Figure 1 4. The scanning signal decoder module 134 includes a received segment generator 402, an optional filtered segment generator 404, and a decoded signal generator 406. The microphone 206 captures sound data 216, which is based on sound waves that appear in the audio space due to the speaker 204 producing audio tones.
[0057] The received segment generator 402 generates an input signal (not shown) based on the captured sound data 216. To generate the input signal, the received segment generator 402 identifies a portion of the captured signal in the sound data 216 that corresponds to a portion of the output signal 152 that is provided to the speaker 204 to cause the speaker 204 to produce an audio tone. Figure 5D , the received segment generator 402 may use pattern matching to identify a portion of the captured signal that matches a given alignment block pattern. Pattern matching techniques may identify similarities between a portion of the captured signal and a given alignment block pattern. The location of the alignment block pattern in the captured signal ( For example , start and / or end time) identifies the location of a portion of the captured signal that corresponds to a portion of the output signal 152.
[0058] If effects such as fade-ins, fade-outs, and / or silent periods between segments are present in the captured signal, the received segment generator 402 removes these effects from the captured signal. The fade-in and fade-out effects are removed by performing an inverse operation of the fade-in and fade-out effect transform performed by the effect generator 316 to modify the rearranged input segments 150 to include fade-in and / or fade-out effects. For example, the fade-in and fade-out effects may be removed by undoing the gain scaling applied by the fade-in and fade-out effect generator 316. The inverse fade-in and fade-out effect transform may increase the amplitude of the fade-in and / or fade-out portions of the input signal to the original value that the rearranged input segments 150 had before the effects were applied by the effects generator 316. Silence effects, which may be silent periods, are removed by identifying silent periods between segments 142 in the input signal and moving the segments 142 together so that the segments 142 are adjacent together. The silent periods may be For example The signal has a frequency that is inaudible to humans ( For example 0Hz or other inaudible frequencies). As an example, refer to Figure 5D , removing the fade-in effect 520 from the beginning of each segment 142, removing the fade-out effect 522 from the end of each segment 142, and removing the silent period 524 between each pair of segments 142 from the input segment waveform 506 with effect produces a sequence of rearranged input segments 160 with effect, such as Figure 5C Received segment generator 402 then divides the input signal into a sequence of N received segments 148. Each of the N received segments 148 represents a different frequency range. N may be specified by encoding parameters 146 and / or determined based on segment length 308 specified by encoding parameters 146.
[0059] The scan signal decoder module 134 converts the sequence of received segments 148 into a sequence of decoded segments (not shown) in the same order as the sequence of input segments 142, and generates a decoded signal 156 based on the sequence of decoded segments. The scan signal decoder module 134 may, for example, use an inverse mapping operation to convert the sequence of received segments 148 into a sequence of decoded segments. The inverse mapping operation may map the received segments 148 to the sequence of decoded segments by selecting each of the received segments 148 in an order based on the encoding key 144. The scan signal decoder module 134 may add each selected received segment 148 to the sequence of decoded segments in the order in which the received segments 148 were selected ( For example , appended) to the sequence of decoded segments. Each of the numbers in the encoding key 144 identifies a target index ( For example , position), the segment identified by the source index in the input segments 142 is mapped to the target index. To perform a reverse mapping from the order of the received segments 148 to the order of the input segments 142, the scan signal decoder module 134 may iterate through the segment numbers in the encoding key 144, and for each segment number in the key, select a received segment 148 identified by the segment number, and add the selected received segment 148 to ( For example , appended) to the sequence of decoded segments.
[0060] As an example, the received segment 148 may be "1, 4, 3, 2, 5", and the encoding key 144 may be [1 4 3 25]. As described above, the encoding key 144 [1 4 3 2 5] specifies that the input segment with index 1 ("input segment 1") is mapped to the rearranged input segment with index 1 ("rearranged segment 1"), input segment 2 is mapped to rearranged segment 4, input segment 3 is mapped to rearranged segment 3, input segment 4 is mapped to rearranged segment 2, and input segment 5 is mapped to rearranged segment 5. The scanning signal decoder module 134 performs the inverse mapping by traversing the segment numbers in the encoding key 144. The first segment number in the encoding key 144 (at index = 1) is 1, so the scanning signal decoder module 134 selects the received segment 148 with index = 1, which is the first received segment 148 (with segment number = 1) in the sequence of received segments 148. A segment number "1" is added to the sequence of decoded segments.
[0061] Moving to the next segment number in the encoding key 144, the second segment number in the encoding key 144 (at index = 2) is 4, so the scanning signal decoder module 134 selects the received segment 148 with index = 4, which is the fourth received segment 148 (with segment number = 2) in the sequence of received segments 148. The segment number "2" is added to the sequence of decoded segments. The scanning signal decoder module 134 continues by traversing the third segment number, the fourth segment number, and the fifth segment number in the encoding key 144, and selecting the corresponding received segments 148 with indices 3, 2, and 5, which have segment numbers 3, 4, and 5, respectively. The resulting sequence of decoded segments is "1, 2, 3, 2, 5", which is the same order that the input segments 142 had before rearrangement. The scanning signal decoder module 134 generates a decoded signal 156 based on the sequence of decoded segments, and uses the decoded signal 156 to determine the spatial impulse response 158.
[0062] The scanning signal decoder module 134 may be located on the same computing device 100 as the scanning signal encoder module 132, in which case the scanning signal decoder module 134 may access the encoding key 144 and the value N through a shared memory, or otherwise receive the encoding key 144 and / or the value N from the scanning signal encoder module 132. Alternatively or additionally, the scanning signal decoder module 134 may be located on a different computing device than the scanning signal encoder module 132, in which case the scanning signal encoder module 132 may send the encoding key 144 and / or the value N to the scanning signal decoder module 134 on the different computing device through network communication. As another alternative, the encoding key 144 and / or the value N may be provided to the different computing device in the encoding parameters 146, for example, when configuring the audio system.
[0063] The sound waves that appear in the audio space due to the audio produced by the loudspeaker include reverberation of the audio tone, and the reverberation continues for a period of time after the segment of the audio tone is produced. When the sequence of received segments 148 is decoded to form the sequence of decoded segments of the decoded signal 156, portions of the reverberation tails from other segments included in the received segments 148 are moved as part of the segments moved during the reordering of the received segments 148 to form the decoded signal 156. The generated reordered signal thus has segments that contain tail portions from previous segments that are out of order.
[0064] The optional filtered segment generator 404 can receive the sequence of received segments 148 and use a bandpass filter to remove copies of the reverberation tails of the segments that are not in the same order as the original signal before reordering the received segments 148 to form the decoded signal 156. The filtered segment generator 404 generates the sequence of filtered segments 154. In some embodiments, after removing frequencies outside the expected frequency range of the segments, the reverberation tails of the segments are reordered using the segments so that the reordered segments include the reverberation tails. Fig. 5F and Figure 5G , if the filtered segment generator 404 (which includes a bandpass filter) is not used and the received segment 148 is passed to the decoded signal generator 406, the decoded signal generator 406 shifts a vertical slice of the signal, which may include portions of the reverberation tails 504 of other segments 502. For example, if the filtered segment generator 404 is not used, the received segment 502D is shifted from the time range between T2 and T3 to the time range between T4 and T5 by shifting the vertical slice of the signal. Therefore, a portion of the reverberation tail 504D is not shifted and exists in the resulting signal at an earlier time than the segment 504D that caused the reverberation tail. By using the filtered segment generator 404, which includes a bandpass filter that removes a portion of the reverberation tail 504 from each segment ( For example , the segment between T3 and T4) removes the reverberation tail of other segments ( For example , 504D). Further, the filtered segment generator 404 may be configured to move the vertical slice ( For example , the slice between T4 and T5 to the time period between T2 and T3) is removed when the segment ( For example , 502B) are located in the reverberation tail portion of other segments in the same slice ( For example , 504C). Using the filtered segment generator 404, Fig.5I The resulting decoded signal 156 shown in has preserved the reverberation tail 504. The decoded signal 156 generated when using the filtered segment generator 404 results in an improved room impulse response result. For example, when the decoded signal 156 generated based on the results of the filtered segment generator 404 is used to preserve the longer reverberation tail, the wall distance estimate determined using the decoded signal 156 is applicable to up to about twice the distance from the computing device 100 to the wall compared to the decoded signal 156 generated without using the bandpass filtering performed by the filtered segment generator 404.
[0065] The one or more bandpass filters used by the filtered segment generator 404 convert the received segments 148 into filtered segments 154, and the scanning signal decoder module 134 can generate a decoded signal 156 based on the filtered segments 154 (which are in an order corresponding to the sequence of the input segments 142) by performing an inverse mapping using the encoding key 144. The decoded signal generator 406 can receive the filtered segments 154 and generate a decoded signal 156 based on the filtered segments 154. The decoded signal generator 406 can use the encoding key 144 received from the encoding key receiver module 222 by selecting each of the N filtered segments in an order based on the sequence of non-consecutive numbers in the encoding key. The decoded signal 156 is provided as an input to the spatial impulse response generator 218, which generates a spatial impulse response 158 based on the decoded signal 156.
[0066] Figure 5A A frequency sweep signal divided into input segments 142 according to various embodiments is shown. The frequency sweep signal includes a sequence of input segments 142, the sequence including input segments 142A, 142B, 142C, 142D, 142E. As shown, the frequency of the sequence of input segments 142 increases linearly on a logarithmic frequency scale over time. The length of each input segment 142A-142E is specified by a segment length 308. For example, input segment 142A starts at time T1 and ends at time T2. The difference between time T2 and T1 is segment length 308. Input segment 142B extends from time T2 to time T3. Input segment 142C extends from time T3 to time T4. Input segment 142D extends from time T4 to time T5. Input segment 142E extends from time T5 to time T6.
[0067] Figure 5B 1 shows an output signal including a sequence of rearranged input segments 150 according to various embodiments. The sequence of rearranged segments 150 is encoded using an encoding key 144 of [1 4 3 2 5] Figure 5A The rearranged input segment 150 is generated by sorting the sequence of the input segment 142. Figure 3 The rearranged segment generator 312 generates. Figure 5B It can be seen that the input segment 142A is located in the first time range between T1 and T2. The input segment 142A is also located in Figure 5A , as specified by the number “1” in the first element of encoding key 144 .
[0068] Segment 142D (the fourth segment) has moved from the fourth time range (between T3 and T4) to the second time range between T2 and T3, as specified by the number "4" in the encoding key 144. Input segment 142C (the third segment) has not yet moved and is located in the third time range ( Figure 5A Between T4 and T4 and Figure 5B 144). Input segment 142B (the second segment) has moved from the second time range (between T2 and T3) to the fourth time range (between T4 and T5). Input segment 142E (the fifth segment) has not moved and is still located in the fifth time range (between T5 and T6), as specified by the number "5" in the encoding key 144.
[0069] Figure 5C A waveform diagram of a sequence of rearranged input segments 150 according to various embodiments is shown. In the waveform diagram, the x-axis represents time and the y-axis represents the amplitude of the frequency sweep signal. The frequency sweep signal is divided into input segments 142. The input segments 142 have been rearranged and arranged in Figure 5B The signal may be an exponential sine sweep signal in which the frequency increases over time. An exponential sine sweep signal is a sine wave that increases due to Figure 5C 142B is shown as a rectangle using the scale used in , where individual waves are not clearly discernible. Input segment 142A is shown as a rectangle between times T1 and T2. Similarly, segment 142D is between T2 and T3, segment 142C is between T3 and T4, segment 142B is between T4 and T5, and segment 142E is between segments T5 and T6.
[0070] Figure 5D A waveform diagram of a sequence of rearranged input segments 506 with effects according to various embodiments is shown. The input segment waveform 506 with effects includes waveform representations of modified input segments 542A, 542B, 542C, 542D, and 542E. The fade-in and mute effect generator 316 generates the input segment waveform 506 with effects by applying fade-in, fade-out, and mute period effects to the rearranged input segments 502. The fade-in effect modifies the amplitude of the initial portion of each input segment 142 to gradually increase from an initial value (such as 0 dB) to an amplitude A within a certain time period specified by the fade-in length. The modified input segment starts at time T1 and ends at time T2. The fade-in effect 520 is the initial portion of the modified input segment 542A. The fade-in effect 520 starts at time T1 and ends at time T1+f, where f is the fade-in length.
[0071] The Fade Out effect modifies the amplitude of the tail portion of each input segment to gradually decrease from amplitude A to the initial value ( For example , 0dB). The fade-out effect 522 is the tail portion of the modified input segment 542A. The fade-out effect 522 starts at time T2-f and ends at time T2, where is the fade-out length, which is equal to the fade-in length in this example. The fade-out length can be, for example, 25% of the segment length 308. The silent period effect applied by the fade-in and silent effect generator 316 inserts a silent period with a predefined silent length between each pair of adjacent input segments 542 in the sequence of rearranged input segments 150 to form a sequence of rearranged input segments 160 with effects, wherein the input segments are separated by silent periods 524, and each segment has a fade-in effect 520 and a fade-out effect 522.
[0072] Figure 5E 1 shows a spectrogram view of a frequency swept signal divided into input segments according to various embodiments. The frequency swept signal includes a sequence of input segments 142. The sequence of input segments 142 includes input segments 502A-502E, each of which has a start time and an end time. The sequence of input segments 142 is composed of Figure 3 502E is generated by the input segment generator 310 of . The first input segment 502A extends from time T1 to time T2. The second input segment 502B extends from time T2 to time T3. The third input segment 502C extends from time T3 to time T4. The fourth input segment 502D extends from time T4 to time T5. The fifth input segment 502E extends from time T5 to time T6. The frequency of the frequency swept signal increases over time and includes a reverberation tail 504.
[0073] Fig. 5F A spectrogram view of an output signal including a sequence of rearranged input segments 150 is shown according to various embodiments. Fig. 5F The various rearranged segments 502A-502E shown in FIG. Figure 5E The same segments as shown in , but in a different order. The sequence of rearranged segments 150 is encoded using the encoding key 144 of [1 43 2 5] Figure 5E The sequence of the rearranged input segments 150 is generated by Figure 3 The rearranged segment generator 312 generates.
[0074] like Fig. 5F It can be seen that segment 502A is located in the first time range between T1 and T2. Segment 502A is also located in Figure 5E, as specified by the number "1" in the first element of the encoding key 144. Segment 502A has a reverberation tail 504A. Segment 502D (the fourth segment) has moved from the fourth time range (between T4 and T5) to the second time range between T2 and T3, as specified by the number "4" in the encoding key 144. Segment 502D has a reverberation tail 504D. Segment 502C (the third segment) has not yet moved and is located in the third time range ( Figure 5E Between T4 and T4 and Fig. 5F 144). Segment 502C has a reverberation tail 504C. Segment 502B (the second segment) has moved from the second time range (between T2 and T3) to the fourth time range (between T4 and T5). Segment 502B has a reverberation tail 504B. Segment 502E (the fifth segment) has not moved and is still in the fifth time range (between T5 and T6). Segment 502E has a reverberation tail 504E.
[0075] Figure 5G A spectrogram view of a decoded signal including received segments 502 in a decoded order determined based on an encoding key is shown in accordance with various embodiments. Segments 502 have been moved along the horizontal (time) axis to their original order, from segment 502A to segment 502E. As a result of moving segments 502 to different positions along the time axis, some portions of the reverberation tail 504 are located earlier in time than the corresponding segment 502 of the received scan signal. For example, tail portion 504C has been moved to an earlier time than segment 502C. These anti-causal results occur because, when the rearranged input segments 150 are rearranged to their original order to form the decoded signal 156, portions of the signal that have frequencies above a particular segment 502, such as the frequency of the reverberation tail 504C, are moved as part of the vertical slice of the graph. For example, ( Fig. 5F The slice between T4 and T5 shown in FIG. 5 includes the reverberation tail 504C. The slice is moved to the time range between T2 and T3 to form Figure 5G , thereby moving a portion of tail 504C to the time range between T2 and T3, which is earlier in time than segment 502C. However, segment 502C precedes tail 504C because segment 502C causes the reverberation represented by tail 504C. As another example, anti-causal reverberation tail 504D occurs earlier in time than segment 502D. These anti-causal reverberation tails 504C, 504D may be removed using a bandpass filter that attenuates frequencies above and below each segment 502 and corresponding reverberation tail 504, as described herein.
[0076] Figure 5HA spectrogram view of a filtered segment 502 generated from captured sound data using bandpass filtering according to various embodiments is shown. For clarity, each segment 502 is shown on a separate graph. The first segment 502A starts at time T1 and extends along the time axis to the end of the reverberation tail. The bandpass filter is shown as a rectangular area 510A, which attenuates the frequencies above the first segment 502A; and is shown as a rectangular area 510B, which attenuates the frequencies below the first segment 502A. The bandpass filter removes other segments 502B-502E and their corresponding tails 504B-504E. Similarly, the frequencies above and below the segment 502D starting at time T2 have been removed by the bandpass filter as shown in rectangular areas 512A and 512B.
[0077] Further, frequencies above and below segment 502C starting at time T3 have been removed by the bandpass filter as shown in rectangular areas 514A and 514B. Frequencies above and below segment 502B starting at time T4 have been removed by the bandpass filter as shown in rectangular areas 516A and 516B. Frequencies below segment 502E starting at time T5 have been removed by the bandpass filter as shown in rectangular area 518.
[0078] Fig.5I 1 shows a spectrogram view of a decoded signal 156 including filtered segments 502A-502E in a decoded order determined based on an encoding key according to various embodiments. In this example, the encoding key is [1 4 3 2 5]. The decoding key has been used to reorder the segments 502 so that they are in the decoded order. Segment 502A is at time T1, segment 502B has been moved to time T2, segment 502C is at time T3, segment 502D has been moved to time T4, and segment 502E is at time T5. The reverberation tail 504 corresponding to segment 502 is preserved during the reordering because Fig.5I The bandpass filter shown in retains the reverberation tail 504 together with its corresponding segment 502 .
[0079] Figure 6 is a flow chart of method steps for generating a modified frequency sweep signal having segments in an order determined based on an encoding key according to various embodiments. Figures 1 to 5I The method steps are described herein with reference to a system, but those skilled in the art will understand that any system configured to perform the method steps in any order is within the scope of the present disclosure.
[0080] As shown, method 600 begins at step 602, where computing device 100 generates a frequency sweep signal having a monotonically increasing frequency. The frequency sweep signal may be, for example, an exponential sinusoidal sweep signal, where the frequency of the signal increases monotonically over time.
[0081] At step 604, computing device 100 divides the frequency sweep signal into N input segments, each of which represents a different frequency range. Each input segment has a segment length 308. For example, if the frequency of the frequency sweep signal increases from 1 kHz to 6 kHz over time, and there are 5 pulses, the first pulse is 1-2 kHz, the second pulse is 2-3 kHz, the third pulse is 3-4 kHz, the fourth pulse is 4-5 kHz, and the fifth pulse is 5-6 kHz. Figure 5A An example frequency swept signal divided into input segments 142A-142E is shown in FIG.
[0082] At step 606, computing device 100 optionally includes a silence period having a given silence time period length after each of the N input segments. Step 606 may apply a silence effect to the sequence of input segments 142, as described herein with reference to Figure 3 The silent period inserted into the frequency sweep signal between each pair of adjacent segments can facilitate the identification of individual segments in the signal received by the microphone ( For example ,pass Figure 7 706 of the flowchart of FIG. 1 ).
[0083] At step 608, computing device 100 adds fade-in and fade-out effects with corresponding fade-in and fade-out time period lengths to each input segment. When step 616 causes the speaker to produce audio based on output signal 152 based on input segment 142, the fade-in and fade-out effects are applied to the input segments to prevent popping sounds at speaker 204. Computing device 100 may use gain scaling to apply the fade-in effect to each input segment of the frequency swept signal for a time period specified by the fade-in length and starting at the beginning of each input segment. The fade-in length may be a parameter, For example , a predetermined value, such as 25% of the segment length 308. Applying the fade-in effect modifies the amplitude of the initial portion of each input segment to gradually increase from an initial value (such as 0 dB) to the amplitude of the frequency swept signal generated in step 602. The computing device 100 may also use gain scaling to apply a fade-out effect to each input segment tail portion of the frequency swept signal for a time period specified by the fade-out length and ending at the end of each input segment. Applying the fade-out effect reduces the amplitude A to the initial value (such as 0 dB) over a certain time period specified by the fade-out length parameter. For example , 0dB).
[0084] At step 610, computing device 100 generates a coding key having a sequence of N non-consecutive numbers, where each number in the sequence appears once. The coding key may be generated based on random numbers so that different coding keys are used at different times. As an example, to generate coding key 144, at step 610, computing device 100 initializes coding key 144 to an empty sequence and generates a sequence of available numbers that initially includes numbers 2 to N-1. Computing device 100 randomly selects an available number from the sequence of available numbers, adds the randomly selected available number to ( For example , appended) to the encoding key 144, and removes the randomly selected available number from the sequence of available numbers. Then, the computing device 100 identifies the available numbers (if any) that are in the sequence of available numbers and are non-continuous with the numbers at the end of the encoding key. If there are no available numbers, the computing device 100 randomly selects different available numbers from the sequence of available numbers. Otherwise, the computing device 100 adds the available number to the encoding key 144 and removes the available number from the sequence of available numbers. The computing device 100 repeats the above operations until the encoding key 144 includes every number in the range 2 to N-1.
[0085] At step 612, the computing device 100 sends the key to one or more receiver devices. For example, the key may be sent to the receiver device via a communication network. At step 614, the computing device 100 generates an output signal 152 by selecting each of the N input segments in an order based on the sequence of non-continuous numbers in the encoding key. To generate the output signal 152, the computing device 100 may generate a rearranged sequence of the N input segments, wherein each input segment has a corresponding second position in the rearranged sequence, and the corresponding second position is based on a corresponding number in the sequence of N non-continuous numbers. Further, the corresponding number has a position in the sequence of N non-continuous numbers corresponding to a first position of an input segment in the N input segments, and the output signal 152 is based on the rearranged sequence. The position of the corresponding number in the sequence of N non-continuous numbers is determined based on the first position of the input segment in the N input segments. At step 616, the computing device 100 causes the speaker to produce an audio tone in the audio space based on the output signal 152.
[0086] Figure 7 is a flow chart of method steps for decoding a modified frequency swept signal and determining a spatial impulse response based on the decoded signal according to various embodiments. Figures 1 to 5I The method steps are described herein with reference to a system, but those skilled in the art will understand that any system configured to perform the method steps in any order is within the scope of the present disclosure.
[0087] As shown, method 700 begins at step 702, where computing device 100 uses a microphone to capture sound data based on sound waves occurring in an audio space. The sound waves are due to audio tones (such as at Figure 6 616).
[0088] At step 704, the computing device 100 generates an input signal based on the sound data. Figure 5D , the received segment generator 402 may use pattern matching to identify a portion of the captured signal that matches a given alignment block pattern. Pattern matching techniques may identify similarities between a portion of the captured signal and a given alignment block pattern. The location of the alignment block pattern in the captured signal ( For example , start and / or end time) identifies the location of a portion of the captured signal that corresponds to a portion of the output signal 152.
[0089] At step 706 , computing device 100 divides the input signal into N received segments, each of which represents a different frequency range. N may be specified by encoding parameters 146 and / or determined based on segment length 308 specified by encoding parameters 146 .
[0090] At step 708, computing device 100 removes silent periods, fade-in effects, and fade-out effects from the N received segments. If effects such as fade-in, fade-out, and / or silent periods between segments are present in the captured signal, received segment generator 402 removes the effects from the captured signal, as described herein with respect to Figure 4 described.
[0091] At step 710, computing device 100 determines whether to perform reverberation tail filtering. Reverberation tail filtering is optional and is performed if, for example, a corresponding configuration option for reverberation tail filtering is enabled.
[0092] If step 710 determines not to perform reverberation tail filtering, then at step 712, computing device 100 generates a decoded signal by selecting each of the N received segments in an order based on the encoding key. For example, the encoding key may be received from a transmitter device.
[0093] If step 710 determines that reverberation tail filtering is to be performed, then at step 714, the computing device 100 generates N filtered segments by filtering each corresponding received segment in the received segments using a bandpass filter, and wherein the sequence of the N filtered segments is in an order based on the encoding key, and at step 716, the computing device 100 generates a decoded signal by selecting each filtered segment in the N received segments in an order based on the encoding key. The encoding key 144 specifies the order in which the input segments 142 are selected. The selection order is specified as a sequence of segment numbers identifying the segments in the input segments 142.
[0094] To generate a decoded signal by selecting each received segment, the computing device may generate N filtered segments, where each filtered segment is generated by filtering each corresponding one of the received segments using a bandpass filter. The decoded signal is generated by selecting each of the N filtered segments in an order based on a sequence of non-consecutive numbers in the encoding key. At step 712, computing device 100 uses a suitable technique to determine a spatial impulse response based on the decoded signal.
[0095] In summary, a computer-based audio system works by converting a given signal ( For example , frequency swept signal or exponential sine sweep) into a modified signal to generate a room impulse response, wherein the segments from a given signal are in a different order than the given signal. The modified signal is then used in place of the given signal to determine the RIR. To generate the RIR, the audio system causes a speaker in the acoustic space to produce an audio tone based on the modified signal. A microphone in the acoustic space captures sound data based on sound waves that appear in the room in response to the audio tone produced by the speaker. The audio system then identifies the segments in the captured sound data and generates a reordered signal in which the segments are in the same order as in the original given signal. The RIR is then determined based on the given signal and the reordered signal. The sound wave includes reverberation of the audio tone, and the reverberation lasts for a period of time after the segment of the modified signal that caused the reverberation. In order to remove reverberation tail copies of the received segments that are not in the same order as the original signal, each segment is bandpass filtered before being reordered into the reordered signal. In some implementations, during the reordering of the received segments, frequencies outside the expected frequency range of the received segments are removed by a bandpass filter and the reverberation tail is preserved so that the decoded signal includes the reverberation tail.
[0096] At least one technical advantage of the disclosed techniques over the prior art is that, using the disclosed techniques, a room impulse response can be determined using a test audio signal that is less disturbing to a human listener than a test audio signal of the prior art. The test audio signal of the disclosed techniques is also more pleasing to the ear of a human listener than a test audio signal of the prior art. The test audio signal of the disclosed techniques can also be mixed with other sounds, such as music, to further reduce the disturbing nature of the test audio signal. Further, during the reordering of the received segments, frequencies outside of an expected frequency range of the received segments are removed by a bandpass filter and reverberation tails are preserved, so that the decoded signal contains the reverberation tail, which substantially improves the distance range over which an accurate wall distance estimate is obtained compared to calculating the wall distance estimate without preserving the reverberation tail. These technical advantages represent one or more technical improvements over the prior art methods.
[0097] 1. In some embodiments, a computer-implemented method for generating a signal for measuring a spatial impulse response includes: generating a frequency sweep signal having a monotonically increasing frequency; dividing the frequency sweep signal into N input segments, each of the N input segments representing a different frequency range; generating a coding key having a sequence of N non-contiguous numbers, wherein each number in the sequence appears once; generating an output signal by selecting each of the N input segments in an order based on the sequence of N non-contiguous numbers in the coding key; and causing a speaker to produce audio tones in an audio space based on the output signal.
[0098] 2. A method as described in clause 1, wherein each of the N input segments is associated with a corresponding first position of the input segment in the N input segments, and wherein generating the output signal includes: generating a rearranged sequence of the N input segments, wherein each input segment has a corresponding second position in the rearranged sequence, and the corresponding second position is based on a corresponding position of a number corresponding to the corresponding first position in the sequence of N non-contiguous numbers, wherein the output signal is based on the rearranged sequence.
[0099] 3. A method as described in clause 1 or clause 2, wherein the output signal has a frequency discontinuity at a boundary between a first output signal segment corresponding to a first input segment among the N input segments and a second output signal segment corresponding to a second input segment among the N input segments adjacent to the first output signal segment.
[0100] 4. A method as described in any of clauses 1-3, wherein the output signal includes at least one segment having a frequency range lower than the frequency range of a previous segment of the output signal.
[0101] 5. A method as described in any of clauses 1-4, wherein N is based on the length of the frequency sweep signal and a predetermined length of each input segment.
[0102] 6. The method of any of clauses 1-5, wherein generating the output signal comprises including in the output signal a silence period of a given length between each pair of adjacent input segments.
[0103] 7. A method as described in any of clauses 1-6, and wherein generating the output signal includes one or more of the following: converting the beginning fade-in portion of the segment in each of the N input segments into a fade-in portion having an amplitude that increases over a certain time period, or converting the portion of the segment ending at the end of the segment in each of the N input segments into a fade-out portion having an amplitude that decreases over a certain time period.
[0104] 8. The method as described in any of clauses 1-7 further includes: using a microphone to capture sound data based on sound waves appearing in the audio space; generating an input signal based on the sound data; dividing the input signal into N received segments, each of the N received segments representing a different frequency range; generating a decoded signal by selecting each of the N received segments in an order based on the sequence of N non-continuous numbers in the encoding key, the decoded signal having a monotonically increasing frequency; and determining a spatial impulse response based on the decoded signal.
[0105] 9. The method of any of clauses 1-8, further comprising filtering each received segment using a bandpass filter having a frequency range based on the frequency range of the received segment.
[0106] 10. The method of any of clauses 1-9, further comprising removing fade-in portions and fade-out portions of each of the N received segments.
[0107] 11. One or more non-transitory computer-readable media storing program instructions that, when executed by one or more processors, cause the one or more processors to perform the following steps: generating a frequency sweep signal having a monotonically increasing frequency; dividing the frequency sweep signal into N input segments, each of the N input segments representing a different frequency range; generating a coding key having a sequence of N non-consecutive numbers, wherein each number in the sequence appears once; generating an output signal by selecting each of the N input segments in an order based on the sequence of N non-consecutive numbers in the coding key; and causing a speaker to produce audio tones in an audio space based on the output signal.
[0108] 12. One or more non-transitory computer-readable media as described in clause 11, wherein each of the N input segments is associated with a corresponding first position of the input segment in the N input segments, and wherein generating the output signal includes: generating a rearranged sequence of the N input segments, wherein each input segment has a corresponding second position in the rearranged sequence, and the corresponding second position is based on a corresponding position of a number corresponding to the corresponding first position in the sequence of N non-contiguous numbers, wherein the output signal is based on the rearranged sequence.
[0109] 13. One or more non-transitory computer-readable media as described in clause 11 or clause 12, wherein the output signal has a frequency discontinuity at a boundary between a first output signal segment corresponding to a first input segment among the N input segments and a second output signal segment corresponding to a second input segment among the N input segments adjacent to the first output signal segment.
[0110] 14. One or more non-transitory computer-readable media as described in any of clauses 11-13, wherein the encoding key is further based on at least one random value.
[0111] 15. One or more non-transitory computer-readable media as described in any of clauses 11-14, the step further comprising: sending the encoding key and one or more input segment lengths to one or more receiver devices, wherein each input segment length indicates the length of an input segment among the N input segments.
[0112] 16. A system comprising: one or more memories storing instructions; and one or more processors coupled to the one or more memories and when executing the instructions: generating a frequency sweep signal having a monotonically increasing frequency; dividing the frequency sweep signal into N input segments, each of the N input segments representing a different frequency range; generating a coding key having a sequence of N non-contiguous numbers, wherein each number in the sequence appears once; generating an output signal by selecting each of the N input segments in an order based on the sequence of N non-contiguous numbers in the coding key; and causing a speaker to produce audio tones in an audio space based on the output signal.
[0113] 17. A system as described in clause 16, wherein each of the N input segments is associated with a corresponding first position of the input segment in the N input segments, and wherein generating the output signal includes: generating a rearranged sequence of the N input segments, wherein each input segment has a corresponding second position in the rearranged sequence, and the corresponding second position is based on a corresponding position of a number corresponding to the corresponding first position in the sequence of N non-contiguous numbers, wherein the output signal is based on the rearranged sequence.
[0114] 18. A system as described in clause 16 or clause 17, wherein the output signal has a frequency discontinuity at a boundary between a first output signal segment corresponding to a first input segment among the N input segments and a second output signal segment corresponding to a second input segment among the N input segments adjacent to the first output signal segment.
[0115] 19. The system of any of clauses 16-18, wherein the output signal comprises at least one segment having a frequency range lower than a frequency range of a preceding segment of the output signal.
[0116] 20. The system of any of clauses 16-19, wherein N is based on a length of the frequency sweep signal and a predetermined length of each input segment.
[0117] Any and all combinations of any claim elements recited in any claim and / or any elements described in the present application, in any manner, are within the intended scope of the present disclosure and protection.
[0118] The description of the various embodiments has been presented for purposes of illustration and is not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments.
[0119] Aspects of the present embodiment may be embodied as a system, method, or computer program product. Thus, aspects of the present disclosure may take the form of a complete hardware implementation, a complete software implementation (including firmware, resident software, microcode, etc.), or an implementation that combines software aspects with hardware aspects, all of which may generally be referred to herein as "modules" or "systems." In addition, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer-readable media having computer-readable program code embodied thereon.
[0120] Any combination of one or more computer-readable media may be utilized. A computer-readable medium may be a computer-readable signal medium or a computer-readable storage medium. A computer-readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or apparatus, or any suitable combination of the foregoing. More specific examples (non-exhaustive list) of computer-readable storage media would include the following media: an electrical connection with one or more conductors, a portable computer floppy disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer-readable storage medium may be any tangible medium that may contain or store a program for use by or in connection with an instruction execution system, device, or apparatus.
[0121] Aspects of the present disclosure are described above with reference to the flowchart illustrations and / or block diagrams of the methods, devices (systems) and computer program products according to the embodiments of the present disclosure. It should be understood that each frame in the flowchart illustration and / or block diagram and the combination of frames in the flowchart illustration and / or block diagram can be implemented by computer program instructions. These computer program instructions can be provided to the processor of a general-purpose computer, a special-purpose computer or other programmable data processing device to produce a machine, so that the instructions executed by the processor of the computer or other programmable data processing device can realize the function / action specified in one or more frames of the flowchart and / or block diagram. Such processors may be, but are not limited to, general-purpose processors, special-purpose processors, special-purpose processors or field programmable gate arrays.
[0122] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality and operation of possible implementations of the systems, methods and computer program products according to various embodiments of the present disclosure. In this regard, each box in the flowchart or block diagram may represent a module, segment or portion of a code, and the code includes one or more executable instructions for implementing one or more specified logical functions. It should also be noted that in some alternative implementations, the functions mentioned in the box may not appear in the order mentioned in the accompanying drawings. For example, depending on the functionality involved, the two boxes shown in succession may be executed substantially simultaneously, or the boxes may sometimes be executed in reverse order. It should also be noted that each box of the block diagram and / or flowchart illustration and the combination of boxes in the block diagram and / or flowchart illustration may be implemented by a special-purpose hardware-based system that performs a specified function or action or by a combination of special-purpose hardware and computer instructions.
[0123] While the foregoing is directed to embodiments of the present disclosure, other and further embodiments of the disclosure may be devised without departing from the basic scope thereof, and the basic scope is determined by the following claims.
Claims
1. A computer-implemented method for generating a signal for measuring a spatial impulse response, the method comprising: generating a frequency sweep signal having a monotonically increasing frequency; dividing the frequency swept signal into N input segments, each of the N input segments representing a different frequency range; generating an encoding key having a sequence of N non-consecutive numbers, wherein each number in the sequence appears once; generating an output signal by selecting each of the N input segments in an order based on the sequence of N non-consecutive numbers in the encoding key; as well as A speaker is caused to produce audio tones in an audio space based on the output signal.
2. The method of claim 1 , wherein each of the N input segments is associated with a respective first position of the input segment of the N input segments, and wherein generating the output signal comprises: generating a rearranged sequence of the N input segments, wherein each input segment has a respective second position in the rearranged sequence, and the respective second position is based on a respective position of a number corresponding to the respective first position in the sequence of N non-consecutive numbers, Wherein the output signal is based on the rearranged sequence.
3. The method of claim 1, wherein the output signal has a frequency discontinuity at a boundary between a first output signal segment corresponding to a first input segment among the N input segments and a second output signal segment corresponding to a second input segment among the N input segments adjacent to the first output signal segment. 4 . The method of claim 1 , wherein the output signal comprises at least one segment having a frequency range lower than a frequency range of a previous segment of the output signal.
5. The method of claim 1, wherein N is based on a length of the frequency swept signal and a predetermined length of each input segment.
6. The method of claim 1 , wherein generating the output signal comprises: A silent period of a given length is included in the output signal between each pair of adjacent input segments.
7. The method of claim 1, and wherein generating the output signal comprises one or more of: converting in each of the N input segments a starting fade-in portion of the segment into a fade-in portion having an amplitude that increases over a certain time period, or A portion of the segment ending at an end of the segment is converted in each of the N input segments into a fade-out portion having an amplitude that decreases over a certain time period.
8. The method of claim 1, further comprising: capturing, using a microphone, sound data based on sound waves occurring in the audio space; generating an input signal based on the sound data; dividing the input signal into N received segments, each of the N received segments representing a different frequency range; generating a decoded signal by selecting each of the N received segments in an order based on the sequence of N non-consecutive numbers in the encoding key, the decoded signal having a monotonically increasing frequency; and A spatial impulse response is determined based on the decoded signal.
9. The method of claim 8, further comprising: Each received segment is filtered using a bandpass filter having a frequency range based on the frequency range of the received segment.
10. The method of claim 8, further comprising: The fade-in portion and the fade-out portion of each of the N received segments are removed.
11. One or more non-transitory computer-readable media storing program instructions that, when executed by one or more processors, cause the one or more processors to perform the following steps: generating a frequency sweep signal having a monotonically increasing frequency; dividing the frequency swept signal into N input segments, each of the N input segments representing a different frequency range; generating an encoding key having a sequence of N non-consecutive numbers, wherein each number in the sequence appears once; generating an output signal by selecting each of the N input segments in an order based on the sequence of N non-consecutive numbers in the encoding key; as well as A speaker is caused to produce audio tones in an audio space based on the output signal.
12. The one or more non-transitory computer-readable media of claim 11, wherein each of the N input segments is associated with a respective first position of the input segment of the N input segments, and wherein generating the output signal comprises: generating a rearranged sequence of the N input segments, wherein each input segment has a respective second position in the rearranged sequence, and the respective second position is based on a respective position of a number corresponding to the respective first position in the sequence of N non-consecutive numbers, Wherein the output signal is based on the rearranged sequence.
13. One or more non-transitory computer-readable media as described in claim 11, wherein the output signal has a frequency discontinuity at a boundary between a first output signal segment corresponding to a first input segment of the N input segments and a second output signal segment corresponding to a second input segment of the N input segments adjacent to the first output signal segment.
14. The one or more non-transitory computer-readable media of claim 11, wherein the encoding key is further based on at least one random value.
15. The one or more non-transitory computer readable media of claim 11, the steps further comprising: The encoding key and one or more input segment lengths are sent to one or more receiver devices, wherein each input segment length indicates a length of an input segment of the N input segments.
16. A system comprising: one or more memories storing instructions; and One or more processors, the one or more processors being coupled to the one or more memories and when executing the instructions: generating a frequency sweep signal having a monotonically increasing frequency; dividing the frequency swept signal into N input segments, each of the N input segments representing a different frequency range; generating an encoding key having a sequence of N non-consecutive numbers, wherein each number in the sequence appears once; generating an output signal by selecting each of the N input segments in an order based on the sequence of N non-consecutive numbers in the encoding key; as well as A speaker is caused to produce audio tones in an audio space based on the output signal.
17. The system of claim 16, wherein each of the N input segments is associated with a respective first position of the input segment of the N input segments, and wherein generating the output signal comprises: generating a rearranged sequence of the N input segments, wherein each input segment has a respective second position in the rearranged sequence, and the respective second position is based on a respective position of a number corresponding to the respective first position in the sequence of N non-consecutive numbers, Wherein the output signal is based on the rearranged sequence.
18. A system as claimed in claim 16, wherein the output signal has a frequency discontinuity at a boundary between a first output signal segment corresponding to a first input segment among the N input segments and a second output signal segment corresponding to a second input segment among the N input segments adjacent to the first output signal segment.
19. The system of claim 16, wherein the output signal includes at least one segment having a frequency range lower than a frequency range of a previous segment of the output signal.
20. The system of claim 16, wherein N is based on a length of the frequency swept signal and a predetermined length of each input segment.