Abstract:
Contact center agents often work in close proximity to other agents. As a primary agent is engaged in a call, a neighboring agent speech may be picked up by the primary agent&#39;s microphone. Contact centers using automated speech recognition systems may monitor the agent&#39;s speech for key terms and, if detected, respond accordingly. Determining a primary agent spoke a key term, when the true speaker of the key term is a neighboring agent, may cause errors or other problems. Characterizing at least the primary agent&#39;s voice and then, once a key term is detected, determining if it was the primary agent that spoke the key term, may help to reduce the errors. Additionally, computational requirements may be reduced as non-key terms may be quickly discarded and optionally, key terms determined to not have been spoke by the primary agent, may also be discarded without further processing.

Description:
FIELD OF THE DISCLOSURE 
     The present disclosure is generally directed toward communication systems and, more specifically, towards identifying speakers. 
     BACKGROUND 
     Speech analytics is a group of methods often employed to automatically find keywords and/or phrases in telephone conversations. The finding of keywords and phrases is intended to provide useful information regarding speech content. Content may include topics, emotions, hold and periods of silence, and business intelligence. Speech analytics, such as Avaya Speech Analytics (ASA), are designed to improve accuracy of speech processing by mapping a form against phonemes. Other speech analytics may search frame by frame to match sounds and vectors. 
     In many contact centers, agents work in close proximity to one another. While noise cancelling headsets and other technology may be used to help reduce the extraneous sounds, a primary agent&#39;s microphone may pick up the voice of a neighboring agent which may be registered as coming from the primary agent&#39;s microphone. Contact centers often use speech recognition technology to respond to certain words spoken by an agent. If an agent&#39;s microphone picks up a keyword that was actually spoke by a neighboring agent, the system may respond erroneously. 
     SUMMARY 
     It is with respect to the above issues and other problems that the embodiments presented herein were contemplated. 
     In one embodiment, the determination that a primary agent is the speaker of a keyword, phrase, and/or phoneme, also known as a “hit” or “key term” is determined. In another embodiment, the determination that the primary agent is not the speaker of the key term is made. In yet another embodiment, the determination is made as to which agent, of at least a primary agent and a secondary agent, spoke a key term. In another embodiment, the system is operable to listen to, and characterize, the speech of the primary agent, and in another embodiment, the system may characterize one or more secondary agents thereby minimizing the likelihood of assigning false hits. 
     In another embodiment, rather than separating or filtering through an entire conversation, each potential hit can be confirmed as coming from the primary agent and counted as a hit, not a hit, and/or confirmed as coming from one of the secondary agents. The system may also invoke a process to adaptively remove or discount ambient and/or secondary agent noise. 
     Conventional large vocabulary speech recognition systems identify sounds in a first step and convert them into mathematical form. In a second step, the system searches for these sounds frame by frame looking for matching word patterns. In contrast, and in accord with certain embodiments disclosed herein, sound is converted into a mathematical form in a first step, then a search is made for phonemes in a second step. An associated score is provided in a third step. As a benefit, the accuracy of speech processing may be improved as prior art speech analytics systems did not know who was talking and just searched for keywords, phrases, and/or phonemes. 
     Another benefit of the system utilizing certain embodiments disclosed herein provides for a primary agent&#39;s voice to be characterized and thus a “hit” is only declared if the system determines that the primary agent actually spoke the key term. Alternatively, if the key term is determined to not be a hit, with respect to the primary agent, the key term can be discounted whereby further processing, such as determining if and how to respond to the hit, is omitted. Alternatively or additionally, if the key term is determined to not be a hit with respect to the primary agent, the hit may be further processed as spoke by a secondary agent or, by a party other than the primary agent; all without filtering the audio. In another embodiment, prior to declaring a hit, the system may be configured to perform speaker identification and separation, using the prior knowledge of the agent&#39;s speech, and optionally, of the agent&#39;s nearby partners to help with the separation and speaker identification (e.g., delineation of whether the detected speech has come from the primary agent or the agent&#39;s neighbors). 
     In another embodiment, determining the speaker&#39;s identity is performed with speaker characterization from the audio channel, and optional existing metadata. When a possible hit is determined, the system may then run a check to see if the speaker appears to be the primary agent. In a further embodiment, the system will also access characterization of the neighboring agents and, from their previous call characterizations, the system will be able to better discern if the hit was from the primary agent or from a neighboring agent. The system may be augmented to determine all agent names/identification (e.g., extension of telephone) for agents who sit in proximity to the primary agent. The output from the index data and the output from the matches&#39; returned (e.g., confidence, start time offset, end time offset, channel id, phrase found probability) may trigger the activation of filtering of a specific time slice on a specific channel. 
     In one embodiment, the system will use characterization of only the primary agent&#39;s voice, and optionally incorporate ‘generic models’ for all background noise. In another embodiment, the system may use recordings from adjacent phones or agent conversations to enhance the media stream of the primary agent by using adaptive filtering noise reduction techniques. In a third embodiment, the system may attempt to increase the probabilistic detection of phonemes only when it is deemed that it could impact the overall phrase detection. 
     In an additional embodiment, the system may detect ambient noise prior to primary and/or secondary agent voice characterization. An open channel on a telephone or a non-operational side-call between two telephones in the contact center could be used to record and determine ambient noise level (e.g., external air-conditioning unit). 
     In a first embodiment, a method is disclosed, comprising: characterizing a number of primary voice attributes of a primary agent; accessing a voice portion of a communication between the primary agent and a customer; monitoring the voice portion for a key term; detecting the key term in the monitored voice portion and in response to detecting the key term, characterizing a number of term attributes for the key term; determining that the number of term attributes for the key term substantially matches the number of primary voice attributes; and upon determining the number of term attributes for the key term substantially matches the number of primary voice attributes, assigning the key term speaker to be the primary agent. 
     In a second embodiment, a system is disclosed, comprising: a processor; a data repository; and a communication network; and wherein the processor is operable to characterize a number of primary voice attributes of a primary agent, access a voice portion of a communication between the primary agent and a customer, monitor the voice portion for a key term, detect the key term in the monitored voice portion and in response to detecting the key term characterize a number of term attributes for the key term, determine that the number of term attributes for the key term substantially matches the number of primary voice attributes and upon determining the number of term attributes for the key term substantially matches the number of primary voice attributes, and assigning the key term speaker to be the primary agent. 
     In a third embodiment, a non-transitory memory with instructions stored thereon that when read by a computer cause the computer to perform: characterizing a number of primary voice attributes of a primary agent; accessing a voice portion of a communication between the primary agent and a customer; monitoring the voice portion for a key term; detecting the key term in the monitored voice portion and in response to detecting the key term, characterizing a number of term attributes for the key term; determining that the number of term attributes for the key term substantially matches the number of primary voice attributes; and upon determining the number of term attributes for the key term substantially matches the number of primary voice attributes, assigning the key term speaker to be the primary agent. 
     The phrases “at least one,” “one or more,” and “and/or” are open-ended expressions that are both conjunctive and disjunctive in operation. For example, each of the expressions “at least one of A, B and C,” “at least one of A, B, or C,” “one or more of A, B, and C,” “one or more of A, B, or C” and “A, B, and/or C” means A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B and C together. 
     The term “a” or “an” entity refers to one or more of that entity. As such, the terms “a” (or “an”), “one or more” and “at least one” can be used interchangeably herein. It is also to be noted that the terms “comprising,” “including,” and “having” can be used interchangeably. 
     The term “automatic” and variations thereof, as used herein, refers to any process or operation done without material human input when the process or operation is performed. However, a process or operation can be automatic, even though performance of the process or operation uses material or immaterial human input, if the input is received before performance of the process or operation. Human input is deemed to be material if such input influences how the process or operation will be performed. Human input that consents to the performance of the process or operation is not deemed to be “material.” 
     The term “computer-readable medium” as used herein refers to any tangible storage that participates in providing instructions to a processor for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, NVRAM, or magnetic or optical disks. Volatile media includes dynamic memory, such as main memory. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, magneto-optical medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, a solid state medium like a memory card, any other memory chip or cartridge, or any other medium from which a computer can read. When the computer-readable media is configured as a database, it is to be understood that the database may be any type of database, such as relational, hierarchical, object-oriented, and/or the like. Accordingly, the disclosure is considered to include a tangible storage medium and prior art-recognized equivalents and successor media, in which the software implementations of the present disclosure are stored. 
     The terms “determine,” “calculate,” and “compute,” and variations thereof, as used herein, are used interchangeably and include any type of methodology, process, mathematical operation or technique. 
     The term “module” as used herein refers to any known or later developed hardware, software, firmware, artificial intelligence, fuzzy logic, or combination of hardware and software that is capable of performing the functionality associated with that element. Also, while the disclosure is described in terms of exemplary embodiments, it should be appreciated that other aspects of the disclosure can be separately claimed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present disclosure is described in conjunction with the appended figures: 
         FIG. 1  depicts a first contact center diagram in accordance with embodiments of the present disclosure; 
         FIG. 2  depicts a second contact center diagram in accordance with embodiments of the present disclosure; 
         FIG. 3  depicts a third second contact center diagram in accordance with embodiments of the present disclosure; and 
         FIG. 4  depicts a process in accordance with embodiments of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     The ensuing description provides embodiments only, and is not intended to limit the scope, applicability, or configuration of the claims. Rather, the ensuing description will provide those skilled in the art with an enabling description for implementing the embodiments. It being understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the appended claims. 
     The identification in the description of element numbers without a subelement identifier, when a subelement identifiers exist in the figures, when used in the plural, is intended to reference any two or more elements with a like element number. A similar usage in the singular, is intended to reference any one of the elements with the like element number. Any explicit usage to the contrary or further qualification shall take precedent. 
     The exemplary systems and methods of this disclosure will also be described in relation to analysis software, modules, and associated analysis hardware. However, to avoid unnecessarily obscuring the present disclosure, the following description omits well-known structures, components and devices that may be shown in block diagram form, and are well known, or are otherwise summarized. 
     For purposes of explanation, numerous details are set forth in order to provide a thorough understanding of the present disclosure. It should be appreciated, however, that the present disclosure may be practiced in a variety of ways beyond the specific details set forth herein. 
     With reference now to  FIG. 1 , first contact center diagram  100  will be described for characterizing an agent&#39;s voice in accordance with embodiments of the present disclosure. It should be appreciated that while the examples are described in connection with a contact center implementation, the present disclosure is not so limited. Instead, embodiments of the present disclosure can be utilized in any speech analytics system. Only a portion of the well-known communications equipment used in a contact center is illustrated herein to avoid unnecessarily complicating the figures. One of ordinary skill in the art would appreciate the addition of the equipment needed to render a contact center operational. 
     Communication system  112  is operable to connect with communication network  114  and, therewith, customer phone  116 . Examples of the communication network  114  include, without limitation, a standard Plain Old Telephone System (POTS), an Integrated Services Digital Network (ISDN), the Public Switched Telephone Network (PSTN), a Local Area Network (LAN), a Wide Area Network (WAN), a Session Initiation Protocol (SIP) network, a Voice over IP (VoIP) network, a cellular network, and any other type of packet-switched or circuit-switched network known in the art. In addition, it can be appreciated that the communication network  114  need not be limited to any one network type, and instead may be comprised of a number of different networks and/or network types. As one example, embodiments of the present disclosure may be utilized to increase the efficiency of a grid-based contact center. Examples of a grid-based contact center are more fully described in U.S. patent application Ser. No. 12/469,523 to Steiner, the entire contents of which are hereby incorporated herein by reference. Moreover, the communication network  114  may comprise a number of different communication media such as coaxial cable, copper cable/wire, fiber-optic cable, antennas for transmitting/receiving wireless messages, and combinations thereof. Communication system  112  is embodied such that communication on communication network  114  is enabled. 
     Similarly, customer phone  116  may be embodied as a POTS connected telephone, cellular telephone, VoIP phone, computer, tablet, or other device operable to facilitate voice communications via communication network  114 . 
     In one embodiment, primary agent  102  is speaking and a microphone on headset  104  detects sound (e.g., sound waves created by primary agent  102 ) and converts the sound waves into an electrical signal propagated on line  108 . Line  108  connects directly or with intervening equipment (not shown) to communications system  112 . Communication system  112  incorporates connectivity hardware and software to facilitate communication connectivity between primary agent  102  and communications network  114 . Communications system  112  may incorporate signal processing hardware and/or software, such as analog-to-digital converters, filters, compression routines, and other components as is known in the art to facilitate communicative connectivity between agent  102  and communications network  112 . In addition to the well known components, additional hardware and/or software is provided by the embodiments herein. 
     In one embodiment, portion  110  conceptually illustrates the electrical signal on line  108  generated by, at least, a microphone on headset  104  when primary agent  102  spoke phrase  106 . It should be noted that the text of portion  110 , is written left-to-right, as a convention of all English writings, and does not imply a reversal of the order in which signals from portion  110  are processed. Continuing the embodiment, in a quiet environment (e.g., an environment having no or very limited background noise), the signal on line  108  is substantially that of the voice of primary agent  102 ; however, environments are often not suitably quiet and primary agent  102  may not be the only speaker detected by the microphone on headset  104 . As can be appreciated by one of ordinary skill in the art, one or more wired portions of line  108  may be embodied as wireless portions (e.g., Bluetooth connections, WiFi connections, etc.), and associated transmitting and receiving equipment, without departing from the embodiments disclosed herein. In yet another embodiment, a recording device may be substituted for primary agent  102  such that the signal on wire  108  is not of a live agent but the playback of a recording of primary agent  102 . 
     As primary agent  102  speaks, characterization process  118  determines tone, pitch, pace, volume and/or other attributes associated with primary agent&#39;s  102  voice. Attribute storage  120  then maintains the characterization attribute to be accessible for later processing. Characterization process  118  may be performed on a raw analog or digital signal, such as that on wire  108  and or a signal that has been subject to one or more of digitization, filtering, and/or compression utilized for other processes, such as to prepare the signal for transport via communications network  114 . In a further embodiment, analysis of a key term, as discussed more fully with respect to  FIGS. 2-4  may be performed on a signal in a state corresponding to a similar state of a characterization signal. For example, characterization  118  may be performed on a signal in an analog state and analysis performed on a signal in a similar analog state. In another example, characterization  118  may occur on a signal in digitized, filtered, and comprised state to correspond to later analysis on digitized, filtered, and compressed signals. In other embodiments, the state of a signal used for characterization  118  may differ from the state of a signal used for analysis. For example, an off-site analysis component may only have access the signal in the form presented to communications network  114 , however, characterization may be performed on a less-processed signal or even a raw analog signal as equipment and/or business practices may dictate. 
     In another embodiment characterization  118  occurs upon, or substantially concurrent with, the determination that primary agent  102  spoke one or more keywords. For example, primary agent  102  may be instructed to answer incoming calls with certain words (e.g., “Thank you for calling XYZ company.”). As a benefit, characterization  118  may be more accurate as opposed to the characterization occurring over inconsistent words. In a further benefit, audio filtering may be selected in accord with the background noise observed during characterization  118 . In another embodiment, characterization may occur substantially upon commencement of a communication with a customer. 
     In yet another embodiment, characterization  118  may occur periodically during a call. For example, the level of background noise may change (e.g., a neighboring agent begins or ends a shift, an air conditioner unit turns on or off, etc.); however, as primary agent  102  is closest to the microphone of headset  104 , it may be assumed that the loudest signal on line  108  is most likely that of the voice of primary agent  102 . Therefore, one or more in-progress characterizations may occur to establish or update the characterization attributes in attribute storage  120 . 
     With primary agent  102  having voice characterization performed and stored in attribute storage  120 , the speaker of a detected key term may be determined. 
     With reference now to  FIG. 2 , second contact center diagram  200  will be described for determining the speaker of a key term in accordance with embodiments of the present disclosure. In one embodiment primary agent  102  is physically situated close to a source of background noise, such as neighboring agent  204 . Neighboring agent  204  speaks words  208  intended to be received by a microphone on headset  206  and conveyed to another party. However, sound  210  from neighboring agent  204  is picked up by the microphone of headset  104 . 
     Commonly, while primary agent  102  is speaking, the signal on line  108  will be dominated by the larger amplitude signal of primary agent  102 . Other signals may be distinguished by their lower amplitude and readily ignored by a human listener, and/or filtered-out by automated systems. However, a pause or even the gaps between words may allow sound  210  to be picked up as if it were the voice of primary agent  102 . In one embodiment, line  108  includes signals from the words  202  spoke by primary agent  102 . However, as primary agent  102  pauses, one of words  208  spoke by neighboring agent  204  was picked up, specifically key term  215 . As a result the signal on line  108  includes a first portion  212 , spoke by primary agent  102 , and a second portion  214  spoke by secondary agent  206 . Analysis engine  216  may then be employed to monitor line  108  and the signals thereon. As referenced with respect to  FIG. 1 , analysis engine  216  may process first portion  212  and second portion  214  as a digital signals, such as from primary agent  102 &#39;s telephone or other communication device, or as a processed signal, whereby one or more of compression, filtering, and digitization has occurred. Furthermore, analysis engine  216  may determine the speaker of key term  214  and cause voice processing  218  to respond accordingly. In a further embodiment, analysis engine  216  may be co-located with primary agent  102  and/or other telephony and/or contact center equipment or offsite, without departing from the embodiments described herein. 
     In one embodiment, analysis engine  216  processes first portion  212  and discards all words, which may include sounds, single words, multiple words, phrases, phonemes, etc. that are either expressly identified as not key terms or absent in a repository having only key terms. As a benefit, non-key terms may be quickly discarded with minimal processing and thereby minimize the computational burden on the contact center. Next, analysis engine  216  analyzes second portion  214  and detects the presence of key term  215 . 
     Analysis engine  216  then determines the identity of the speaker of key term  215 . In one embodiment, primary agent attribute storage  210  is accessed and attributes, such as from the characterization of primary agent  102  by characterization  118 , are retrieved. A set of key term attributes is also determined for key term  215  and then compared to the attributes of primary agent  102 . If the attributes match, or match within a certain margin of error, analysis engine  216  may then determine that it was primary agent  102  who spoke key term  215 . In response, voice processing  218  may be signaled and a previously determined action may then be taken in response to primary agent  102  speaking key term  215 . 
     The occurrence of any one or more key terms may be signal for another action. The action may be as simple, such as incrementing a tally of occurrences. For example, a contact center supporting an electronic component vendor may want to know if agents are promoting the sale of cables and, therefore, track occurrences of the word, “cable.” In other examples, the contact center may respond to certain key terms. For example, if an agent speaks the word, “supervisor” the agent&#39;s supervisor may be signaled and, if available, the supervisor may then join the call, such as in a listen-only mode. As a benefit, if the agent then makes a request for the supervisor to join the call, the supervisor may fully join the call and have at least some context for the call, such as knowing the customer is angry, frustrated, confused, etc. Other key terms may be used for quality control purposes, such as to detect the agent&#39;s use of profanity, insults, or demeaning language or the use of certain positive key words or the delivery of a catch-phrase. 
     In another embodiment, analysis engine  216  may determine primary agent  102  did not speak key term  215  and perform additional processing. As discussed above, the determination that primary agent  102  did not speak key term  215  may be sufficient and no further processing required, such as when the true speaker of key term  215  is separately monitored by analysis engine  216 . 
     However, in certain embodiments two or more agents may simultaneously be engaged with the same client. Therefore, analysis engine  216  may determine if a key term was spoke by one of the agents and, if so, which one. Accordingly, voice characterization is performed such that voice attributes are made available for comparison to attributes of the key term. If a match, or a sufficient match, between the attributes of the key term and one of the agents, the speaker of the key term is assigned accordingly. Generally, a customer&#39;s voice is readily distinguishable as being on a separate line from the associated agent. However, as can be appreciated the embodiments herein may be applied to embodiments where the customer and agent share the same voice input device, such as a microphone at a kiosk. A plurality of agents, simultaneously engaged with a customer, is discussed more fully with respect to  FIG. 3 . 
     In yet another embodiment, analysis engine  216  may assign the speaker of a key term based upon a context of the key term within the communication. For example, if primary agent  102  is engaged in a communication with a customer and several minutes into the communication the key term, “Thank you for calling XYZ Company,” is detected. The key term may have an associated context, such as a time context which normally occurs within the first seconds of the call, and accordingly analysis engine  216  may determine the speaker is likely not primary agent  102 . 
     In still yet another embodiment, analysis engine  216  may characterize a key term that is out of context for a specific communication. Continuing the example, a greeting may be a key term, such as, “thank you for calling XYZ company,” and be out of context for a communication that has been underway for a length of time. Therefore, the speaker of the key term may be characterized and attributes created and associated with a speaker who may be specifically identified (e.g., neighboring agent  204 ) and/or identified as a party who is not primary agent  102 . 
     With reference now to  FIG. 3 , third contact center diagram  300  will be described in accordance with embodiments of the present disclosure. In one embodiment, primary agent  102  is engaged in a call with a customer along with secondary agent  306 , who in turn is using headset  308  with an integrated microphone. For example, a telephone device used by primary agent  102  may have at least two jacks and secondary agent  306  then plugs headset  308  into one of the jacks. Unlike a conference call where each party uses their own telephone (or telephonic device) on a separate line, the downstream telephony equipment may be unable to determine that multiple agents are engaged in the same call. In another embodiment, both primary agent  102  and secondary agent  306  are sharing a common microphone as the sole input into line  108  (e.g., kiosk). Primary agent  102  speaks dialog  302 , including first key term  310  and, such as at a later time, secondary agent  306  speaks dialog  304 , including second key term  312 . 
     Primary agent  302  may use first key term  310 , such as the word, “supervisor” and as illustrated with respect to  FIG. 2 , analysis engine  216  characterizes first key term  310 , compares the characterized first key term  310  to attributes in primary and secondary agent attributes database  314 , and concludes primary agent  102  spoke first key term  310 . Voice processing  218  may conclude that no action is to be taken as the supervisor, such as secondary agent  306 , is already engaged in the call. If voice processing  218  is unaware of the presence of secondary agent  306 , secondary agent  306 , if signaled to join the call, may simply ignore the signal. 
     In another embodiment, secondary agent  306  speaks second key term  312 . Analysis engine  216  accesses primary and secondary agent attribute database  314  containing previously characterized attributes for secondary agent  306 , and if the characterized key term  312  matches characterized the voice of secondary agent  306 , conclude secondary agent  306  spoke second key term  312 . Accordingly, analysis engine  216  may then signal voice processing  218  that secondary agent  306  may be requesting his or her supervisor to join the call and voice processing  218  may then respond accordingly. 
     With reference now to  FIG. 4 , process  400  will be described in accordance with embodiments of the present disclosure. In one embodiment, process  400  begins and step  401  characterizes the voice of an agent, such as primary agent  102 . Step  402  monitors the agent&#39;s voice stream, such as by analysis engine  216  monitoring line  108  associated with primary agent  102 . Step  404  determines if a key term has been detected on the monitored line  108 . If the query of step  404  is answered negatively, processing may then continue back at step  402 . If the query of step  404  is answered positively, the method  400  continues with step  406  characterizing the detected key term. Step  408  then determines if the characterized key term and characterized agent voice match one another, within a previously determined margin of error. If the query of step  408  is answered negatively, processing may continue back at step  402 . If the query of step  408  is answered positively, processing may continue to step  410  where the key term spoken by the primary agent is processed in accordance with rules defined for the detection of such a key term. 
     Step  401  may characterize the agent&#39;s voice passively, that is, the agent speaks to communicate with another party and not specifically for voice characterization. In another embodiment, step  401  may comprise an active agent characterization step, for example, the agent may receive instructions to speak a word or set of words during a time the primary agent is not engaged with a customer for the purpose of voice characterization. In other embodiments, the characterization of the primary agent&#39;s voice occurs as the agent begins a call with a customer and/or periodically during a call. 
     In another embodiment, step  408 , upon determining the characterized key term does not match the primary agent, determines if the characterized key term matches the characterized voice of another agent, such as neighboring agent  204 . If so, processing may resume back at step  402 , and thereby discarding the key term from further processing, or if the primary agent and neighboring agent are engaged in the same call with the customer, processing may continue in accord with the neighboring agent as the speaker of the key term. 
     In the foregoing description, for the purposes of illustration, methods were described in a particular order. It should be appreciated that in alternate embodiments, the methods may be performed in a different order than that described. It should also be appreciated that the methods described above may be performed by hardware components or may be embodied in sequences of machine-executable instructions, which may be used to cause a machine, such as a general-purpose or special-purpose processor (GPU or CPU) or logic circuits programmed with the instructions to perform the methods (FPGA). These machine-executable instructions may be stored on one or more machine readable mediums, such as CD-ROMs or other type of optical disks, floppy diskettes, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other types of machine-readable mediums suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software. 
     Specific details were given in the description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, circuits may be shown in block diagrams in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments. 
     Also, it is noted that the embodiments were described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function. 
     Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as storage medium. A processor(s) may perform the necessary tasks. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc. 
     While illustrative embodiments of the disclosure have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied and employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art.