Determination of spacial impulse responce via acoustic scrambling
Patent Information
- Application Number
- JP2024119326
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-07-31
- Filing Date
- 2024-07-25
- Publication Date
- 2025-02-13
AI Technical Summary
【0008】 先行技術と比較した開示技術の少なくとも1つの技術的利点は、開示技術を用いると、先行技術のテストオーディオ信号よりも人間のリスナーに混乱を与えないテストオーディオ信号を使用して室内インパルス応答が決定され得ることである。開示技術のテストオーディオ信号は、先行技術のテストオーディオ信号よりも人間のリスナーにとって快適でもある。開示技術のテストオーディオ信号は、また、音楽などの他の音とミキシングされて、テストオーディオ信号の混乱をさらに低減することができる。さらに、開示技術は、残響テールを維持することなく壁距離推定値を計算することと比較して正確な壁距離推定値が得られる距離範囲を改善する。これらの技術的利点は、先行技術のアプローチに対する1つまたは複数の技術的改善を表す。 本発明は、例えば、以下の項目を提供する。 (項目1) 空間インパルス応答を測定するための信号を生成するコンピュータ実施方法であって、 単調増加する周波数を有する周波数掃引信号を生成することと、 前記周波数掃引信号をN個の入力セグメントに分割することであって、前記N個の入力セグメントのそれぞれが、異なる周波数範囲を表す、前記分割することと、 N個の不連続数のシーケンスを有する符号化キーを生成することであって、前記シーケンス内の各数が1回出現する、前記生成することと、 前記符号化キーの前記N個の不連続数のシーケンスに基づいて、前記N個の入力セグメントのそれぞれを順番に選択することによって出力信号を生成することと、 前記出力信号に基づいて、スピーカーにオーディオ空間でオーディオトーンを生成させることと、 を含む、前記方法。 (項目2) 前記N個の入力セグメントの各入力セグメントが、前記N個の入力セグメントのうちの前記入力セグメントのそれぞれの第1の位置に関連付けられ、前記出力信号を生成することが、 前記N個の入力セグメントの再配置されたシーケンスを生成することであって、各入力セグメントが、前記再配置されたシーケンス内のそれぞれの第2の位置を有し、前記それぞれの第2の位置が、前記N個の不連続数のシーケンス内の前記それぞれの第1の位置に対応する数のそれぞれの位置に基づく、前記生成することを含み、 前記出力信号が、前記再配置されたシーケンスに基づく、上記項目に記載の方法。 (項目3) 前記出力信号が、前記N個の入力セグメントのうちの第1の入力セグメントに対応する第1の出力信号セグメントと、前記第1の出力信号セグメントに隣接する前記N個の入力セグメントのうちの第2の入力セグメントに対応する第2の出力信号セグメントとの間の境界において周波数に不連続性を有する、上記項目のいずれかに記載の方法。 (項目4) 前記出力信号が、前記出力信号の前のセグメントの周波数範囲よりも低い周波数範囲を有する少なくとも1つのセグメントを含む、上記項目のいずれかに記載の方法。 (項目5) Nが、前記周波数掃引信号の長さ及び各入力セグメントの所定の長さに基づく、上記項目のいずれかに記載の方法。 (項目6) 前記出力信号を生成することが、前記出力信号において、隣接する入力セグメントの各ペア間に所与の長さのサイレンス期間を含むことを含む、上記項目のいずれかに記載の方法。 (項目7) 前記出力信号を生成することが、 前記N個の入力セグメントの各セグメントにおいて、前記セグメントの開始フェードイン部分を、期間にわたって増加する振幅を有するフェードイン部分に変換すること、または 前記N個の入力セグメントの各セグメントにおいて、前記セグメントの終端で終了する前記セグメントの部分を、期間にわたって減少する振幅を有するフェードアウト部分に変換すること、 の1つまたは複数を含む、上記項目のいずれかに記載の方法。 (項目8) マイクロフォンを使用して、前記オーディオ空間で発生する音波に基づいて音響データをキャプチャすることと、 前記音響データに基づいて入力信号を生成することと、 前記入力信号をN個の受信セグメントに分割することであって、前記N個の受信セグメントのそれぞれが、異なる周波数範囲を表す、前記分割することと、 前記符号化キーの前記N個の不連続数のシーケンスに基づいて、前記N個の受信セグメントの各受信セグメントを順番に選択することによって復号信号を生成することであって、前記復号信号が、単調増加する周波数を有する、前記生成することと、 前記復号信号に基づいて空間インパルス応答を決定することと、 をさらに含む、上記項目のいずれかに記載の方法。 (項目9) 前記受信セグメントの前記周波数範囲に基づく周波数範囲を有するバンドパスフィルタを用いて、各受信セグメントをフィルタリングすることをさらに含む、上記項目のいずれかに記載の方法。 (項目10) 前記N個の受信セグメントの各受信セグメントのフェードイン部分及びフェードアウト部分を除去することをさらに含む、上記項目のいずれかに記載の方法。 (項目11) プログラム命令を記憶する1つまたは複数の非一時的コンピュータ可読媒体であって、前記プログラム命令が、1つまたは複数のプロセッサにより実行されると、前記1つまたは複数のプロセッサに、 単調増加する周波数を有する周波数掃引信号を生成するステップと、 前記周波数掃引信号をN個の入力セグメントに分割するステップであって、前記N個の入力セグメントのそれぞれが、異なる周波数範囲を表す、前記分割するステップと、 N個の不連続数のシーケンスを有する符号化キーを生成するステップであって、前記シーケンス内の各数が1回出現する、前記生成するステップと、 前記符号化キーの前記N個の不連続数のシーケンスに基づいて、前記N個の入力セグメントのそれぞれを順番に選択することによって出力信号を生成するステップと、 前記出力信号に基づいて、スピーカーにオーディオ空間でオーディオトーンを生成させるステップと、 を実行させる、前記1つまたは複数の非一時的コンピュータ可読媒体。 (項目12) 前記N個の入力セグメントの各入力セグメントが、前記N個の入力セグメントのうちの前記入力セグメントのそれぞれの第1の位置に関連付けられ、前記出力信号を生成するステップが、 前記N個の入力セグメントの再配置されたシーケンスを生成することであって、各入力セグメントが、前記再配置されたシーケンス内のそれぞれの第2の位置を有し、前記それぞれの第2の位置が、前記N個の不連続数のシーケンス内の前記それぞれの第1の位置に対応する数のそれぞれの位置に基づく、前記生成することを含み、 前記出力信号が、前記再配置されたシーケンスに基づく、上記項目のいずれかに記載の1つまたは複数の非一時的コンピュータ可読媒体。 (項目13) 前記出力信号が、前記N個の入力セグメントのうちの第1の入力セグメントに対応する第1の出力信号セグメントと、前記第1の出力信号セグメントに隣接する前記N個の入力セグメントのうちの第2の入力セグメントに対応する第2の出力信号セグメントとの間の境界において周波数に不連続性を有する、上記項目のいずれかに記載の1つまたは複数の非一時的コンピュータ可読媒体。 (項目14) 前記符号化キーが、少なくとも1つのランダム値にさらに基づく、上記項目のいずれかに記載の1つまたは複数の非一時的コンピュータ可読媒体。 (項目15) 前記符号化キー及び1つまたは複数の入力セグメント長を1つまたは複数の受信機デバイスに送信するステップをさらに含み、各入力セグメント長が、前記N個の入力セグメントのうちの入力セグメントの長さを示す、上記項目のいずれかに記載の1つまたは複数の非一時的コンピュータ可読媒体。 (項目16) システムであって、 命令を記憶する1つまたは複数のメモリと、 前記1つまたは複数のメモリに結合された1つまたは複数のプロセッサであって、前記命令を実行すると、 単調増加する周波数を有する周波数掃引信号を生成し、 前記周波数掃引信号をN個の入力セグメントに分割し、前記N個の入力セグメントのそれぞれが、異なる周波数範囲を表し、 N個の不連続数のシーケンスを有する符号化キーを生成し、前記シーケンス内の各数が1回出現し、 前記符号化キーの前記N個の不連続数のシーケンスに基づいて、前記N個の入力セグメントのそれぞれを順番に選択することによって出力信号を生成し、 前記出力信号に基づいて、スピーカーにオーディオ空間でオーディオトーンを生成させる、前記1つまたは複数のプロセッサと、 を備える、前記システム。 (項目17) 前記N個の入力セグメントの各入力セグメントが、前記N個の入力セグメントのうちの前記入力セグメントのそれぞれの第1の位置に関連付けられ、前記出力信号を生成することが、 前記N個の入力セグメントの再配置されたシーケンスを生成することであって、各入力セグメントが、前記再配置されたシーケンス内のそれぞれの第2の位置を有し、前記それぞれの第2の位置が、前記N個の不連続数のシーケンス内の前記それぞれの第1の位置に対応する数のそれぞれの位置に基づく、前記生成することを含み、 前記出力信号が、前記再配置されたシーケンスに基づく、上記項目のいずれかに記載のシステム。 (項目18) 前記出力信号が、前記N個の入力セグメントのうちの第1の入力セグメントに対応する第1の出力信号セグメントと、前記第1の出力信号セグメントに隣接する前記N個の入力セグメントのうちの第2の入力セグメントに対応する第2の出力信号セグメントとの間の境界において周波数に不連続性を有する、上記項目のいずれかに記載のシステム。 (項目19) 前記出力信号が、前記出力信号の前のセグメントの周波数範囲よりも低い周波数範囲を有する少なくとも1つのセグメントを含む、上記項目のいずれかに記載のシステム。 (項目20) Nが、前記周波数掃引信号の長さ及び各入力セグメントの所定の長さに基づく、上記項目のいずれかに記載のシステム。 (摘要) 開示される実施形態は、音響スクランブルを介して空間インパルス応答を決定するための技術を含む。これらの技術は、周波数掃引信号を生成するためのコンピュータ実施方法を含み、方法は、単調増加する周波数を有する周波数掃引信号を生成することと、周波数掃引信号をN個の入力セグメントに分割することであって、N個の入力セグメントのそれぞれが、異なる周波数範囲を表す、分割することと、N個の不連続数のシーケンスを有する符号化キーを生成することであって、シーケンス内の各数が1回出現する、生成することと、符号化キーのN個の不連続数のシーケンスに基づいて、N個の入力セグメントのそれぞれを順番に選択することによって出力信号を生成することと、出力信号に基づいて、スピーカーにオーディオ空間でオーディオトーンを生成させることと、を含む。
Smart Images

