Forum: Digitale Signalverarbeitung / DSP / Machine Learning Richtungserkennung mit Mikrofonen


von Bernd Maier (Gast)


Lesenswert?

Hi,

ich bin gerade dabei, ein Schwenkstativ für eine Kamera zu bauen.
Soweit tut das auch Mechanik und Elektronik sind schon fertig. Nun
würde ich gerne 2 bis 3 Mikrofone im Raum verteilen und die Kamera soll
dann immer in die Richtung gehen, aus der es am lautesten schallt. Wenn
z.B. 3 Leute im Raum sind, soll die Kamera immer zu dem schwenken, der
gerade spricht. Vom Prinzip her ist das ja recht einfach. Mikro, AD
Wandler und da wo der Höchste Wert her kommt hinschenken. Es soll aber
nicht bei jedem kleinen Huster geschwenkt werden sondern erst, wenn so
ca. 1 oder 2 Sekunden gesprochen wird.

Ich würde dazu gerne einen ATMega nehmen, da der ja genügend A/D
Eingänge hat. Die Mikros dann an einen Vorverstärker hin und dann das
Audiosignal der Mikros über den A/D-Wadler interpretiert. Damit könnte
man z.B. in einer Videokonferenz immer den Sprecher ins Bild holen.

Hat sowas schon mal jemand gemacht oder weis jemand wo es weitere Infos
dazu gibt? Ich bin über jeden Tipp dankbar. Goggeln hat mich leider
nicht arg weiter gebracht.

Danke schon mal im Vorraus. Grüße, Bernd

von edi.edi (Gast)


Lesenswert?

das ist nicht fair...der goesste schreihals(bloedmann)bekommt dann immer
die groesste aufmerksamkeit.

von Bernd Maier (Gast)


Lesenswert?

umkippvorlachen Na ja....so hab ich es noch nicht gesehen...aber du
hast recht. Trotzdem....irgend welche Ideen oder Links wie man sowas
realisieren könnte?

so long, Bernd

von ulrich strobel (Gast)


Lesenswert?

messe doch einfach permanent, und erst wenn eine neue schallquelle mehr
als 2 sekunden erschallt, dann positioniere die kamera neu. finde ich
aber wirklich keine gute idee.

von Stefan Kleinwort (Gast)


Lesenswert?

Mein Vorschlag (geht aber nur mit DSP):
Nimm 2 Mikrofone direkt an der Kamera, als Stereo-Mikro.
Vergleiche beide Signale auf Laufzeitdifferenzen. Das geht am Besten
mit adaptiven Filtern. Das Filter wird Dir einen Peak (oder mehrere)
liefern. Die Stelle, an der der Peak ist, kann umgerechnet werden in
den Winkel der Schallquelle (ganz grob gesagt). Sprechen mehrere
gleichzeitig, sollte es mehrere Peaks geben.
Ich habe mal einen Versuchsaufbau mit 2 Mikros gemacht, mit dem konnte
man ganz gut den Abstand zweier Mikros erkennen.

Stefan

von edi.edi (Gast)


Lesenswert?

jeder redner bekommt einen taster(code)
vor beginn der diskussion wird ein teach-in 'gefahren' damit der
motorcontroller weiss (winkel) wohin er fahren soll ....
es muss allerdings eine gewisse disziplin eingehalten werden...sonst
faehrt sich der motor kaputt....

bei solchen sachen merkt man immer wieder wie intelligent mancher
mensch ist!!!!...und wie schwierig es ist nur ein wenig davon in eine
maschine zu packen.

von Rahul (Gast)


Lesenswert?

