Aspects disclosed herein generally related to a synchronized multichannel loopback with an embedded architecture. These aspects and others will be discussed in more detail below.
Often times, processing in embedded systems (e.g. in a Linux operating system) is not in real-time, as buffers that are applied to a data system are not constant. Such buffers may change over time due to memory usage and system load. This behavior makes those popular and general-purpose System on a Chip (SoC) systems, widely used in mobile-phones, hardly usable for advanced algorithms such as, for example, acoustic echo cancellation (AEC) algorithms. This condition may also increase the need for expensive companion-chips.
In at least one embodiment, an embedded Linux system is provided. The Linux system includes a memory, a system on a chip (SoC) device, and a first circuit. The SoC device includes the memory and is programmed to process at least a reference signal indicative of undesired audio content and a measured signal indicative of measured audio data in a listening environment. The first circuit is programmed to receive the reference signal and the measured signal. The first circuit is further programmed to merge the reference signal with the measured signal to provide a combined system input to the SoC device to prevent temporal misalignment between the reference signal and the measured signal caused by one or more software layers of the Linux system.
In at least another embodiment, a computer-program product embodied in a non-transitory computer readable medium that is programmed to prevent temporal misalignment between a reference signal and a measured signal for an embedded Linux system is provided. The computer-program product includes instructions to receive the reference signal indicative of undesired audio content and to receive the measured signal indicative of measured audio data in a listening environment. The computer-program product includes instructions to process the reference signal and the measured signal at a system on a chip (SoC) device and to merge the reference signal with the measured signal to provide a combined system data stream to the SoC device to prevent temporal misalignment between the reference signal and the measured signal caused by one or more software layers of the Linux system.
In at least another embodiment, a computer-program product embodied in a non-transitory computer readable medium that is programmed to prevent temporal misalignment between a reference signal and a measured signal for an embedded Linux system. The computer-program product comprising instructions to receive the reference signal indicative of output data for an adaptive control system. The computer-program product comprising instructions to process the reference signal and the measured signal at a system on a chip (SoC) device and to merge the reference signal with the measured signal to provide a combined system data stream to the SoC device to prevent temporal misalignment between the reference signal and the measured signal caused by one or more software layers of the Linux system.
The embodiments of the present disclosure are pointed out with particularity in the appended claims. However, other features of the various embodiments will become more apparent and will be best understood by referring to the following detailed description in conjunction with the accompanying drawings in which:
As required, detailed embodiments of the present invention are disclosed herein; however, it is to be understood that the disclosed embodiments are merely exemplary of the invention that may be embodied in various and alternative forms. The figures are not necessarily to scale; some features may be exaggerated or minimized to show details of particular components. Therefore, specific structural and functional details disclosed herein are not to be interpreted as limiting, but merely as a representative basis for teaching one skilled in the art to variously employ the present invention.
It is recognized that various electrical devices such as servers, controllers, and clients, etc. as disclosed herein may include various microprocessors, integrated circuits, memory devices (e.g., FLASH, random access memory (RAM), read only memory (ROM), electrically programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), or other suitable variants thereof), and software which co-act with one another to perform operation(s) disclosed herein. In addition, these electrical devices utilize one or more microprocessors to execute a computer-program that is embodied in a non-transitory computer readable medium that is programmed to perform any number of the functions as disclosed. Further, the various electrical devices as provided herein include a housing and various numbers of microprocessors, integrated circuits, and memory devices ((e.g., FLASH, random access memory (RAM), read only memory (ROM), electrically programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM)) positioned within the housing. The electrical devices also include hardware-based inputs and outputs for receiving and transmitting data, respectively from and to other hardware-based devices as discussed herein.
Embodiments disclosed herein generally provide, among other things, a synchronized reference and measured embedded input signal architecture that may be used in connection with, for example, a LINUX operating system that enables the feasibility of many advanced algorithms. The architecture may be reliable and implemented for any number of adaptive control strategies. The Linux operating system may be used for any number of audio processing devices. For example, the architecture may utilize a synchronized reference and measured signals in connection with, but not limited to, for example, an Acoustic Echo Canceler or Cancellation (AEC) application, an active noise cancellation (ANC) system, any other suitable audio-based application or in general any control application which requires relative synchronized reference and measurement signals. The depicted enhancement (or architecture) may utilize a signal conditioning circuit that may be simple and yield a low-cost method that provides a relative synchronized design between reference and measured signals while the end-to-end latency may change dynamically. It is recognized that the embodiments as set forth herein may be applied to any system, not including an audio system whereby it is desired to achieve a control target by, for example, to minimize an error utilizing the relative synchronized reference and measured signals.
It is recognized that the system 100 further includes at least one controller 112 (hereafter the controller 112) for executing instructions to perform any and all of the tasks performed by the application layer 102, the server layer 104, the sound sub-system layer 106 and the kernel (or driver) layer 108. In addition, the controller 112 may interface with the hardware layer 110 to process data as received from the hardware layer 110 or to transmit data to the hardware layer 110.
It is recognized that the control system 100 may be utilized in any adaptive control implementation (or closed loop control strategy). For example,
As noted above, embodiments herein may be applied to any system, not including an audio system whereby it is desired to reduce temporal misalignment between two signals that propagate through one or more software layers of the Linux system. In an adaptive control system, the signal REFERENCE may simply correspond to input data to the plant which utilizes loopback mechanism. The signal MEASURED may correspond to data as provided by a sensor in the adaptive control system where the sensor provides some form of feedback information. Thus, in this case the signal conditioning circuit 201 may merge the data on the signal REFERENCE with the data on the signal MEASURED. After merging the data between these signals, this signal conditioning circuit 201 provides a combined system data stream to the SoC device 111 to prevent temporal misalignment between the data on the signal REFERENCE and the data on the signal MEASURED. The temporal misalignment may generally be caused by one or more of the software layers 102, 104, 106, and 108. This aspect may achieve a control target by, for example, minimizing an error utilizing the relative synchronized signals REFERENCE AND MEASURED SIGNAL. It is recognized that the implementation as set forth herein may not be used solely for audio related purposes but may be used for any system that seeks to resolve or reduce temporal misalignment between two signals that propagate through software layers of the Linux system.
The controller 202 employs an adaptive control strategy to perform this process over and over based on the signal MEASURED and the signal REFERENCE to adapt the control implementation 200 toward the plant 204 in a desired manner. However, it is recognized that the controller 202 may not be fully capable of controlling the plant 204 to achieve the desired outcome due to inherent system errors or inconsistencies. The above noted adaptive control implementation 200 may be performed any number of times to provide a control action in an optimum manner which may require at least a relative stable latency and timing between the signal REFERENCE and MEASURED to ensure control stability and optimum performance for the plant 204 under control by the controller 202. Any dynamic time/latency misalignment issue between the signal MEASURED and the signal REFERENCE as distributed in, for example, the LINUX system 101 such as the example illustrated in
Referring back to
The sound system layer 106 generally includes software to provide libraries for ALSA and OSS based on whether the ALSA or the OSS is utilized for implementation. The kernel or driver layer 108 may include sound drivers and sound devices. In the event the kernel layer 108 is utilized in connection with ALSA, the ALSA kernel layer 108 may support multichannel audio interfaces and provide application programming interface (API) access on managing hardware controls. ALSA may be a standard software layer within the multiprocessor LINUX based embedded systems to manage all audio streams and stream mixing including buffer handling between audio-hardware-peripherals and upper application-layers. In the event the kernel layer 108 is utilized in connection with OSS, the OSS kernel layer 108 includes LINUX kernel sound drivers and sound devices and connects the application layer with 102 with real audio-hardware-peripherals.
The system 100 further includes hardware-based input device(s) 120 that provide an input signal to the hardware layer 110. The input devices 120 may include any number of sensors such as microphones, acceleration sensor, etc. The system 100 further includes hardware-based output devices 122 that receive an output signal from the hardware layer 110. In one example, the hardware-based output devices 122 may include at least one controller for an audio system such as an acoustic echo cancellation (AEC), an active noise cancelation (ANC) system, etc. In general, as the system 100 receives an input signal from the input device 120 and the input signal propagates its way through the hardware layer 110, the kernel layer 108, the sound-subsystem layer 106, and the server layer 104, the processing performed by the controller 112 to execute such layers 102, 104, 106, and 108, the sound-subsystem layer 106, and the server layer 104 may cause latency issues with respect to the different and separated input streams of data that are processed by the system 100.
The application layer 102 generally includes a controller unit 124 that may utilize the signals REFERENCE and MEASURED independently of one another. For example, the signals REFERENCE and MEASURED each include individual and separate data from one another (e.g, the data between each signal is packed or added together (i.e., merged together). For example, the inputs to the controller unit 124 generally corresponds to the signal MEASURED as provided by the sensor 206 and the signal REFERENCE signal as set forth in
However, notice that the stream of data on the signal Controller Output or Plant Input is processed by the layers 102, 104, 106, 108 and 110 in a downstream manner and that such a signal may completely or partly be loopback for upstream processing as the signal REFERENCE. Further, notice that the layers 102, 104, 106, and 108 process the signals MEASURED and REFERENCE in an upstream manner. Given that, the signal REFERENCE may be based on the signal Controller Output or Plant Input, this may add to the misalignment or non-synchronization as noted above. In general, the hardware layer 110 may include programmable sub-units and is generally defined as hardware in the LINUX system. The latency noted above may cause the hardware layer 110, although programmable, to be deterministic and static. The kernel layer 108 along with all of the layers above the layer 106 may software-based layers and the latency attributed to such layers 102, 104, 106, 108 may be assumed to be dynamic and not static (or deterministic due to Operating System (OS) setup within such layers 102, 104, 106, 108.
In general, the data provided by the hardware-based input device 120 may be digital. The hardware-based input devices 120 may include any number of analog to digital converters to provide the digital data on the signal MEASURED and within some controller applications as e.g. ANC would also provide the signal REFERENCE, as here the signal REFERENCE is not deviated from the signal Controller Output or Plant Input, but still requires the signal conditioner circuit 201 to add or pack the signal REFERENCE and MEASURED together into the combined signal Controller Input and forward that signal to the various layers 110, 108, 106, and 104 upstream for processing (see e.g.,
As noted above, the layers 102, 104, 106, and 108 may be software-based layers and may be considered non-deterministic (or time-varying). Therefore, such layers 102, 104, 106, and 108, when executed by the controller 112, may generally contribute to causing misalignment between the signals REFERENCE and MEASURED due to dynamic buffer size modifications and/or processing latencies. However, given that the signal conditioning circuit 201 (e.g., the mixer 203 and/or the pack circuit 209) is hardware based and time deterministic, the signal conditioning circuit 201 is generally applied or positioned before all of the non-time deterministic (or time varying) layers 102, 104, 106, and 108 which may mitigate any misalignment between the signals REFERENCE and MEASURED as both signal are combined with one another via the signal conditioning circuit 201 to provide the signal COMBINED REFERENCE AND MEASURED called the signal CONTROLLER_INPUT.
For example, the typical dynamic buffer size modification between the layers 102, 104, 106, and 108 may change the overall end-to-end latency. However, the signal conditioning circuit 201 may synchronize the signals REFERENCE AND MEASURED since the position of the signal conditioning circuit 201 is positioned beyond the potential dynamic buffer latency modification related to SW layer processing, the latency of the signals COMBINED REFERENCE AND MEASURED may be considered constant. For example, any latency applied to the signal COMBINED REFERENCE AND MEASURED may affect the signals REFERENCE and MEASURED in the same manner and therefore the relative latency can be considered as constant. The signals REFERENCE and MEASURED when present in the signal COMBINED REFERENCE AND MEASURED may correspond to the signals REFERENCE and MEASURED as set forth in
The hardware-based input device(s) 120 may provide audio data on signal MEASURED as captured from a microphone or acceleration sensor (not shown) as used in connection with the AEC system. The captured audio data may correspond to desired voice data but including undesired echo data that is captured in a room or listening environment (e.g., data on the signal MEASURED). The signal conditioning circuit 201 may forward the audio data from the signal SYSTEM_INPUT and provide the same to the hardware-based output device(s) 122 to be broadcasted to the acoustic path, which is representing the plant 204 as shown in
The signal conditioning circuit 201 may, in real time, pack or add data on the signal REFERENCE with the measured microphone data (i.e., desired voice with undesired echo) on the signal MEASURED to provide the signal COMBINED REFERENCE AND MEASURED or signal CONTROLLER_INPUT. The signal COMBINED REFERENCE AND MEASURED or signal CONTROLLER_INPUT may be considered robust against any dynamic system behavior, as the latency between microphone data and reference data may stay relatively constant on the signal COMBINED REFERENCE AND MEASURED or signal CONTROLLER_INPUT. Although the input/output (I/O) end-to-end latency may dynamically change, the AEC convergence may be guaranteed due to the stable/constant relative latency between the microphone data and reference data on the signal COMBINED REFERENCE AND MEASURED.
The hardware-based input device(s) 120 may provide audio data on the signal MEASURED as captured from a microphone or acceleration sensor (not shown) as used in connection with the ANC system. The captured audio data may correspond to undesired noise along with desired music or voice data that is captured in a room or listening environment (e.g., data on the signal MEASURED). The signal conditioning circuit 201 may forward the audio data from the signal CONTROLLER_OUTPUT and provide the same to the hardware-based output device(s) 122 to be broadcasted to the acoustic path for noise cancelation, which is representing the plant as shown in
The signal conditioning circuit 201 may, in real time, pack or add data (i.e., merge data) on the signal REFERENCE with the measured microphone data (i.e., desired music/voice with undesired noise) on the signal MEASURED to provide the signal COMBINED REFERENCE AND MEASURED or signal CONTROLLER_INPUT. The signal COMBINED REFERENCE AND MEASURED or signal CONTROLLER_INPUT may be considered robust against any dynamic system behavior, as the latency between microphone data and reference data may stay relatively constant on the signal COMBINED REFERENCE AND MEASURED or signal CONTROLLER_INPUT. Although the input/output (I/O) end-to-end latency may dynamically change, the ANC convergence may be guaranteed due to the stable/constant relative latency between the microphone data and reference data on the signal COMBINED REFERENCE AND MEASURED.
The data streams that correspond to signals MEASURED, REFERENCE, COMBINED REFERENCE AND MEASURED, CONTROLLER_INPUT, PLANT_INPUT and CONTROLLER_OUTPUT may be implemented as Time Division Multiplex (TDM) data streams or internal linear or ring buffers between the software layers 102, 104, 106. For the example noted in connection with
While exemplary embodiments are described above, it is not intended that these embodiments describe all possible forms of the invention. Rather, the words used in the specification are words of description rather than limitation, and it is understood that various changes may be made without departing from the spirit and scope of the invention. Additionally, the features of various implementing embodiments may be combined to form further embodiments of the invention.
This application claims the benefit of U.S. provisional application Ser. No. 62/799,338 filed Jan. 31, 2019, the disclosure of which is hereby incorporated in its entirety by reference herein.
Number | Date | Country | |
---|---|---|---|
62799338 | Jan 2019 | US |