If you need assistance, please send an email to forum at 4hv dot org. To ensure your email is not marked as spam, please include the phrase "4hv help" in the subject line. You can also find assistance via IRC, at irc.shadowworld.net, room #hvcomm.
Support 4hv.org!
Donate:
4hv.org is hosted on a dedicated server. Unfortunately, this server costs and we rely on the help of site members to keep 4hv.org running. Please consider donating. We will place your name on the thanks list and you'll be helping to keep 4hv.org alive and free for everyone. Members whose names appear in red bold have donated recently. Green bold denotes those who have recently donated to keep the server carbon neutral.
Special Thanks To:
Aaron Holmes
Aaron Wheeler
Adam Horden
Alan Scrimgeour
Andre
Andrew Haynes
Anonymous000
asabase
Austin Weil
barney
Barry
Bert Hickman
Bill Kukowski
Blitzorn
Brandon Paradelas
Bruce Bowling
BubeeMike
Byong Park
Cesiumsponge
Chris F.
Chris Hooper
Corey Worthington
Derek Woodroffe
Dalus
Dan Strother
Daniel Davis
Daniel Uhrenholt
datasheetarchive
Dave Billington
Dave Marshall
David F.
Dennis Rogers
drelectrix
Dr. John Gudenas
Dr. Spark
E.TexasTesla
eastvoltresearch
Eirik Taylor
Erik Dyakov
Erlend^SE
Finn Hammer
Firebug24k
GalliumMan
Gary Peterson
George Slade
GhostNull
Gordon Mcknight
Graham Armitage
Grant
GreySoul
Henry H
IamSmooth
In memory of Leo Powning
Jacob Cash
James Howells
James Pawson
Jeff Greenfield
Jeff Thomas
Jesse Frost
Jim Mitchell
jlr134
Joe Mastroianni
John Forcina
John Oberg
John Willcutt
Jon Newcomb
klugesmith
Leslie Wright
Lutz Hoffman
Mads Barnkob
Martin King
Mats Karlsson
Matt Gibson
Matthew Guidry
mbd
Michael D'Angelo
Mikkel
mileswaldron
mister_rf
Neil Foster
Nick de Smith
Nick Soroka
nicklenorp
Nik
Norman Stanley
Patrick Coleman
Paul Brodie
Paul Jordan
Paul Montgomery
Ped
Peter Krogen
Peter Terren
PhilGood
Richard Feldman
Robert Bush
Royce Bailey
Scott Fusare
Scott Newman
smiffy
Stella
Steven Busic
Steve Conner
Steve Jones
Steve Ward
Sulaiman
Thomas Coyle
Thomas A. Wallace
Thomas W
Timo
Torch
Ulf Jonsson
vasil
Vaxian
vladi mazzilli
wastehl
Weston
William Kim
William N.
William Stehl
Wesley Venis
The aforementioned have contributed financially to the continuing triumph of 4hv.org. They are deserving of my most heartfelt thanks.
Registered Member #1143
Joined: Sun Nov 25 2007, 04:55PM
Location: Vilnius, Lithuania
Posts: 721
Hello, want to start discussion about car free handset ECHO cancellation scheme.
I made navigation system from android tablet, all is great, problem is Bluetooth headset uses single mic, that can hear speakers, and i simply get horrible echo
I can add STM32F4/7 for signal processing, but i have no idea how can i cancel audio of external sound , and leave only my voice, since mic is located near back mirror...
So for not at least is idea to take two mic, sample it at <1MSps@16b, make some DSP magic, and send data to 16b 1MSps DAC. This should give me flexibility do to everything, just question now, what exactly can i do, and how can i do it ?
Registered Member #162
Joined: Mon Feb 13 2006, 10:25AM
Location: United Kingdom
Posts: 3140
is it echo, reverberation or accoustic feedback that is the problem, if it is accoustic feedback then shifting frequencies up by c10 Hz between mic and speaker does not affect inteligibility but does prevent accoustic feedback oscillations ... from memory only ...
Registered Member #1143
Joined: Sun Nov 25 2007, 04:55PM
Location: Vilnius, Lithuania
Posts: 721
Sulaiman wrote ...
is it echo, reverberation or accoustic feedback that is the problem, if it is accoustic feedback then shifting frequencies up by c10 Hz between mic and speaker does not affect inteligibility but does prevent accoustic feedback oscillations ... from memory only ...
Delay is horrible, for end user ( other phone ) voice can be shifter by 0.1 to 1s, and at this point, caller simply can't talk because it hears what he says.
I will make simple circuit that will capture audio, 2ch at 16b, and will send it to 16b dac, first try will be taking mic and audio aout signal, and do shifting, inverting and adding. It is far from ideal, but every bit helps
Registered Member #72
Joined: Thu Feb 09 2006, 08:29AM
Location: UK St. Albans
Posts: 1659
Sulaiman was suggesting frequency shift, not time delay. Great ascending ripply noises just before it feeds back, spacy!
If your DSP is to detect you in a background environment, it must have some way of labelling what is you and what isn't. With a mike behind the mirror, this sounds very weak on potential discrimination indeed. The usual way this is done is with a mike very close to you, and one further away, so the volume gradient between the two mikes 'labels' what is you and what not. There are dual-capsule 'noise-cancelling' mikes are available where the distances involved are sub inch.
The more expensive alternative is beam-forming, where many mikes are used in the volume around you.
There is a great deal of literature available on the maths behind all forms of source identification, beam forming and echo cancellation, most of it over my head, and much of it behind pay walls.
Registered Member #1143
Joined: Sun Nov 25 2007, 04:55PM
Location: Vilnius, Lithuania
Posts: 721
Frequency shift can help here. because basically mic is sitting in front of speaker.
I know that original Subaru Head unit was working very happy with single MIC.
Since i have all the content that is traveling to speakers, with matching mike delay with speaker delay, and subtracting it should rid low frequency, but don't know by how much. Dual MIC maybe be better idea, since it will pickup all suround sound that is not me and not speekers, but have no idea what kind of math do i need to do.
As example, and can sample array 1024 at 24/48kHz, and subtract real(Hz) and Imag(Hz) parts from mic that is closer to me, and one that lisens background, so only my voice will be left, but that is just idea.
Registered Member #2906
Joined: Sun Jun 06 2010, 02:20AM
Location: Dresden, Germany
Posts: 727
Echo cancelation is a bitch. Its hard to get it right (see skype.. ) The most primitive solution on a phone is to mute (decrease volume) the more the other side speaks. Since a normal telephone conversation is only half duplex (only one side speaks). But this limits interaction and i doubt its unnoticable. The more complicated solution is to get a big FIR-filter (100s of tabs) and a LMS-Filter algorithm. ( ) This is common in networking application and should work for audio too. This "learns" how to cancel echos effectively.
Registered Member #29
Joined: Fri Feb 03 2006, 09:00AM
Location: Hasselt, Belgium
Posts: 500
The frequency shifting technique mentioned by Sulaiman is used extensively in stage PA systems to eliminate feedback through the sound system. Conceptually it is a single-side band frequency shift of 10 Hz or so using DSP. You will need to perhaps get your head around the Hilbert transform (which can be done using a fast Fourier transform) for generating the appropriate phase relationships in the signal you wish to shift. Not trivial, but probably easier and more robust than an echo-canceller.
Registered Member #1143
Joined: Sun Nov 25 2007, 04:55PM
Location: Vilnius, Lithuania
Posts: 721
WaveRider wrote ...
The frequency shifting technique mentioned by Sulaiman is used extensively in stage PA systems to eliminate feedback through the sound system. Conceptually it is a single-side band frequency shift of 10 Hz or so using DSP. You will need to perhaps get your head around the Hilbert transform (which can be done using a fast Fourier transform) for generating the appropriate phase relationships in the signal you wish to shift. Not trivial, but probably easier and more robust than an echo-canceller.
Making FFT, shifting array, and making IFFT is simple stuff, just can't see how it works.
Making testing jig with STM32F4/7 running at 250MHz with native float support for this, and when i will try various method's how to do that.
Registered Member #2906
Joined: Sun Jun 06 2010, 02:20AM
Location: Dresden, Germany
Posts: 727
I am also not sure why they think that a frequency shift solves the problem. It does not matter if the mic picks up a 10Hz shifted signal or is by itself shifted by 10Hz. The other person does not want to hear him self speaking at the other end. The 10Hz shifting would still feedback a 10Hz shifted version just because its picked up by the mic.. i dont see a solution there. You guys are currently mixing up an echo with an oscillation. You just call everything a "feedback" so canceling the "feedback" is the solution for you. Its not. 10Hz-Shifting chancels oscillation, not feedback (there is still feedback, it just forced out of phase so it cant amplify in phase = oscillate.). Please keep it apart. Linas, did you read about the LMS-FIR-Filter? That there is an echo present, can be checked by the Cepstrum ( ).
This site is powered by e107, which is released under the GNU GPL License. All work on this site, except where otherwise noted, is licensed under a Creative Commons Attribution-ShareAlike 2.5 License. By submitting any information to this site, you agree that anything submitted will be so licensed. Please read our Disclaimer and Policies page for information on your rights and responsibilities regarding this site.