Wenn jeder der zu filmenden Leute ein Mikrofon hat, ist das doch recht
einfach:
jedes Mikrofonsignal überwachen, sobald ein gewisser Geräuschpegel
erreicht wird, eine programmierte Position mit der Kamera anfahren.
Dazu ist es natürlich wichtig, die Einstellungen des Pan/Tilt-Kopfes zu
wissen (Potis und AD-Wandler?).
Den Pegel der Mikrofone kann man ja mit je einem AD-Wandler oder sogar
mit einem Komperator detektieren, und bei Überschreiten einer Schwelle
einen Timer starten.
Da hast du mich übrigens auf eine gute Idee gebracht. Ich bin nämlich
momentan dabei ein Quasi-Konferenzsystem aufzubauen (Mobilstudio des
Offenen Kanal Kiel). Hierzu verwende ich aber fertige Kameras mit
Pan/Tilt-Kopf; es sind die EVI-D70P von Sony. Hervoragendes
Preis/Leistungsverhältnis.
Vorteil dieser Kamera ist, dass sie selbst schon 6 Speicher für
verschiedene Positionen besitzt.
Die Idee von Stefan finde ich auch interessant. Mit 3 Mikrofonen könnte
man neben der Richtung auch noch die Höhe feststellen...
Noch eine Idee wäre es, ein Mikrofon mit einem Parabolspiegel
auszurüsten und es peroidisch zu schwenken, so dass man aus dem Pegel
und dem momentanen Winkel auf die lauteste Stelle im Raum schliessen
kann.
Bei drei Mikrofonen könnte man auch die Pegel vergleichen, den
Durchschnitt berechnen und dann die Kamera in den Bereich des
errechneten Maximums schwenken.

Sind ein paar Gedanken und Ideen, die mir jetzt so bei dem Thema
kamen.
Gruß Rahul

von Dingens (Gast)


Lesenswert?

@bernd maier: um auf deine frage zurückzukommen: wenn du wirklich ADCs
verschwenden willst für sowas primitives, richte deine werte gleich
(sprich aus 0..-127 wird 0..+127) und führe dann eine gleitende
mittelung über die letzten 5sek durch. wenn der aktuelle mittelungswert
einen maximalpegel erreicht kannst du die entsprechende kameraposition
anfahren.

das ganze lässt sich aber auch analog machen. ist ja nix anderes als
gleichrichtung mit nachgeschaltetem tiefpass.

von Mattias (Gast)


Lesenswert?

Hallo Bernd,
das mit den Mikros wird nie im Leben was. Wenn ich nur an die
Reflektionen denke, kann ich mir die Auswertung der Signale nicht
vorstellen.
Ich würde das so machen:
Kleine Kamera mit Fischauge installieren. Software kann dann Köpfe
erkennen. Wenn sich der Mund von einem Kopf bewegt, dann spricht der
auch. Geht aber auch nur mit einem DSP.

Gruß Mattias

von Manfred Glahe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

aus meiner Erfahrung mit Gesangserkennung und Aufzeichnung von
Heuschrecken habe ich gelernt, daß das sichere Erkennen und Auschalten
der Nebengeräusche das eigentliche Problem darstellt. Ein
amplitudenstarkes Nebengeräusch (z.B.Husten)würde eine Kamera zum
Schwenken veranlassen. Wird das Geräusch bedämpf oder integriert kommt
eine verspätete Schwenkung zustande usw. Das Ganze will gut durchdacht
sein.
Im Anhang mal eine Methode der Nebengeräuschunterdrückung. Ein Mikro
mit Bandpass und Komparator sind die Grundschaltung. Da extrem starke
Nebengeräusche auch durch das Filter schlagen und andererseits aber
auch leises Sprechen eine Aktion auslösen soll, habe ich eine
amplitudenabhängige Komparatorschwelle eingeführt. Die NF nach dem
Mikro wird gleichgerichtet und zur Kompschwelle addiert. Je stärker das
Geräusch, um so höher die Triggerschwelle. Da das Signal Zeit braucht
um durch das Filter zu laufen, ist die Schwellenregulierung immer
vorher aktiv.
Übrigens, die Heuschrecken benutzen zur Richtungserkennung (aus der der
Gesang eines Pertners kommt) tatsächlich die Laufzeitunterschiede an
den Hörorganen.

MfG  Manfred Glahe

von Joe (Gast)


Lesenswert?

hmm, intressantes Problem!

Wie wäre es wenn du das ganze mit einem Integrator löst?
Du integrierst einfach eine bestimmte Zeit lang das Sprachsignal auf
und wenn du einen Schwellenwert überschreitest, dann schwenkst du die
Kamera.

Denke das sollte nicht allzuschwer zu realisieren sein ,-)

hth Joe

von Manfred Glahe (Gast)


Lesenswert?

@Joe,

