Patent ID: 8014516

Claim:
An echo cancellation circuit for a voice interaction device simultaneously outputting a remote signal while receiving a local signal, wherein the local signal comprises an echo generated from the remote signal, the echo cancellation circuit comprising: a first filter, learning the remote signal at a first speed to generate a first coefficient set, and the first coefficient set filtering the local signal to generate a first filter output; a second filter, learning the remote signal at a second speed to generate a second coefficient set, and the second coefficient set filtering the local signal to generate a second filter output; and a third filter, comprising a third coefficient set, canceling the echo from the local signal to generate a third filter output as an echo cancellation result; wherein a controller updates the third coefficient set based on the first, second and third filter outputs; wherein the controller detects remote talk, local talk and double talk according to the remote and local signals, and adjusts the second speed based on the detection result; the first and second speeds are individually determined by a first step size and a second step size; when the controller detects double talk, the controller reduces the second step size; when the controller detects no double talk, the controller increases the second step size; wherein the second step size does not exceed the first step size; the controller detects remote talk if the energy of remote signal exceeds a remote threshold; the controller detects local talk if the energy of local signal exceeds a local threshold; when no double talk is detected, the controller further sets the second step size by the following condition: if both remote talk and local talk exist, the controller sets the second step size to a first value lower than the first step size; if only remote talk exists, the controller sets the second step size to a second value lower than the first value; and if only local talk exists, the controller sets the second step size to a third value lower than or equal to the second value.