Abstract:
Various embodiments relate generally to electrical and electronic hardware, computer software, wired and wireless network communications, and audio and speaker systems. More specifically, disclosed are an apparatus and a method for processing signals for optimizing audio, such as 3D audio, by adjusting the filtering for cross-talk cancellation based on listener position and/or orientation. In one embodiment, an apparatus is configured to include a plurality of transducers, a memory, and a processor configured to execute instructions to determine a physical characteristic of a listener relative to the origination of the multiple channels of audio, to cancel crosstalk in a spatial region coincident with the listener at a first location, to detect a change in the physical characteristic of the listener, and to adjust the cancellation of crosstalk responsive to detecting the change in the physical characteristic to establish another spatial region at a second location.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a U.S. non-provisional patent application that claims the benefit of U.S. Provisional Patent Application No. 61/786,445, filed Mar. 15, 2013, and entitled “LISTENING OPTIMIZATION FOR CROSS-TALK CANCELLED AUDIO,” which is herein incorporated by reference for all purposes. 
     
    
     FIELD 
       [0002]    Various embodiments relate generally to electrical and electronic hardware, computer software, wired and wireless network communications, and audio and speaker systems. More specifically, disclosed are an apparatus and a method for processing signals for optimizing audio, such as 3D audio, by adjusting the filtering for cross-talk cancellation based on listener position and/or orientation. 
       BACKGROUND 
       [0003]    Listeners that consume conventional stereo audio typically experience the unpleasant phenomena of “crosstalk,” which occurs when sound for one channel is received by both ears of the listener. In the generation of three-dimensional (“3D”) audio, crosstalk further destroys the sounds that the listener receives. Thus, minimizing crosstalk in 3D audio has been more challenging to resolve. One approach to resolving crosstalk for 3D sound is the use of a filter that provides for crosstalk cancellation. One such filter is a BACCH® Filter of Princeton University. 
         [0004]    While functional, conventional filters to cancel crosstalk in audio are not well-suited to address issues that arise in the practical application of such crosstalk cancellation. A typical crosstalk cancellation filter, especially those designed for a dipole speaker, provide for a relatively narrow angular listening “sweet spot,” outside of which the effectiveness of the crosstalk cancellation filter decreases. Outside of this “sweet spot,” a listener can perceive a reduction in the spatial dimension of the audio. Further, head rotations can reduce the level crosstalk cancellation achieved at the ears of the listener. Moreover, due to room reflections and ambient noise, crosstalk cancellation techniques achieved at the ears of the listener may not be sufficient to provide a full 360° range of spatial effects that can be provided by a dipole speaker.” 
         [0005]    Thus, what is needed is a solution without the limitations of conventional techniques. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0006]    Various embodiments or examples (“examples”) of the invention are disclosed in the following detailed description and the accompanying drawings: 
           [0007]      FIG. 1  illustrates an example of a crosstalk adjuster, according to some embodiments; 
           [0008]      FIG. 2  is a diagram depicting an example of a position and orientation determinator, according to some embodiments; 
           [0009]      FIG. 3  is a diagram depicting a crosstalk cancellation filter adjuster, according to some embodiments; 
           [0010]      FIG. 4  depicts an implementation of multiple audio devices, according to some examples; and 
           [0011]      FIG. 5  illustrates an exemplary computing platform disposed in a configured to provide adjustment of a crosstalk cancellation filter in accordance with various embodiments. 
       
    
    
     DETAILED DESCRIPTION 
       [0012]    Various embodiments or examples may be implemented in numerous ways, including as a system, a process, an apparatus, a user interface, or a series of program instructions on a computer readable medium such as a computer readable storage medium or a computer network where the program instructions are sent over optical, electronic, or wireless communication links. In general, operations of disclosed processes may be performed in an arbitrary order, unless otherwise provided in the claims. 
         [0013]    A detailed description of one or more examples is provided below along with accompanying figures. The detailed description is provided in connection with such examples, but is not limited to any particular example. The scope is limited only by the claims and numerous alternatives, modifications, and equivalents are encompassed. Numerous specific details are set forth in the following description in order to provide a thorough understanding. These details are provided for the purpose of example and the described techniques may be practiced according to the claims without some or all of these specific details. For clarity, technical material that is known in the technical fields related to the examples has not been described in detail to avoid unnecessarily obscuring the description. 
         [0014]      FIG. 1  illustrates an example of a crosstalk adjuster, according to some embodiments. Diagram  100  depicts an audio device  101  that includes one or more transducers configured to provide a first channel (“L”)  102  of audio and one or more transducers configured to provide a second channel (“R”)  104  of audio. In some embodiments, audio device  101  can be configured as a dipole speaker that includes, for example, two to four transducers to carry two (2) audio channels, such as the left channel and a right channel. In implementations with four transducers, a channel may be split into frequency bands and reproduced with separate transducers. In at least one example, audio device  101  can be implemented based on a Big Jambox  190 , which is manufactured by Jawbone®, Inc. 
         [0015]    As shown, audio device  101  further includes a crosstalk filter (“XTC”)  112 , a crosstalk adjuster (“XTC adjuster”)  110 , and a position and orientation (“P&amp;O”) determinator  160 . Crosstalk filter  112  is configured to generate filter  120  which is configured to isolate the right ear of listener  108  from audio originating from channel  102  and further configured to isolate the left ear of listener  108  from audio originating from channel  104 . But in certain cases, listener  108  invariably will move its head, such as depicted in  FIG. 1  as listener  109 . P&amp;O determinator  160  is configured to detect a change in the orientation of the ears of listener  109  so that crosstalk adjuster  110  can compensate for such an orientation change by providing updated filter parameters to crosstalk filter  112 . In response, crosstalk filter  112  is configured to change a spatial location at which the crosstalk is effectively canceled to another spatial location to ensure listener  109  remains with in a space of effective crosstalk cancellation. P&amp;O determinator  160  is also configured to detect a change in position of the ears of listener  111 . In response to the change in position, as detected by P&amp;O determinator  160 , crosstalk adjuster  110  is configured to generate filter parameters to compensate for the change in position, and is further configured to provide those parameters to crosstalk filter  112 . 
         [0016]    According to some embodiments, you know determinator  160  is configured to receive position data  140  and orientation  142  from one or more devices associated listener  108 . Or, in other examples, P&amp;O determinator  160  is configured to internally determine at least a portion of position data  140  and at least a portion of orientation data  142 . 
         [0017]      FIG. 2  is a diagram depicting an example of P&amp;O determinator  160 , according to some embodiments. Diagram  200  depicts P&amp;O determinator  160  including a position determinator  262  and an orientation determinator  264 , according to at least some embodiments. Position determinator  262  is configured to determine the position of listener  208  in a variety of ways. The first example, position determinator  262  can detect an approximate position of listener  208  using optical and/or infrared imaging and related infrared signals  203 . In a second example, position determinator  262  can detect of an approximate position of listener  208  using ultrasonic energy  205  to scan for occupants in a room, as well as approximate locations thereof. In a third example, position determinator  262  can use radio frequency (“RF”) signals  207  emanating from devices that emit one or more RF frequencies, when in use or when idle (e.g., in ping mode with, for example, a cell tower). In the fourth example, position determinator  262  can be configured to determine approximate location of listener  208  using acoustic energy  209 . Alternatively, position determinator  262  can receive position data  140  from wearable devices such as, a wearable data-capable band  212  or a headset  214 , both of which can communicate via a wireless communications path, such as a Bluetooth® communications link. 
         [0018]    According to some embodiments, orientation determinator  264  can determine the orientation of, for example, the head and the ears of listener  208 . Orientation determinator  264  can also determine the orientation of user  208  by using for example MEMS-based gyroscopes or magnetometers disposed, for example, in wearable devices  212  or  214 . In some cases, video tracking techniques and image recognition may be used to determine the orientation of user  208 . 
         [0019]      FIG. 3  is a diagram depicting a crosstalk cancellation filter adjuster, according to some embodiments. Diagram  300  depicts a crosstalk cancellation filter adjuster  110  including a filter parameter generator  313  and an update parameter manager  315 . Crosstalk cancellation filter adjuster  110  is configured to receive position data  140  and orientation data  142 . Filter parameter generator  313  uses position data  140  and orientation data  142  to calculate an appropriate angle, distance and/or orientation with which to use as control data  319  to control the operation of crosstalk filter  112  of  FIG. 1  Update parameter manager  315  is configured to dynamically monitor the position of the listener at a sufficient frame rate, such as at (e.g., 30 fps) if using video, and correspondingly activate filter parameter generator  313  to generate update data configure to change operation of the crosstalk filter as an update. 
         [0020]      FIG. 4  depicts an implementation of multiple audio devices, according to some examples. Diagram  400  depicts a first audio device  402  and a second audio device  412  being configured to enhance the accuracy of 3D spatial perception of sound in the rear 180 degrees. Each of first audio device  402  and a second audio device  412  is configured to track the listener  408  independently. Greater rear externalization of spatial sound can be achieved by disposing audio device  412  behind listener  408  when audio device  402  is substantially in front of listener  408 . In some cases, first audio device  402  and a second audio device  412  are configured to communicate such that only one of the first audio device  402  and a second audio device  412  need determine the position and/or orientation of listener  408 . 
         [0021]      FIG. 5  illustrates an exemplary computing platform disposed in a configured to provide adjustment of a crosstalk cancellation filter in accordance with various embodiments. In some examples, computing platform  500  may be used to implement computer programs, applications, methods, processes, algorithms, or other software to perform the above-described techniques. 
         [0022]    In some cases, computing platform can be disposed in an ear-related device/implement, a mobile computing device, or any other device. 
         [0023]    Computing platform  500  includes a bus  502  or other communication mechanism for communicating information, which interconnects subsystems and devices, such as processor  504 , system memory  506  (e.g., RAM, etc.), storage device  505  (e.g., ROM, etc.), a communication interface  513  (e.g., an Ethernet or wireless controller, a Bluetooth controller, etc.) to facilitate communications via a port on communication link  521  to communicate, for example, with a computing device, including mobile computing and/or communication devices with processors. Processor  504  can be implemented with one or more central processing units (“CPUs”), such as those manufactured by Intel® Corporation, or one or more virtual processors, as well as any combination of CPUs and virtual processors. Computing platform  500  exchanges data representing inputs and outputs via input-and-output devices  501 , including, but not limited to, keyboards, mice, audio inputs (e.g., speech-to-text devices), user interfaces, displays, monitors, cursors, touch-sensitive displays, LCD or LED displays, and other I/O-related devices. 
         [0024]    According to some examples, computing platform  500  performs specific operations by processor  504  executing one or more sequences of one or more instructions stored in system memory  506 , and computing platform  500  can be implemented in a client-server arrangement, peer-to-peer arrangement, or as any mobile computing device, including smart phones and the like. Such instructions or data may be read into system memory  506  from another computer readable medium, such as storage device  508 . In some examples, hard-wired circuitry may be used in place of or in combination with software instructions for implementation. Instructions may be embedded in software or firmware. The term “computer readable medium” refers to any tangible medium that participates in providing instructions to processor  504  for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks and the like. Volatile media includes dynamic memory, such as system memory  506 . 
         [0025]    Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer can read. Instructions may further be transmitted or received using a transmission medium. The term “transmission medium” may include any tangible or intangible medium that is capable of storing, encoding or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible medium to facilitate communication of such instructions. Transmission media includes coaxial cables, copper wire, and fiber optics, including wires that comprise bus  502  for transmitting a computer data signal. 
         [0026]    In some examples, execution of the sequences of instructions may be performed by computing platform  500 . According to some examples, computing platform  500  can be coupled by communication link  521  (e.g., a wired network, such as LAN, PSTN, or any wireless network) to any other processor to perform the sequence of instructions in coordination with (or asynchronous to) one another. Computing platform  500  may transmit and receive messages, data, and instructions, including program code (e.g., application code) through communication link  521  and communication interface  513 . Received program code may be executed by processor  504  as it is received, and/or stored in memory  506  or other non-volatile storage for later execution. 
         [0027]    In the example shown, system memory  506  can include various modules that include executable instructions to implement functionalities described herein. In the example shown, system memory  506  includes a crosstalk cancellation filter adjuster  570 , which can be configured to provide or consume outputs from one or more functions described herein. 
         [0028]    In at least some examples, the structures and/or functions of any of the above-described features can be implemented in software, hardware, firmware, circuitry, or a combination thereof. Note that the structures and constituent elements above, as well as their functionality, may be aggregated with one or more other structures or elements. Alternatively, the elements and their functionality may be subdivided into constituent sub-elements, if any. As software, the above-described techniques may be implemented using various types of programming or formatting languages, frameworks, syntax, applications, protocols, objects, or techniques. As hardware and/or firmware, the above-described techniques may be implemented using various types of programming or integrated circuit design languages, including hardware description languages, such as any register transfer language (“RTL”) configured to design field-programmable gate arrays (“FPGAs”), application-specific integrated circuits (“ASICs”), or any other type of integrated circuit. According to some embodiments, the term “module” can refer, for example, to an algorithm or a portion thereof, and/or logic implemented in either hardware circuitry or software, or a combination thereof. These can be varied and are not limited to the examples or descriptions provided. 
         [0029]    In some embodiments, an audio device implementing a cross-talk filter adjuster can be in communication (e.g., wired or wirelessly) with a mobile device, such as a mobile phone or computing device, or can be disposed therein. In some cases, a mobile device, or any networked computing device (not shown) in communication with an audio device implementing a cross-talk filter adjuster can provide at least some of the structures and/or functions of any of the features described herein. As depicted in  FIG. 1  and subsequent figures, the structures and/or functions of any of the above-described features can be implemented in software, hardware, firmware, circuitry, or any combination thereof. Note that the structures and constituent elements above, as well as their functionality, may be aggregated or combined with one or more other structures or elements. Alternatively, the elements and their functionality may be subdivided into constituent sub-elements, if any. As software, at least some of the above-described techniques may be implemented using various types of programming or formatting languages, frameworks, syntax, applications, protocols, objects, or techniques. For example, at least one of the elements depicted in any of the figure can represent one or more algorithms. Or, at least one of the elements can represent a portion of logic including a portion of hardware configured to provide constituent structures and/or functionalities. 
         [0030]    For example, an audio device implementing a cross-talk filter adjuster, or any of their one or more components can be implemented in one or more computing devices (i.e., any mobile computing device, such as a wearable device, an audio device (such as headphones or a headset) or mobile phone, whether worn or carried) that include one or more processors configured to execute one or more algorithms in memory. Thus, at least some of the elements in  FIG. 1  (or any subsequent figure) can represent one or more algorithms. Or, at least one of the elements can represent a portion of logic including a portion of hardware configured to provide constituent structures and/or functionalities. These can be varied and are not limited to the examples or descriptions provided. 
         [0031]    As hardware and/or firmware, the above-described structures and techniques can be implemented using various types of programming or integrated circuit design languages, including hardware description languages, such as any register transfer language (“RTL”) configured to design field-programmable gate arrays (“FPGAs”), application-specific integrated circuits (“ASICs”), multi-chip modules, or any other type of integrated circuit. For example, an audio device implementing a cross-talk filter adjuster, including one or more components, can be implemented in one or more computing devices that include one or more circuits. Thus, at least one of the elements in  FIG. 1  (or any subsequent figure) can represent one or more components of hardware. Or, at least one of the elements can represent a portion of logic including a portion of circuit configured to provide constituent structures and/or functionalities. 
         [0032]    According to some embodiments, the term “circuit” can refer, for example, to any system including a number of components through which current flows to perform one or more functions, the components including discrete and complex components. Examples of discrete components include transistors, resistors, capacitors, inductors, diodes, and the like, and examples of complex components include memory, processors, analog circuits, digital circuits, and the like, including field-programmable gate arrays (“FPGAs”), application-specific integrated circuits (“ASICs”). Therefore, a circuit can include a system of electronic components and logic components (e.g., logic configured to execute instructions, such that a group of executable instructions of an algorithm, for example, and, thus, is a component of a circuit). According to some embodiments, the term “module” can refer, for example, to an algorithm or a portion thereof, and/or logic implemented in either hardware circuitry or software, or a combination thereof (i.e., a module can be implemented as a circuit). In some embodiments, algorithms and/or the memory in which the algorithms are stored are “components” of a circuit. Thus, the term “circuit” can also refer, for example, to a system of components, including algorithms. These can be varied and are not limited to the examples or descriptions provided. 
         [0033]    Although the foregoing examples have been described in some detail for purposes of clarity of understanding, the above-described inventive techniques are not limited to the details provided. There are many alternative ways of implementing the above-described invention techniques. The disclosed examples are illustrative and not restrictive.