dann würde folgendes passieren: Ein Redner startet einenen kurzen laut
gesprochenen Satz und beendet ihn (oder bricht ihn ab) kurz vor dem
Triggerpunkt der Integrationsspannung. Der nächste Redner spricht nun
(lückenlos oder mit wenig Zeitverzug)weiter und die Kamera schwenkt auf
den vorletzten und damit falschen Redner. Integration funktioniert
nicht in diesem Fall, oder ist so kurz zu halten, daß sie nicht mehr
wirkungsvoll genug ist.

MfG  Manfred Glahe

von Dingens (Gast)


Lesenswert?

@manfred: es war nicht gemeint, das summensignal aller mikrofone zu
integrieren.
und integrieren ist sowieso das falsche wort. mittelwertbildung des
gleichgerichteten signals.

von Manfred Glahe (Gast)


Lesenswert?

@Dingens,

das ändert doch auch nichts an dem eigentlichen Problem. Irgendwann muß
doch entschieden werden (Komparatorschwelle, so wie die bisherigen
Vorschläge waren) wann ein Redner angepeilt werden soll. Und diese
Entscheidung muß (nach bisheriger Auswertung) mit Schaltschwellen und
Mikrofonamplituden ,die extrem eng zusammenliegen können, gefällt
werden.
Das ist schwer zu lösen. Eine funktionierende Schaltung dafür hätte ich
jetzt auch nicht parad.

MfG  Manfred Glahe

von Sebastian (Gast)


Lesenswert?

Sowas habe ich damals mal in einer Studienarbeit gemacht, allerdings auf
einem Sharc-DSP. Du nimmst zwei Mikrofone und zeichnest beide Signale
auf (meinentwegen in Sample-Längen von 512). Dann bildest du die
Kreuzkorrelationsfunktion zwischen beiden Signales. Nach
Wiener-Khitchine und Konsorten ;-) ist der Sprecher dann genau dort, wo
sich der (Pseudo-)Diracstoß in deiner KKF befindet. (Musst du natürlich
noch passend umrechnen). Das klappt wegen der KKF-Bildung sogar extrem
gut und ist sehr rauschunempfindlich.

von Bernd Maier (Gast)


Lesenswert?

Hi alle zusammen,

vielen Dank für die vielen Ideen und Vorschläge. Allerdings geht da
vieles über mein Elektronikverständniss hinaus.

Es soll keine perfekte Lösung sein. Das Sprichwort "Mit 20% Aufwand
80% des Ziels erreichen" würde hier schon reichen. Ich denke ich werde
einfach mal versuchen, 2 Mikros (mit Verstärker) an einen ATMega an zu
schließen und dann mittels AD-Wandlung und Amplitudenauswertung was hin
zu bekommen.

Wenn hier allerdings jemand eine gute Lösung mit einem DSP oder
ähnlichem hat und damit 4 Mikros anpeilen kann, dann wäre ich sehr
daran Interesiert. Hier könnte man dann auch über ein Honorar
sprechen.

Danke nochmals für die Ideen....

so long, Bernd

von wolli (Gast)


Lesenswert?

Ein solches Problem lässt sich mit einem neuronalen Netz lösen. Ich
bezweifle allerdings, dass es ohne Vorkenntnisse leichter als mit
herkömmlichen Ansätzen zu erledigen ist.

von wolli (Gast)


Lesenswert?

In der Hardware muss man aber sauber differenzieren: Will man zwei
parallele Mikrofone verwenden, so ist das Problem mehrdeutig. Die
Anordnung kann nicht zwischen einem Redner vor und hinter ihr
unterscheiden. Der bessere Ansatz ist die Verwendung zweier
antiparalleler Mikrofone; aus deren Signal lässt sich die Position
eindeutig herausrechnen, allerding funktioniert dann eine einfache
Kreuzkorrelation nicht mehr.

von Paul (Gast)


Lesenswert?

[QUOTE]
Autor: Sebastian (Gast)
Datum: 30.04.2004 15:18

Sowas habe ich damals mal in einer Studienarbeit gemacht, allerdings 
auf...
[/QUOTE]

Das ist genau das was ich brauche. Hat hier irgendwer eine Ahnung, wer 
das geschrieben hat? Wenn ja, dann möchte ich nämlich gerne mit ihm in 
Kontakt treten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.