Figure 2025021446000001_ABST
Abstract
Description
[Technical field]
[0001] Field of the Disclosed Embodiments TECHNICAL FIELD Embodiments of the present disclosure relate generally to audio processing systems, and more particularly to techniques for determining spatial impulse responses using acoustic scrambling. [Background technology]
[0002] Audio systems often employ a variety of techniques to improve the audio quality and realism experienced by listeners of those audio systems. One such technique involves measuring how sound waves are affected by a particular acoustic space, such as a room, concert hall, or car cabin. Such techniques include calculating a room impulse response (RIR), which characterizes how sound waves from a source location are distorted as a result of the reflection of the sound waves from surfaces in the acoustic space. The RIR is the time-domain acoustic relationship between a sound source and a receiver in a given acoustic space, indicating the intensity of sound waves received by a microphone over time. Audio systems use the RIR to improve audio quality, such as by determining the appropriate positioning of speakers and by canceling echoes or other sounds that degrade audio quality.
[0003] The audio system can measure the RIR of the acoustic space during the system calibration phase. The RIR of the acoustic space is measured, for example, by using a speaker to generate a stimulus sound, such as a sine sweep or other frequency sweep, and using a microphone to capture the resulting sound waves transmitted and reflected through the acoustic space. The sine sweep may be an exponential sine sweep (ESS), in which the amplitude of the generated sound wave varies according to a sine wave to gradually increase in frequency over a period of time. The frequency generated in the sine sweep may vary from a low frequency, such as 20 Hz, to a high frequency, such as 20 kHz. This exemplary range corresponds to the range of frequencies that humans can hear. Sound waves travel in many directions, and each sound wave strikes 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 strikes an object, some part of the sound wave is absorbed, while some part of the sound wave is reflected. The reflected part of the sound wave travels through the acoustic space in a direction different from the direction of the original sound wave. The reflected portion may strike another object, again resulting in some absorption and some reflection of the sound wave. This process continues until the sound energy of the sound wave strikes an object and is completely absorbed, leaving most or no part of the sound wave reflected. The RIR represents the combined effect of absorption and reflection of all sound waves emanating from the speaker. A microphone can capture the reflected sound waves at a particular location in the acoustic space, and the captured sound waves can be used to determine the RIR of a particular location.
[0004] One drawback of the above approaches to generating RIRs is that the sound transmitted by the speaker when performing the frequency sweep is audibly perceptible to humans and may confuse or annoy any human listener who hears the frequency sweep. The audible frequency sweep is often perceived as a high-pitched sound similar to the siren of an ambulance or other emergency vehicle, and is unpleasant to the human auditory system. The audible frequency sweep may also confuse or distract any human listener who is in the vicinity of the speaker generating the frequency sweep sound. Generally, an audible volume level loud enough to allow a microphone to detect the frequency sweep sound is used with the transmitting speaker, so lowering the volume level is not a viable method of removing the audible frequency sweep.
[0005] As indicated above, improved techniques for determining room impulse responses using audio frequency sweeps would be useful. Summary of the Invention [Means for solving the problem]
[0006] Various embodiments of the present disclosure illustrate a computer-implemented method for generating a frequency swept signal. The method includes generating a frequency swept signal having a monotonically increasing frequency. The method further includes dividing the frequency swept signal into N input segments, each of the N input segments representing a different frequency range. The method further includes generating an encoding key having a sequence of N discrete numbers, each number in the sequence occurring once. The method further includes generating an output signal by selecting each of the N input segments in order based on the sequence of N discrete numbers of the encoding key. The method further includes causing a speaker to generate an audio tone in audio space based on the output signal.
[0007] Other embodiments include, but are not limited to, a system embodying one or more aspects of the disclosed technology and one or more computer-readable mediums containing instructions for carrying out one or more aspects of the disclosed technology.
[0008] At least one technical advantage of the disclosed technology over the prior art is that with the disclosed technology, a room impulse response may be determined using a test audio signal that is less disruptive to a human listener than the test audio signals of the prior art. The test audio signals of the disclosed technology are also more pleasant to a human listener than the test audio signals of the prior art. The test audio signals of the disclosed technology can also be mixed with other sounds, such as music, to further reduce the disruption of the test audio signal. Furthermore, the disclosed technology improves the distance range over which an accurate wall distance estimate is obtained compared to calculating a wall distance estimate without preserving the reverberation tail. These technical advantages represent one or more technical improvements over the prior art approaches. The present invention provides, for example, the following items. (Item 1) 1. A computer-implemented method for generating a signal for measuring a spatial impulse response, comprising the steps of: 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 a coding key having a sequence of N discontinuous numbers, each number in the sequence occurring once; generating an output signal by selecting each of the N input segments in turn based on the sequence of N discrete numbers of the encoding key; causing a speaker to generate an audio tone in an audio space based on the output signal; The method comprising: (Item 2) each input segment of the N input segments being associated with a respective first position of the input segment of the N input segments to generate the output signal; generating a rearranged sequence of the N input segments, each input segment having a respective second position in the rearranged sequence, the respective second positions being based on respective positions of numbers corresponding to the respective first positions in the sequence of N discrete numbers; 13. The method of claim 12, wherein the output signal is based on the rearranged sequence. (Item 3) 2. The method of claim 1, wherein the output signal has a discontinuity in frequency at a boundary between a first output signal segment corresponding to a first one of the N input segments and a second output signal segment corresponding to a second one of the N input segments adjacent to the first output signal segment. (Item 4) 2. The method of claim 1, 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. (Item 5) 2. The method of claim 1, wherein N is based on a length of the frequency sweep signal and a predetermined length of each input segment. (Item 6) 2. The method of claim 1, 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. (Item 7) generating the output signal; for each of the N input segments, converting a starting fade-in portion of the segment into a fade-in portion having an increasing amplitude over a period; or converting, for each of the N input segments, a portion of the segment that ends at an end of the segment into a fade-out portion having an amplitude that decreases over a period of time; The method according to any of the above items, comprising one or more of the following: (Item 8) capturing acoustic data based on sound waves generated in the audio space using a microphone; generating an input signal based on the acoustic data; Dividing the input signal into N receive segments, each of the N receive segments representing a different frequency range; generating a decoded signal by selecting each received segment of the N received segments in turn based on the sequence of N discrete numbers of the encoding key, the decoded signal having a monotonically increasing frequency; determining a spatial impulse response based on the decoded signal; The method according to any of the preceding claims, further comprising: (Item 9) 5. The method of claim 1, further comprising filtering each received segment with a bandpass filter having a frequency range based on the frequency range of the received segment. (Item 10) 13. The method of claim 12, further comprising removing fade-in and fade-out portions of each of the N received segments. (Item 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: 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 a coding key having a sequence of N discrete numbers, each number in the sequence occurring once; generating an output signal by selecting each of the N input segments in turn based on the sequence of N discrete numbers of the encoding key; causing a speaker to generate an audio tone in an audio space based on the output signal; The one or more non-transitory computer-readable media. (Item 12) each input segment of the N input segments being associated with a respective first position of the input segment of the N input segments, generating the output signal; generating a rearranged sequence of the N input segments, each input segment having a respective second position in the rearranged sequence, the respective second positions being based on respective positions of numbers corresponding to the respective first positions in the sequence of N discrete numbers; 2. The one or more non-transitory computer-readable media of any preceding item, wherein the output signal is based on the rearranged sequence. (Item 13) 11. The one or more non-transitory computer-readable media of any of the preceding items, wherein the output signal has a discontinuity in frequency 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. (Item 14) 13. The one or more non-transitory computer-readable media of any of the preceding items, wherein the encoding key is further based on at least one random value. (Item 15) The one or more non-transitory computer-readable media of any of the preceding items, further comprising transmitting the encoding key and one or more input segment lengths to one or more receiver devices, each input segment length indicating a length of an input segment among the N input segments. (Item 16) 1. A system comprising: one or more memories for storing instructions; one or more processors coupled to the one or more memories, which, 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 discrete numbers, each number in the sequence occurring once; generating an output signal by selecting, in order, each of the N input segments based on the sequence of the N discrete numbers of the coding key; the one or more processors causing a speaker to generate an audio tone in an audio space based on the output signal; The system comprising: (Item 17) each input segment of the N input segments being associated with a respective first position of the input segment of the N input segments to generate the output signal; generating a rearranged sequence of the N input segments, each input segment having a respective second position in the rearranged sequence, the respective second positions being based on respective positions of numbers corresponding to the respective first positions in the sequence of N discrete numbers; 2. The system of claim 1, wherein the output signal is based on the rearranged sequence. (Item 18) 13. The system of claim 12, wherein the output signal has a discontinuity in frequency 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. (Item 19) 2. The system of claim 1, 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. (Item 20) 2. The system of claim 1, wherein N is based on a length of the frequency sweep signal and a predetermined length of each input segment. (Summary) Disclosed embodiments include techniques for determining a spatial impulse response via acoustic scrambling, including a computer-implemented method for generating a frequency swept signal, the method including: generating a frequency swept 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 a coding key having a sequence of N discrete numbers, each number in the sequence occurring once; generating an output signal by sequentially selecting each of the N input segments based on the sequence of N discrete numbers of the coding key; and causing a speaker to generate an audio tone in audio space based on the output signal.
[0009] So that the manner in which the recited features of the one or more embodiments described above may be understood in detail, a more particular description of the one or more embodiments briefly summarized above may be made by reference to certain specific embodiments, some of which are illustrated in the accompanying drawings. It should be noted, however, that the accompanying drawings depict only typical embodiments and therefore should not be considered as limiting the scope in any manner, since the scope of the disclosure also encompasses other embodiments. [Brief description of the drawings]
[0010] [Figure 1] 1 illustrates a computing system configured to implement one or more aspects of various embodiments. [Diagram 2] 1 illustrates a computing system for generating a room impulse response using a modified frequency swept signal, according to various embodiments. [Diagram 3] 2 is a block diagram of the swept signal encoder module of FIG. 1 in accordance with various embodiments. [Figure 4] 2 is a block diagram of the swept signal decoder module of FIG. 1 in accordance with various embodiments. [Figure 5A] 4 illustrates a frequency swept signal divided into input segments according to various embodiments. [Figure 5B] 4 illustrates an output signal including a sequence of rearranged input segments according to various embodiments. [Figure 5C] 4A-4C show waveform diagrams of a sequence of rearranged input segments in accordance with various embodiments. [Figure 5D] 13A-13C show waveform diagrams of a sequence of rearranged input segments with effect in accordance with various embodiments. [Figure 5E] 1 illustrates a spectrogram display of a frequency swept signal divided into input segments, according to various embodiments. [Figure 5F] 1 illustrates a spectrogram representation of an output signal including rearranged input segments in accordance with various embodiments. [Figure 5G] 4 illustrates a spectrogram representation of a decoded signal including segments received in a decoding order determined based on an encoding key, in accordance with various embodiments. [Figure 5H] 1 illustrates a spectrogram display of a filtered segment generated from captured acoustic data using a bandpass filter, according to various embodiments. [Figure 5I] 4 illustrates a spectrogram representation of a decoded signal including filtered segments in a decoding order determined based on an encoding key, according to various embodiments. [Figure 6] 4 is a flow diagram of method steps for generating a modified frequency swept signal having segments in an order determined based on an encoding key, according to various embodiments. [Figure 7] 5 is a flow diagram of method steps for decoding a modified frequency swept signal and determining a spatial impulse response based on the decoded signal in accordance with various embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] In the following description, numerous specific details are set forth to provide a more thorough understanding of certain embodiments, however, it will be apparent to one of ordinary skill in the art that other embodiments may be practiced without one or more of these specific details or with additional specific details.
[0012] 1 illustrates a computing system 100 configured to implement one or more aspects of various embodiments. As illustrated, computing device 100 includes, but is not limited to, a processor 102, storage 104, an input / output (I / O) device interface 106, a network interface 108, an interconnect 110, and a system memory 112.
[0013] The processor 102 reads and executes programming instructions stored in the system memory 112. Similarly, the processor 102 stores and reads application data present in the system memory 112. The interconnect 110 facilitates the transmission of programming instructions, application data, and the like, between the processor 102, the I / O device interface 106, the storage 104, the network interface 108, and the system memory 112. The I / O device interface 106 is configured to receive input data from a user I / O device 122. Examples of the user I / O device 122 may include one or more buttons, a keyboard, a mouse, or other pointing device, and the like. 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 further 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 means 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 television 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 or a head up display (HUD) assembly, such as a VR / AR headset. Furthermore, the display device may project images onto one or more surfaces, such as a wall, a projection screen, or a vehicle windshield. Additionally or alternatively, the display device may project images directly into a user's eye (e.g., by retinal projection).
[0014] 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, and the like. Additionally, system memory 112 is included to represent random access memory generally. Storage 104 may be a disk drive storage device. Although storage 104 is shown as a single unit, it may 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 optical storage, a network attached storage (NAS), or a storage area network (SAN). Processor 102 communicates with other computing devices and systems via network interface 108, which is configured to transmit and receive data over a communications network.
[0015] The system memory 112 includes, but is not limited to, a sweep signal encoder module 132 and a sweep signal decoder module 134. The sweep signal encoder module 132 and the sweep signal decoder module 134, when executed by the processor 102, perform one or more operations associated with the techniques described herein. The sweep signal encoder module 132 converts a monotonically increasing frequency sweep signal, such as an ESS signal, into an output signal 152 by dividing the frequency sweep signal into segments and rearranging the segments into a sequence of rearranged input segments 150 such that there is a frequency discontinuity between each pair of adjacent rearranged input segments 150. In the rearranged input segments 150, each segment represents a frequency sweep that is a portion of the duration of the frequency sweep signal 212, and due to the frequency discontinuity at the boundary between the segments, there is an abrupt change in frequency at the boundary between each pair of segments. When referring to the sequence of input segments 142, and other sequences of segments herein, the word "sequence" is omitted for brevity.
[0016] The swept signal encoder module 132 generates the 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 included in the output signal 152, based on the input segments with effects 160. As an example, the output signal 152 may be in the same order as the rearranged input segments 150 and have the same frequencies as the input segments with effects 160. Alternatively, the output signal 152 may be in the same order as the input segments with effects 160 and have the same frequencies as the input segments with effects 160. The swept signal encoder module 132 provides the output signal 152 to a speaker in the acoustic space and causes the speaker to generate audio based on the output signal 152.
[0017] The audio generated by the speaker based on the output signal 152 propagates and reflects in the acoustic space. The microphone captures acoustic data based on sound waves that occur in the audio space as a result of the audio. The swept signal decoder module 134 generates an input signal based on the captured acoustic data, identifies portions of the input signal that correspond to portions of the output signal 152, and divides the input signal into a sequence of received segments 148. The swept signal decoder module 134 may generate a decoded signal 156 based on a sequence of decoded segments in an order that corresponds to the sequence of input segments 142 by performing a reverse mapping using the encoding key 144. The reverse mapping may include selecting each received segment of the received segments 148 in an order based on the encoding key 144.
[0018] Before reordering the received segments 148 to form the decoded signal 156, the swept signal decoder module 134 may use one or more bandpass filters to remove copies of the reverberant tails of the segments that are not in the same order as in the original signal. In some embodiments, the reverberant tails of the segments are reordered after removing frequencies outside the expected frequency range of the segments, so that the reordered segments include the reverberant tails. The bandpass filters convert the received segments 148 into filtered segments 154, and the swept signal decoder module 134 may generate the decoded signal 156 based on the filtered segments 154 in an order that corresponds to the sequence of the input segments 142 by performing an inverse mapping using the encoding key 144.
[0019] When performing operations associated with the swept signal encoder module 132, the processor 102 stores data in and retrieves data from a portion of the data store 140, such as the input segment 142, the encoding key(s) 144, the encoding parameters 146, the rearranged input segment 150, and the output signal 152. When performing operations associated with the swept signal decoder module 134, the processor 102 stores data in and retrieves data from a portion of the data store 140, such as the encoding key(s) 144, the received segment 148, the filtered segment 154, the decoded signal 156, and the spatial impulse response 158.
[0020] 2 illustrates a computing system for generating a room impulse response using a modified frequency swept signal, according to various embodiments. The computing device 100 includes a frequency swept signal generator module 210 that generates a frequency swept signal 212, such as an ESS signal or other signal that changes in frequency over time. The swept signal encoder module 132 receives the frequency swept signal 212, divides the frequency swept signal 212 into a sequence of N input segments 142, and rearranges the N input segments 142 into the sequence of N rearranged input segments 150 such that there is a frequency discontinuity between each pair of adjacent rearranged input segments 150. The number N may be specified by or derived from 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, with an abrupt change in frequency between each pair of segments due to the frequency discontinuity at the boundary between the segments. A modified frequency sweep signal using a sequence of discontinuous frequency sweep segments of shorter duration, specified by the sequence of rearranged input segments 150, may sound less disruptive and / or more pleasant to a human listener than a continuous frequency sweep signal of longer duration, due to the shorter duration of the sweeps and the relatively larger change in frequency between the sweeps. Although the N input segments 142 are of equal length (e.g., duration) (e.g., each 1 / N time units) in the embodiment described herein, in other embodiments, the N input segments 142 may include two or more segments of different lengths. When the input segments have different lengths, each of the different lengths may be, for example, a respective predetermined length in a list of predetermined lengths.
[0021] The order of the segments in the rearranged input segment 150 may be determined based on the encoding key 144. The encoding key 144 is a sequence of N numbers that identify the segments, where N is the number of segments in the input segment 142. The encoding key 144 specifies the modified order of the input segments 142 as a sequence of rearranged segment indexes that is a permutation of an initial order, such as an order in which the segment indexes are monotonically increasing (corresponding to the order of the segments in the input segment 142). The sweep signal encoder module 132 rearranges the input segments 142 into the modified order specified by the encoding key 144 to form the rearranged input segment 150. The encoding key 144 may include a sequence of N discontinuous random numbers, where no number is repeated. Alternatively, the encoding key 144 may start with the number 1 and end with the number N, in which case the sequence elements with indexes 2 through N-1 form a sequence of N-2 discontinuous random numbers, where no number is repeated. A sequence that starts with 1 and ends with N may be less confusing and / or more pleasant to a human listener than a sequence that starts and ends with other numbers of segments.
[0022] The swept signal encoder module 132 on the computing device 100 generates an output signal 152 based on the rearranged input segment 150 and causes a speaker to generate an audio tone in audio space based on the output signal 152. The same computing device 100 that generates the output signal 152 and causes a speaker to generate an audio tone may use the microphone 206 to capture acoustic data 216 based on sound waves generated in audio space as a result of the speaker generating the audio tone. The swept signal decoder module 134 on the computing device 100 may then convert the acoustic data 216 into a decoded signal 156 using the encoding key 144. The spatial impulse response generator 218 may convert the decoded signal 156 into a spatial impulse response 158.
[0023] The swept signal encoder module 132 may provide the encoding key 144 to the encoding key transmitter module 220. The encoding key transmitter module 220 may transmit the encoding key 144 to one or more other computing device(s) 100, for example, via a communication network. In the other computing device 100, the encoding key receiver module 222 may receive the encoding key 144 via the communication network and provide the encoding key 144 to the swept signal decoder module 134. The other computing device 100 may thereby decode acoustic data captured by the microphone 206 on the other computing device 100. The acoustic data captured by the microphone 206 on the other computing device may be based on sound waves generated in an audio space as a result of an audio tone generated by the speaker 204 based on the output signal 152.
[0024] 3 is a block diagram of the swept signal encoder module 132 of FIG. 1 in accordance with various embodiments. The swept signal encoder module 132 includes an input segment generator 310, a random number generator 302, an encoding key generator 306, a rearrangement segment generator 312, and an output signal generator 314. The input segment generator 310 receives a frequency swept signal 212 from the frequency swept signal generator module 210. The frequency swept signal 212 may be a monotonically increasing frequency swept signal, such as, for example, an ESS signal or other signal whose frequency changes over time.
[0025] The swept signal encoder module 132 converts the frequency swept signal 212 into an output signal 152 having a sequence of N segments, rearranging the segments to form a sequence of rearranged input segments 150 having a frequency discontinuity between each pair of adjacent segments. The resulting output signal 152 sounds less disruptive to a human listener and / or more pleasant to hear than the frequency swept signal 212 due to the shorter duration of the sweeps and the relatively larger change in frequency between sweeps in the output signal 152.
[0026] The input segment generator 310 divides the frequency swept signal 212 into N input segments 142. The number N may be specified by or derived from 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 swept signal 212 by a segment length 308, which specifies the length of each segment in units of time, such as milliseconds (ms). The segment length 308 may be, for example, 40 ms, and the length of the frequency swept signal 212 may be, for example, 200 ms.
[0027] The rearrangement segment generator 312 rearranges the N input segments 142 into a sequence of N rearrangement input segments 150 with a frequency discontinuity between each pair of adjacent rearrangement input segments 150. In some embodiments, at least one pair of adjacent rearrangement input segments 150 are contiguous in frequency (e.g., not separated by a discontinuity) and there is a frequency discontinuity between at least one other pair of adjacent rearrangement input segments 150. In some embodiments, the coding key 144 is a sequence of N discontinuous numbers having values selected from a range of 1 to N where no number is repeated. In some embodiments, the coding key 144 is a sequence of N random discontinuous numbers having values selected from a range of 1 to N where no number is repeated. In some embodiments, the coding key 144 is a sequence of numbers with the first and last numbers being 1 and N, respectively, and the numbers in the indexes 2 to N-1 form a sequence of discontinuous numbers having values selected from a range of 2 to N-1 where no number is repeated. In some embodiments, the numbers indices 2 through N are random, discrete numbers with values selected from the range 2 through N-1, where no number is repeated. A sequence starting with 1 and ending with N may be less confusing and / or more pleasant to a human listener than sequences starting and ending with other numbers.
[0028] An example of an encoding key 144 includes the sequence [1 4 3 2 5], where the portion of the sequence between the first and last elements is
[0432] , which is a sequence of discontinuous numbers. The sequence
[0432] is a sequence of discontinuous numbers because the numbers 4 and 3 are discontinuous, and the numbers 3 and 2 are discontinuous. A sequence that contains two consecutive numbers, such as [1, 2] or [2, 3], is not a valid encoding key 144. Other valid encoding keys 144 of length 5 that start with 1 and end with 5 include [1 2 4 3 5] and [1 3 2 4 5]. The encoding key 144 may be a sequence of non-sequential random numbers, so that a particular encoding key 144 of length 5 starting with 1 and ending with 5 may be either [1 4 3 2 5], [1 2 4 3 5], or [1 3 2 4 5], with the particular sequence being chosen randomly (e.g., each of the three possible valid sequences has an equal probability of being selected in generating the particular encoding key 144). Sequences of length 5 starting with 1 and ending 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 numbers 3 and 4, as well as 8 and 9.
[0029] The rearranged segment generator 312 may convert a sequence of input segments 142 into a sequence of rearranged input segments 150 using a mapping operation that determines a rearrangement order 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 in an order 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 number(s) 304 using a suitable algorithm. The random number(s) 304 may be generated by the random number generator 302.
[0030] 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 that identify segments within the input segments 142. The selection order may be a random order that meets an ordering criterion, such as a sequence of non-contiguous segment numbers where the first and last segments (e.g., with indexes 1 and N) of the input segments 142 are also the first and last segments of the rearranged input segments 150. For example, the encoding key 144 may be a sequence that has a 1 in the first element and an N in the Nth element.
[0031] 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 from 2 to N-1. The encoding key generator 306 randomly selects an available number from the sequence of available numbers, adds (e.g., appends) the randomly selected available number to the encoding key 144, and removes the randomly selected available number from the sequence of available numbers. The encoding key generator 306 then identifies available numbers, if any, that are in the sequence of available numbers and that are discontinuous with the terminal number of the encoding key. If there are no available numbers, the encoding key generator 306 randomly selects a different available number from the sequence of available numbers. Otherwise, the encoding key generator 306 adds the available number to the encoding key 144 and removes the available number from the sequence of available numbers. The encoding key generator 306 repeatedly performs the above operations until the encoding key 144 includes each number in the range from 2 to N-1.
[0032] The rearrangement segment generator 312 may add (e.g., append) each successive selected input segment 142 to the rearrangement input segment 150 in the order in which the input segments 142 were selected. The encoding key 144 may, for example, be a sequence of discontinuous numbers. The encoding key 144 may be a random key, for example, a random sequence of indices of the input segments 142 where the indices are discontinuous. The encoding key 144 may conform to the ordering criteria described above, for example, elements 1 and N of the sequence may have values 1 and N, and elements 2 through N-1 may be in a random sequence of discontinuous numbers with values selected from the range 2 through N-1.
[0033] The discrete numbers in the encoding key 144 are referred to as "elements" of the sequence. Each element in the sequence of discrete numbers has an associated index ranging from 1 to N, where N is the number of elements in the sequence. Each number in the encoding key 144 is associated with a source index that represents the position of that number in the encoding key 144. Additionally, each number in the encoding key 144 identifies a destination index (e.g., position) in the sequence of relocated input segments 150 to which the segment identified by the source index in the input segments 142 is mapped.
[0034] The rearranged segment generator 312 may provide the rearranged input segments 150 to the output signal generator 314, which generates an output signal 152 based on the rearranged input segments 150 and causes the speaker 204 to generate an audio tone in an audio space based on the output signal 152. Alternatively, the rearranged segment generator 312 may provide the rearranged input segments 150 to a fade and silence effect generator 316, which applies fade-in, fade-out, and / or silence period effects to the rearranged input segments 150. The fade and silence effect generator 316 generates a sequence of rearranged input segments 160 with effects, including fade-in, fade-out, and / or silence period effects. Before applying the fade-in and / or fade-out effects, each input segment of the rearranged input segments 150 has a predetermined amplitude A. Additionally, as discussed above, each input segment has a segment length 308 specified in units of time, such as milliseconds (ms).
[0035] The fade-in effect applied by the fade and silence effect generator 316 modifies the amplitude of an initial portion of each input segment to gradually increase from an initial value, such as 0 dB, to an amplitude A over a period referred to herein as the "fade-in length." The fade and silence effect generator 316 may use gain scaling to apply the fade-in effect over a period specified by the fade-in length and beginning at the beginning of each input segment. The fade-in length may be, for example, 25% of the segment length 308. For example, if the segment length 308 is 40 ms, then the fade-in length is 10 ms. The fade-out effect modifies the amplitude of a trailing portion of each input segment to gradually decrease from the amplitude A to an initial value (e.g., 0 dB) over a period referred to herein as the "fade-out length." The fade-out length is thus the length of the trailing portion. The trailing portion ends at the end of the input segment. The fade-out length may be, for example, 25% of the segment length 308, in which case the fade-out length is, for example, 10 ms.
[0036] The silence period effect applied by the fade and silence effect generator 316 inserts a silence period of 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 effects in which the input segments are separated by the silence length. The predefined silence length may be the same as the segment length 308, e.g., 40 ms. As an example, referring to Figures 5C and 5D, the fade and silence effect generator 316 may apply fade-in, fade-out, and silence period effects to the sequence of rearranged input segments 502 shown in Figure 5C to generate a sequence of input segment waveforms with the effect 506 shown in Figure 5D. The encoding key transmitter module 220 may also transmit the encoding key 144 to another computing device 100, as described herein with respect to Figure 2.
[0037] The swept 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 a speaker. The additional processing may include adding silence periods between each pair of segments in the rearranged input segments 150 and / or adding fade-in and / or fade-out effects to the beginning and / or end of each of the rearranged input segments 150. The duration of the silence periods and / or the duration of the fade-in and fade-out effects are specified by the encoding parameters 146.
[0038] As an example, the sweep signal encoder module 132 may map five input segments 142 having indexes "1, 2, 3, 4, 5" to five rearranged input segments 150 using an encoding key 144[1, 4, 3, 2, 5]. The encoding key 144[1, 4, 3, 2, 5] specifies that the input segment having index 1 ("input segment 1") is mapped to the rearranged input segment having 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. Thus, the resulting rearranged input segments 150 are "1, 4, 3, 2, 5."
[0039] The swept signal encoder module 132 generates an output signal 152 based on the rearranged input segments 150. For example, the output signal 152 may be in the same order as the rearranged input segments 150 and have the same frequencies as the rearranged input segments 150. The swept signal encoder module 132 provides the output signal 152 to a speaker 204 in the acoustic space and causes the speaker 204 to generate audio tones based on the output signal 152. Although embodiments are described herein with respect to signals having increasing frequencies and signal segments with successive higher frequency ranges, the techniques described herein are also applicable, with appropriate modifications, to signals having decreasing frequencies and signal segments with successive lower frequency ranges.
[0040] Figure 4 is a block diagram of the swept signal decoder module 134 of Figure 1 in accordance with various embodiments. The swept 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 acoustic data 216, which is based on sound waves generated in audio space as a result of the speaker 204 generating audio tones.
[0041] The received segment generator 402 generates an input signal (not shown) based on the captured acoustic data 216. To generate the input signal, the received segment generator 402 identifies a portion of the captured signal in the acoustic data 216 that corresponds to a portion of the output signal 152 provided to the speaker 204, causing the speaker 204 to generate an audio tone. As an example, referring to FIG. 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. The pattern matching technique may identify a similarity between a portion of the captured signal and a given alignment block pattern. The location (e.g., start time and / or end time) of the alignment block pattern in the captured signal identifies a location of the captured signal portion that corresponds to a portion of the output signal 152.
[0042] If effects such as fade-in, fade-out, and / or silence periods between segments are present in the captured signal, the receive segment generator 402 removes the effects from the captured signal. The fade-in and fade-out effects are removed by performing an inverse of the fade effect transformation performed by the effect generator 316, which modified the rearranged input segment 150 to include the 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 and silence effect generator 316. The inverse fade effect transformation 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 segment 150 had before the effects by the effect generator 316 were applied. The silence effects, which may be silence periods, are removed by identifying the silence periods between the segments 142 of the input signal and moving the segments 142 so that they are adjacent to one another. The silence period may be, for example, a portion of the signal having a frequency that is inaudible to humans, such as 0 Hz or other inaudible frequency. As an example, referring to FIG. 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 silence period 524 between each pair of segments 142 from the effected input segment waveform 506 produces a sequence of rearranged input segments 160 with effects, such as the sequence of rearranged input segments 150 shown in FIG. 5C. The received segment generator 402 then divides the input signal into a sequence of N received segments 148, each of which represents a different frequency range. N may be specified by the encoding parameters 146 and / or may be determined based on the segment length 308 specified by the encoding parameters 146.
[0043] The sweep 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 sweep signal decoder module 134 may convert the sequence of received segments 148 into a sequence of decoded segments using, for example, a reverse mapping operation. The reverse mapping operation may map the received segments 148 into the sequence of decoded segments by selecting each of the received segments 148 in an order based on the coding key 144. The sweep signal decoder module 134 may add (e.g., append) each selected received segment 148 to the sequence of decoded segments in the order in which the received segments 148 were selected. Each number in the coding key 144 identifies a destination index (e.g., position) in the sequence of received segments 148 to which the segment identified by the source index in the input segment 142 is mapped. To perform the reverse mapping from the order of the received segments 148 to the order of the input segments 142, the swept 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 (e.g., append) the selected received segment 148 to the sequence of decoded segments.
[0044] As an example, the received segment 148 may be "1, 4, 3, 2, 5" and the coding key 144 may be [1 4 3 2 5]. As described above, the coding key 144 [1 4 3 2 5] specifies that the input segment having index 1 ("input segment 1") is mapped to the rearranged input segment having 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 sweep signal decoder module 134 performs the reverse mapping by iterating through the segment numbers in the coding key 144. Because the first segment number (index=1) in the coding key 144 is 1, the sweep signal decoder module 134 selects the received segment 148 having index=1, which is the first received segment 148 (having segment number=1) in the sequence of received segments 148. The segment number "1" is added to the sequence of decoded segments.
[0045] Moving to the next segment number in the coding key 144, the swept 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, because the second segment number (index=2) of the coding key 144 is 4. The segment number "2" is added to the sequence of decoded segments. The swept signal decoder module 134 continues by iterating through the third, fourth, and fifth segment numbers of the coding key 144 and selecting the respective received segments 148 with indexes 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 as the input segments 142 before they were rearranged. The swept signal decoder module 134 generates a decoded signal 156 based on the sequence of decoded segments and uses the decoded signal 156 to determine a spatial impulse response 158.
[0046] The sweep signal decoder module 134 may be located on the same computing device 100 as the sweep signal encoder module 132, in which case the sweep signal decoder module 134 may access the encoding key 144 and the value of N via a shared memory or receive the encoding key 144 and / or the value of N from the sweep signal encoder module 132. Alternatively or additionally, the sweep signal decoder module 134 may be located on a different computing device than the sweep signal encoder module 132, in which case the sweep signal encoder module 132 may send the encoding key 144 and / or the value of N to the sweep signal decoder module 134 on the different computing device via network communications. As another alternative, the encoding key 144 and / or the value of N may be provided to the different computing device in the encoding parameters 146, for example when the audio system is configured.
[0047] Sound waves generated in the audio space as a result of the audio produced by the speaker include reverberation of the audio tones, which persist for some time after the segments of the audio tones have been produced. When a sequence of received segments 148 is decoded to form a sequence of decoded segments of a decoded signal 156, portions of the reverberant tails from other segments included in the received segments 148 are moved as portions of the moved segments during reordering of the received segments 148 to form the decoded signal 156. Thus, the generated reordered signal has segments that include portions of the tails from previous segments that are out of order.
[0048] The optional filtered segment generator 404 receives a sequence of received segments 148 and may use a bandpass filter to remove copies of the reverberation tails of the segments that are not in the same order as in the original signal before the received segments 148 are reordered to form the decoded signal 156. The filtered segment generator 404 generates a sequence of filtered segments 154. In some embodiments, the reverberation tails of the segments are reordered after removing frequencies outside the expected frequency range of the segments, so that the reordered segments include the reverberation tails. With reference to Figures 5F and 5G, if the filtered segment generator 404 (including the bandpass filter) is not used and the received segments 148 are passed to the decoded signal generator 406, the decoded signal generator 406 shifts a vertical slice of the signal that 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 moved from a time range between T2 and T3 to a time range between T4 and T5 by shifting a vertical slice of the signal. As a result, a portion of the reverberation tail 504D is not moved and is in the resulting signal at an earlier time than the segment 504D that caused the reverberation tail. Each reverberation tail 504 corresponding to each segment 502 may be maintained during reordering by using a filtered segment generator 404, which includes a bandpass filter that removes the reverberation tail (e.g., 504D) of other segments from each segment (e.g., the segment between T3 and T4). Furthermore, the filtered segment generator 404 may remove the reverberation tail portion (e.g., 504C) of other segments in the same slice as the segment (e.g., 502B) when moving a vertical slice (e.g., the slice between T4 and T5 to the time segment between T2 and T3). Using the filtered segment generator 404, the resulting decoded signal 156 shown in FIG. 5I maintains the reverberation tail 504.The decoded signal 156 generated when the filtered segment generator 404 is used provides improved room impulse response results. For example, when the longer reverberation tail is preserved using the decoded signal 156 generated based on the results of the filtered segment generator 404, the wall distance estimate determined using the decoded signal 156 is up to approximately twice as accurate as the distance from the computing device 100 to the wall compared to the decoded signal 156 generated without the bandpass filtering performed by the filtered segment generator 404.
[0049] The bandpass filter(s) used by the filtered segment generator 404 convert the received segments 148 into filtered segments 154, and the swept signal decoder module 134 may generate a decoded signal 156 based on the filtered segments 154 in an order corresponding to the sequence of the input segments 142 by performing an inverse mapping using the coding key 144. The decoded signal generator 406 may receive the filtered segments 154 and generate a decoded signal 156 based on the filtered segments 154. The decoded signal generator 406 may use the coding key 144 received from the coding key receiver module 222 by selecting each of the N filtered segments in an order based on the sequence of the discrete numbers in the coding 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.
[0050] FIG. 5A illustrates a frequency swept signal divided into input segments 142, according to various embodiments. The frequency swept signal includes a sequence of input segments 142, including input segments 142A, 142B, 142C, 142D, and 142E. As illustrated, the frequency of the sequence of input segments 142 increases linearly over time on a logarithmic frequency scale. The length of each input segment 142A-E is specified by a segment length 308. For example, input segment 142A begins at time T1 and ends at time T2. The difference between times T2 and T1 is the segment length 308. Input segment 142B spans from time T2 to time T3. Input segment 142C spans from time T3 to time T4. Input segment 142D spans from time T4 to time T5. Input segment 142E spans from time T5 to time T6.
[0051] 5B illustrates an output signal including a sequence of rearranged input segments 150, according to various embodiments. The sequence of rearranged segments 150 is generated by rearranging the sequence of input segments 142 of FIG. 5A using the encoding key 144 of [1 4 3 2 5]. The rearranged input segments 150 are generated by the rearranged segment generator 312 of FIG. 3. As seen in FIG. 5B, the input segment 142A is in a first time range between T1 and T2. The input segment 142A is also in a first time range in FIG. 5A, as specified by the number "1" of the first element of the encoding key 144.
[0052] The input segment 142D (fourth segment) has moved from a fourth time range (between T3 and T4) to a second time range between T2 and T3, as specified by the number "4" in the encoding key 144. The input segment 142C (third segment) has not moved and is in a third time range (between T4 and T4 in FIG. 5A and between T3 and T4 in FIG. 5B), as specified by the number "3" in the encoding key 144. The input segment 142B (second segment) has moved from a second time range (between T2 and T3) to a fourth time range (between T4 and T5). The input segment 142E (fifth segment) has not moved and is still in a fifth time range (between T5 and T6), as specified by the number "5" in the encoding key 144.
[0053] FIG. 5C shows a waveform diagram of a sequence of rearranged input segments 150, according to various embodiments. In the waveform diagram, the x-axis represents time and the y-axis represents the amplitude of a frequency sweep signal. The frequency sweep signal is divided into input segments 142. The input segments 142 have been rearranged and are in the order shown in FIG. 5B. The signal may be an exponential sine-wave sweep signal whose frequency increases over time. An exponential sine-wave sweep signal is a sine wave that appears as a rectangle due to the scale used in FIG. 5C, and the individual waves cannot be visually discerned. 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.
[0054] 5D shows a waveform diagram of a sequence of rearranged input segments with effects 506 according to various embodiments. The input segment with effects waveform 506 includes waveform representations of modified input segments 542A, 542B, 542C, 542D, and 542E. The fade and silence effect generator 316 generates the input segment with effects waveform 506 by applying fade-in, fade-out, and silence 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 over a period specified by the fade-in length. The modified input segments start at time T1 and end 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.
[0055] The fade-out effect modifies the amplitude of the trailing portion of each input segment to gradually decrease from amplitude A to an initial value (e.g., 0 dB) over a period specified by the fade-out length. The fade-out effect 522 is the trailing portion of the modified input segment 542A. The fade-out effect 522 starts at time T2-f and ends at time T2, which is the fade-out length, which in this example is equal to the fade-in length. The fade-out length may be, for example, 25% of the segment length 308. The silence period effect applied by the fade and silence effect generator 316 inserts a silence period of a predefined silence 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 with effects 160, where the input segments are separated by silence periods 524 and each segment has a fade-in effect 520 and a fade-out effect 522.
[0056] FIG. 5E illustrates a spectrogram display 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 generated by the input segment generator 310 of FIG. 3. The first input segment 502A spans from time T1 to time T2. The second input segment 502B spans from time T2 to time T3. The third input segment 502C spans from time T3 to time T4. The fourth input segment 502D spans from time T4 to time T5. The fifth input segment 502E spans from time T5 to time T6. The frequency swept signal increases in frequency over time and includes a reverberant tail 504.
[0057] 5F illustrates a spectrogram representation of an output signal including a sequence of rearranged input segments 150, according to various embodiments. The individual rearranged segments 502A-502E illustrated in FIG. 5F are the same as those illustrated in FIG. 5E, but in a different order. The sequence of rearranged segments 150 is generated by rearranging the sequence of segments 142 of FIG. 5E using the encoding key 144 of [1 4 3 2 5]. The sequence of rearranged input segments 150 is generated by the rearranged segment generator 312 of FIG. 3.
[0058] As seen in FIG. 5F, segment 502A is in a first time range between T1 and T2. Segment 502A is also in a first time range in FIG. 5E, as specified by the number "1" of the first element of encoding key 144. Segment 502A has a reverberant tail 504A. Segment 502D (fourth segment) has moved from a fourth time range (between T4 and T5) to a second time range between T2 and T3, as specified by the number "4" in encoding key 144. Segment 502D has a reverberant tail 504D. Segment 502C (third segment) has not moved and is in a third time range (between T4 and T4 in FIG. 5E, between T3 and T4 in FIG. 5F), as specified by the number "3" in encoding key 144. Segment 502C has a reverberant tail 504C. Segment 502B (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 reverberant tail 504B. Segment 502E (fifth segment) has not moved and is still in the fifth time range (between T5 and T6). Segment 502E has a reverberant tail 504E.
[0059] FIG. 5G illustrates a spectrogram display of a decoded signal including received segments 502 in a decoded order determined based on the encoding key, according to various embodiments. The segments 502 have been moved to their original order along the horizontal (time) axis from segment 502A to segment 502E. As a result of moving the segments 502 to different positions along the time axis, some portions of the reverberation tail 504 are located earlier in time than the corresponding segments 502 of the received sweep signal. For example, tail portion 504C has been moved to an earlier time than segment 502C. These anti-causal results arise because signal portions at frequencies above a particular segment 502, such as the frequency of the reverberation tail 504C, are moved as part of a vertical slice of the graph when the rearranged input segments 150 are rearranged to their original order to form the decoded signal 156. For example, the slice between T4 and T5 (shown in FIG. 5F) includes the reverberation tail 504C. The slices are moved to the time range between T2 and T3 to form the graph shown in FIG. 5G, whereby a portion of tail 504C is moved to the time range between T2 and T3 earlier in time than segment 502C. However, segment 502C comes before tail 504C because segment 502C caused 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 can be removed using bandpass filters that attenuate frequencies above and below each segment 502 and the corresponding reverberation tail 504, as described herein.
[0060] FIG. 5H illustrates a spectrogram display of filtered segments 502 generated from captured acoustic data using a bandpass filter, according to various embodiments. Each segment 502 is shown on a separate graph for clarity. A first segment 502A begins at time T1 and extends along the time axis to the end of the reverberant tail. The bandpass filter is shown as rectangular region 510A, which attenuates frequencies above the first segment 502A, and rectangular region 510B, which attenuates frequencies below the first segment 502A. The bandpass filter removes the other segments 502B-502E and their corresponding tails 504B-504E. Similarly, frequencies above and below segment 502D, which begins at time T2, are removed by the bandpass filter and are shown as rectangular regions 512A and 512B.
[0061] Additionally, frequencies above and below segment 502C beginning at time T3 are bandpass filtered out and are shown as rectangular regions 514A and 514B. Frequencies above and below segment 502B beginning at time T4 are bandpass filtered out and are shown as rectangular regions 516A and 516B. Frequencies below segment 502E beginning at time T5 are bandpass filtered out and are shown as rectangular region 518.
[0062] FIG. 5I illustrates a spectrogram display of a decoded signal 156 including filtered segments 502A-502E in a decoding 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 decoding 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 tails 504 corresponding to segments 502 are preserved during reordering because the bandpass filters illustrated in FIG. 5I maintain the reverberation tails 504 along with their corresponding segments 502.
[0063] 6 is a flow diagram 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. Although the method steps are described in conjunction with the systems of FIGS. 1-5I, one of ordinary skill 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.
[0064] As shown, method 600 begins at step 602 where the 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 in which the frequency of the signal increases monotonically over time.
[0065] At step 604, the computing device 100 divides the frequency swept signal into N input segments, each of the N input segments representing a different frequency range. Each input segment has a segment length 308. For example, if the frequency of the frequency swept signal increases over time from 1 kHz to 6 kHz and there are five pulses, the first pulse is 1-2 kHz, the second is 2-3 kHz, the third is 3-4 kHz, the fourth is 4-5 kHz, and the fifth is 5-6 kHz. An exemplary frequency swept signal divided into input segments 142A-142E is shown in FIG. 5A.
[0066] At step 606, the computing device 100 optionally includes, in the N input segments, a silence period having a given silence period length after each input segment. Step 606 may apply a silence effect to the sequence of input segments 142, as described herein with reference to Figure 3. The silence periods inserted in the frequency swept signal between each pair of adjacent segments may facilitate identification of individual segments in the signal received by the microphone, for example by step 706 of the flowchart of Figure 7.
[0067] At step 608, the computing device 100 adds fade-in and fade-out effects having respective fade-in and fade-out duration lengths to each input segment. At step 616, the fade-in and fade-out effects are applied to the input segments to prevent popping sounds at the speaker 204 when the speaker generates audio based on the output signal 152 based on the input segment 142. The computing device 100 may use gain scaling to apply the fade-in effect to each input segment of the frequency sweep signal for a period specified by the fade-in length and beginning at the beginning of each input segment. The fade-in length may be a parameter, e.g., a predetermined value such as 25% of the segment length 308. By applying the fade-in effect, the amplitude of the initial portion of each input segment is modified to gradually increase from an initial value, such as 0 dB, to the amplitude of the frequency sweep signal generated at step 602. The computing device 100 may also use gain scaling to apply a fade-out effect to the trailing portion of each input segment of the frequency sweep signal over a 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 an initial value (e.g., 0 dB) over the period specified by the fade-out length parameter.
[0068] In step 610, the computing device 100 generates an encoding key having a sequence of N discontinuous numbers, with each number in the sequence appearing once. The encoding keys may be generated based on random numbers, whereby different encoding keys are used at different times. As an example, to generate the encoding key 144, in step 610 the computing device 100 initializes the encoding key 144 to an empty sequence and generates a sequence of available numbers that initially includes the numbers 2 through N-1. The computing device 100 randomly selects an available number from the sequence of available numbers, adds (e.g., appends) the randomly selected available number to the encoding key 144, and removes the randomly selected available number from the sequence of available numbers. The computing device 100 then identifies the number, if any, that is in the sequence of available numbers and that is a termination number of the encoding key and a discontinuous available number. If there is no available number, the computing device 100 randomly selects a different available number 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 performs the above operations repeatedly until the encoder key 144 includes every number in the range from 2 to N-1.
[0069] At step 612, the computing device 100 transmits the key to one or more receiver devices. The key may be transmitted to the receiver devices via a communication network, for example. At step 614, the computing device 100 generates the output signal 152 by selecting each of the N input segments in an order based on the sequence of the discrete 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, each input segment having a respective second position in the rearranged sequence, the respective second position being based on the respective number in the sequence of the N discrete numbers. Further, each number has a position in the sequence of the N discrete numbers that corresponds to the first position of the input segment among the N input segments, and the output signal 152 is based on the rearranged sequence. The position of each number in the sequence of the N discrete numbers is determined based on the first position of the input segment among the N input segments. At step 616, the computing device 100 causes a speaker to generate an audio tone in an audio space based on the output signal 152.
[0070] 7 is a flow diagram 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. Although the method steps are described in conjunction with the systems of FIGS. 1-5I, one of ordinary skill 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.
[0071] As shown, method 700 begins at step 702, where computing device 100 uses a microphone to capture acoustic data based on sound waves occurring in an audio space. The sound waves occur as a result of audio tones generated by a speaker in the audio space based on an output signal 152, such as that generated in step 616 of FIG. 6.
[0072] At step 704, the computing device 100 generates an input signal based on the acoustic data. For example, referring to FIG. 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. The pattern matching technique may identify a similarity between a portion of the captured signal and a given alignment block pattern. The location (e.g., start time and / or end time) of the alignment block pattern within the captured signal identifies a location of the captured signal portion that corresponds to a portion of the output signal 152.
[0073] At step 706, the computing device 100 divides the input signal into N receive segments, each of which represents a different frequency range, where N may be specified by the encoding parameters 146 and / or may be determined based on the segment length 308 specified by the encoding parameters 146.
[0074] At step 708, the computing device 100 removes silence periods, face-in effects, and fade-out effects from the N received segments. If effects such as fade-ins, fade-outs, and / or silence periods between segments are present in the captured signal, the received segment generator 402 removes the effects from the captured signal as described herein with respect to FIG.
[0075] At step 710, the computing device 100 determines whether reverberation tail filtering should be performed. Reverberation tail filtering is optional and is performed, for example, if a corresponding configuration option for reverberation tail filtering is enabled.
[0076] If, at step 710, it is determined that reverberation tail filtering is not performed, then, at step 712, the computing device 100 generates a decoded signal by selecting each received segment of the N received segments in an order based on an encoding key. The encoding key may be received, for example, from a transmitter device.
[0077] If it is determined in step 710 that reverberation tail filtering is performed, then in step 714 the computing device 100 generates N filtered segments by filtering each of the received segments using a bandpass filter, the sequence of the N filtered segments being in an order based on the coding key, and in step 716 the computing device 100 generates the decoded signal by selecting each filtered segment of the N received segments in an order based on the coding key. The coding key 144 specifies the order in which the input segments 142 are selected. The selection order is specified as a sequence of segment numbers that identify segments within the input segments 142.
[0078] To generate the decoded signal by selecting each received segment, the computing device may generate N filtered segments, each filtered segment generated by filtering a respective 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 the sequence of discrete numbers of the encoding key. In step 712, the computing device 100 determines a spatial impulse response based on the decoded signal using a suitable technique.
[0079] In summary, a computer-based audio system generates a room impulse response by converting a given signal (e.g., a frequency swept signal or an exponential sine wave sweep) into a modified signal in which segments from the 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 generate an audio tone based on the modified signal. A microphone in the acoustic space captures acoustic data based on sound waves generated in the room in response to the speaker-generated audio tones. The audio system then identifies segments in the captured acoustic data and generates a reordered signal in which the segments are in the same order as the original given signal. The RIR is then determined from the given signal and the reordered signal. The sound waves include reverberations of the audio tones, and the reverberations continue for a time after the segment of the modified signal that causes the reverberation. To remove copies of the reverberation tail of the received segments that are not in the same order as the original signal, each segment is band-pass filtered before being reordered into the reordered signal. In some embodiments, frequencies outside the expected frequency range of the received segment are removed by a bandpass filter and the reverberant tail is preserved while reordering the received segment, such that the decoded signal includes the reverberant tail.
[0080] At least one technical advantage of the disclosed technology compared to the prior art is that with the disclosed technology, a room impulse response may be determined using a test audio signal that is less disruptive to a human listener than the test audio signal of the prior art. The test audio signal of the disclosed technology is also more pleasant to a human listener than the test audio signal of the prior art. The test audio signal of the disclosed technology may also be mixed with other sounds, such as music, to further reduce disruption of the test audio signal. Furthermore, frequencies outside the expected frequency range of the received segment are removed by a bandpass filter, and the reverberation tail is maintained while reordering the received segment, whereby the decoded signal includes the reverberation tail, significantly improving the distance range over which an accurate wall distance estimate is obtained compared to calculating the wall distance estimate without maintaining the reverberation tail. These technical advantages represent one or more technical improvements over the prior art approach.
[0081] 1. In some embodiments, a computer-implemented method for generating a signal for measuring a spatial impulse response includes generating a frequency swept 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 a coding key having a sequence of N discrete numbers, each number in the sequence occurring once; generating an output signal by selecting each of the N input segments in order based on the sequence of N discrete numbers of the coding key; and causing a speaker to generate an audio tone in audio space based on the output signal.
[0082] 2. The method of claim 1, wherein each input segment of the N input segments is associated with a respective first position of the input segment among the N input segments, and generating the output signal includes generating a rearranged sequence of the N input segments, each input segment having a respective second position in the rearranged sequence, the respective second positions being based on respective positions of numbers corresponding to the respective first positions in the sequence of N discrete numbers, and the output signal is based on the rearranged sequence.
[0083] 3. The method of claim 1 or 2, wherein the output signal has a discontinuity in frequency 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.
[0084] 4. The method of any of clauses 1-3, 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.
[0085] 5. The method of any of clauses 1 to 4, wherein N is based on the length of the frequency sweep signal and the predetermined length of each input segment.
[0086] 6. A method according to any of clauses 1 to 5, wherein generating the output signal includes including, in the output signal, a silence period of a given length between each pair of adjacent input segments.
[0087] 7. A method as described in any of clauses 1 to 6, wherein generating the output signal includes one or more of: for each of the N input segments, converting a starting fade-in portion of the segment into a fade-in portion having an amplitude that increases over time; or for each of the N input segments, converting a portion of the segment that ends at an end of the segment into a fade-out portion having an amplitude that decreases over time.
[0088] 8. The method of any of clauses 1-7, further comprising: capturing acoustic data based on sound waves generated in the audio space using a microphone; generating an input signal based on the acoustic data; dividing the input signal into N receive segments, each of the N receive segments representing a different frequency range; generating a decoded signal by selecting each receive segment of the N receive segments in turn based on a sequence of the N discrete numbers of the encoding key, the decoded signal having a monotonically increasing frequency; and determining a spatial impulse response based on the decoded signal.
[0089] 9. The method of any of clauses 1-8, further comprising filtering each received segment with a bandpass filter having a frequency range based on the frequency range of the received segment.
[0090] 10. The method of any of clauses 1-9, further comprising removing fade-in and fade-out portions of each received segment of the N received segments.
[0091] 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 swept 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 a coding key having a sequence of N discrete numbers, each number in the sequence occurring once; generating an output signal by selecting each of the N input segments in order based on the sequence of N discrete numbers of the coding key; and causing a speaker to generate an audio tone in audio space based on the output signal.
[0092] 12. One or more non-transitory computer-readable media as described in clause 11, wherein each input segment of the N input segments is associated with a respective first position of the input segment among the N input segments, and the step of generating the output signal includes generating a rearranged sequence of the N input segments, each input segment having a respective second position in the rearranged sequence, the respective second positions being based on a respective position of a number corresponding to the respective first position in the sequence of N discontinuous numbers, and the output signal is based on the rearranged sequence.
[0093] 13. One or more non-transitory computer-readable media of clause 11 or clause 12, wherein the output signal has a discontinuity in frequency 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.
[0094] 14. One or more non-transitory computer-readable media according to any of clauses 11-13, wherein the encoding key is further based on at least one random value.
[0095] 15. One or more non-transitory computer-readable media described in any of clauses 11 to 14, wherein the step further includes a step of transmitting the encoding key and one or more input segment lengths to one or more receiver devices, each input segment length indicating a length of an input segment among the N input segments.
[0096] 16. A system comprising: one or more memories storing instructions; and one or more processors coupled to the one or more memories, the one or more processors, when executing the instructions, generate a frequency swept signal having a monotonically increasing frequency, divide the frequency swept signal into N input segments, each of the N input segments representing a different frequency range, generate a coding key having a sequence of N discrete numbers, each number in the sequence occurring once, generate an output signal by selecting each of the N input segments in order based on the sequence of N discrete numbers of the coding key, and cause a speaker to generate an audio tone in audio space based on the output signal.
[0097] 17. The system of clause 16, wherein each input segment of the N input segments is associated with a respective first position of the input segment among the N input segments, and generating the output signal includes generating a rearranged sequence of the N input segments, each input segment having a respective second position in the rearranged sequence, the respective second positions being based on a respective position of a number corresponding to the respective first position in the sequence of N discrete numbers, and the output signal is based on the rearranged sequence.
[0098] 18. The system of clause 16 or clause 17, wherein the output signal has a discontinuity in frequency 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.
[0099] 19. A system described in any of clauses 16-18, 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.
[0100] 20. A system as described in any of clauses 16 to 19, wherein N is based on the length of the frequency sweep signal and the predetermined length of each input segment.
[0101] Any and all combinations, in any manner, of any claim elements recited in any claim and / or any elements described in this application are within the intended scope of the disclosure and protection.
[0102] The description of various embodiments has been presented for purposes of illustration and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments.
[0103] Aspects of the present embodiments may be embodied as a system, method, or computer program product. Accordingly, aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, all of which may be generally referred to herein as a "module" or "system." Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied therein.
[0104] Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. The computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (non-exhaustive list) of computer readable storage media shall include an electrical connection having one or more wires, a portable computer diskette, 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 can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.
[0105] Aspects of the present disclosure are described above with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present disclosure. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, a special purpose computer, or other programmable data processing apparatus to manufacture a machine, such that the instructions, which execute via a processor of the computer or other programmable data processing apparatus, enable implementation of the function / operation specified in the block or blocks of the flowchart illustrations and / or block diagrams. Such a processor may be, but is not limited to, a general purpose processor, a special purpose processor, an application specific processor, or a field programmable gate array.
[0106] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of code that includes one or more executable instructions for implementing the specified logical function(s). It should also be noted that in some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that executes the specified functions or operations, or a combination of dedicated hardware and computer instructions.
[0107] While the forgoing is directed to embodiments of the present disclosure, other and further embodiments of the present disclosure may be devised without departing from the basic scope thereof, which scope is determined by the appended claims.
Claims
1. 1. A computer-implemented method for generating a signal for measuring a spatial impulse response, comprising the steps of: 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 a coding key having a sequence of N discontinuous numbers, each number in the sequence occurring once; generating an output signal by selecting each of the N input segments in turn based on the sequence of N discrete numbers of the coding key; causing a speaker to generate an audio tone in an audio space based on the output signal; The method comprising:
2. each input segment of the N input segments being associated with a respective first position of the input segment of the N input segments to generate the output signal; generating a rearranged sequence of the N input segments, each input segment having a respective second position in the rearranged sequence, the respective second positions being based on respective positions of numbers corresponding to the respective first positions in the sequence of N discrete numbers; The method of claim 1 , wherein the output signal is based on the rearranged sequence.
3. 2. The method of claim 1 , wherein the output signal has a discontinuity in frequency at a boundary between a first output signal segment corresponding to a first one of the N input segments and a second output signal segment corresponding to a second one of the N input segments adjacent to the first output signal segment.
4. The method of claim 1 , wherein the output signal includes at least one segment having a frequency range that is 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 sweep signal and a predetermined length of each input segment.
6. The method of claim 1 , 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.
7. generating the output signal; converting, for each of the N input segments, a starting fade-in portion of the segment into a fade-in portion having an increasing amplitude over a period; or converting, for each of the N input segments, a portion of the segment that ends at an end of the segment into a fade-out portion having an amplitude that decreases over a period of time; The method of claim 1 , comprising one or more of:
8. capturing acoustic data based on sound waves generated in the audio space using a microphone; generating an input signal based on the acoustic data; Dividing the input signal into N receive segments, each of the N receive segments representing a different frequency range; generating a decoded signal by selecting each received segment of the N received segments in turn based on the sequence of N discrete numbers of the encoding key, the decoded signal having a monotonically increasing frequency; determining a spatial impulse response based on the decoded signal; The method of claim 1 further comprising:
9. The method of claim 8 , further comprising filtering each received segment with a bandpass filter having a frequency range based on the frequency range of the received segment.
10. The method of claim 8 , further comprising removing a fade-in portion and a fade-out portion of each of the N received segments.
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: 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 a coding key having a sequence of N discontinuous numbers, each number in the sequence occurring once; generating an output signal by selecting each of the N input segments in turn based on the sequence of N discrete numbers of the coding key; causing a speaker to generate an audio tone in an audio space based on the output signal; The one or more non-transitory computer-readable media.
12. each input segment of the N input segments being associated with a respective first position of the input segment of the N input segments, generating the output signal; generating a rearranged sequence of the N input segments, each input segment having a respective second position in the rearranged sequence, the respective second positions being based on respective positions of numbers corresponding to the respective first positions in the sequence of N discrete numbers; The one or more non-transitory computer-readable media of claim 11 , wherein the output signal is based on the rearranged sequence.
13. 12. The one or more non-transitory computer-readable media of claim 11, wherein the output signal has a discontinuity in frequency 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. 12. 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. 12. The one or more non-transitory computer-readable media of claim 11, further comprising transmitting the encoding key and one or more input segment lengths to one or more receiver devices, each input segment length indicating a length of an input segment among the N input segments.
16. 1. A system comprising: one or more memories for storing instructions; one or more processors coupled to the one or more memories, which, 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 a coding key having a sequence of N discontinuous numbers, each number in the sequence occurring once; generating an output signal by selecting, in order, each of the N input segments based on the sequence of N discrete numbers of the coding key; the one or more processors causing a speaker to generate an audio tone in an audio space based on the output signal; The system comprising:
17. each input segment of the N input segments being associated with a respective first position of the input segment of the N input segments to generate the output signal; generating a rearranged sequence of the N input segments, each input segment having a respective second position in the rearranged sequence, the respective second positions being based on respective positions of numbers corresponding to the respective first positions in the sequence of N discrete numbers; The system of claim 16 , wherein the output signal is based on the rearranged sequence.
18. 17. The system of claim 16, wherein the output signal has a discontinuity in frequency 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.
19. The system of claim 16 , wherein the output signal includes at least one segment having a frequency range that is lower than a frequency range of a previous segment of the output signal.
20. 17. The system of claim 16, wherein N is based on a length of the frequency sweep signal and a predetermined length of each input segment.