PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erkennen, ob gesprochen wird



Bumbum
07.12.2012, 14:10
Hallo,

ich habe zur Zeit viele verschiedene Probleme. Das liegt daran, das ich verschiedene Projekte angefangen habe und immer wenn ich bei einem Projekt hänge und nicht weiterkomme erst mal bei einem anderen Projekt versuche weiter zu kommen.

Im aktuellen Fall möchte ich erkennen, ob in einem Raum ein Mensch spricht. Ich habe mir folgende Schaltung ausgedacht:

23962

Es handelt sich dabei um ein Elektret-Mikrofon mit Verstärker inkl. Frequenzfilter und nachgeschaltetem Komperator. Den Verstärker mit Filter hatte ich bereits in einem anderen Projekt im Einsatz, bei dem ich via µC Sprach-Waves aufgezeichnet habe. Der Verstärker ist also erprobt und funktioniert.
Hinzu gekommen ist die letzte Stufe (N1:D). Das Signal PWM_EDGE kommt vom µC, damit dieser seinen Schwellwert selbst einstellen kann. Die gemessene PWM-Spannung ist durch C7 genügend geglättet, das habe ich mit dem Oszi überprüft.
Ich habe aber auch schon ein Poti an Pin 12 angeschlossen, mit dem ich die Schwellspannung fest einstellbar machen konnte, es gab beim Verhalten keinen Unterschied.

Leider sind die Ergebnisse nicht zufriedenstellend, bzw nicht konstant. Wenn man den Schwellwert eingestellt hat funktioniert es ein paar Minuten, und dann wieder mal nicht. Das ganze scheint stark zu driften. Schlimm wird es, sobald ein Handy in die Nähe kommt, dann spinnt die Schaltung zeitweise komplett.

Wie macht man sowas besser? Das Ziel ist es nur zu erkennen ob gesprochen wird oder nicht.

Viele Grüße
Andreas

Sp666dy
07.12.2012, 14:19
Kommt drauf an, was du im Programm machst, Taste doch das Signal ab, erstelle ein fft und schau dir den Betragsspektrum an, da sollte es eher stabil sein, bin grad auch an sowas drann, simuliere aber vorab erst in matlab.

Bumbum
07.12.2012, 15:08
Hallo Speedy,

leider sind fft und Betragsspektrum für mich "böhmische Dörfer".

Im Programm möchte ich nur darauf reagieren, wenn es Geräusche gibt. Man kann das Ziel grob als "Babyfon" definieren, nur das die Geräusche selbst gar nicht übertragen werden müssen.

Viele Grüße
Andreas

PICture
07.12.2012, 16:03
Hallo!


Wie macht man sowas besser? Das Ziel ist es nur zu erkennen ob gesprochen wird oder nicht.

Ich würde es mit selektiven Verstärker (ca. 300 - 3000 Hz) mit automatischer Verstärkungregulation und Schmitttrigger am Ausgang realisieren. ;)

Übrigens, besser ist immer relativ. :p

Man könnte sich fertige Schaltungen "VOX in TX" von Funkamateure anschauen (z.B.: http://service.alan-electronics.de/Accessories/Vox-Sets/Vox-Box-Schaltung.pdf ), weil es zum Umschalten einer Antenne zwischen Sender und Emfänger benutzt wird, wenn ins Mikrophon gesprochen wird.

Bumbum
14.12.2012, 09:30
Guten Morgen PICture,

danke für die Tipps. Dein zweiter Vorschlag hört sich am Vernünftigsten an. Zum Thema "VOX in TX" habe ich leider nur zwei Treffer bei Google erhalten und diese haben nichts mit dem Thema zu tun, aber dein verlinkter Schaltplan hat das IC NJM2072 gezeigt, das laut Datenblatt genau das macht, was ich möchte. Sobald Sprache erkannt wird, wird ein Open Collector Ausgang geschaltet. --> Perfekt!
Leider ist das IC nicht mehr erhältlich. Ich habe Reichelt, ELV, Conrad, Farnell, RS, Segor und Digi-Key abgeklappert. Nirgedwo ist das IC überhaupt im Programm. Einen Ersatztyp habe ich leider auch nicht gefunden. Kennt jemand eine Bezugsquelle oder einen Ersatztyp für dieses IC?

In der Zwischenzeit beschäftige ich mich mal mit selektiven Verstärkern...

Viele Grüße
Andreas

PICture
14.12.2012, 14:01
Vielleicht: http://www.ebay.de/sch/i.html?_trksid=p5197.m570.l1313&_nkw=NJM2072&_sacat=0&_from=R40 . ;)

Bumbum
14.12.2012, 14:40
Danke, auf die Idee "eBay" bin ich noch gar nicht gekommen. Ich bräuchte aber, wenn es damit funktioniert, mindestens 20 Stück. Somit fällt deine gute Idee leider ins Wasser.

Mittlerweile habe ich noch den NJU1781 gefunden, den gibts aber auch nirgendwo.

Und den BA335, da bin ich mir aber noch nicht 100%ig sicher, ob es damit funktioniert. Außerdem habe ich den bis jetzt auch nur bei eBay gefunden.

Sp666dy
14.12.2012, 15:24
Wie gesagt, wenn mans einfach machen will, Taste dein Signal ab und Rechne die energie aus und setz das in einem Filter, klappt sehr gut!!!

Hier ist ein beispiel... (http://www.mikrocontroller.net/topic/111145)

vorausgesetzt du benutzt ein microcontroller und wenn du matlab hast, kannst du es schön simulieren.
Oder solltest du die unterfunktionen kennen, oder nachschlagen wollen kommst du hiermit auch weiter.

E = sum(abs(x).^2)
Damit bekommst du die Energie und kannst dann die empfindlichkeit einstellen indem du ein ditigalen Filter nimmst!

Bumbum
14.12.2012, 15:50
Hallo Sp666dy,

ich habe gerade noch mal das Datenblatt meines Controllers (ATmega162) durchforstet. Der hat leider keinen ADC. Würde es damit trotzdem gehen?

Viele Grüße
Andreas

Sp666dy
14.12.2012, 16:09
ja ich glaube ein AD wandler IC würde da helfen, aber ich glaube schon das ein atmega16 ein ad wandler drin ist?

Ne doch nicht, hasse recht.

Wie weit bist du denn mit deinem MIC gebunden, muss es der sein? und wie viel erwartest du von dein IC, wenn du viel amchen willst, lohnt es sich ein MIC nur dafür zu benutzen ob ein signal rien kommt oder nicht. und dann vielleicht noch die zeitdauer des signal weiter zu geben.

Gruß David

Bumbum
15.12.2012, 09:28
Guten Morgen David,

ich bin überhaupt nicht ans Mikro gebunden. Das verwendete Zeug in meinem Versuch oben lag halt so rum. Deshalb habe ich damit experimentiert.
Mir geht es wirklich nur um ein Digitales Signal, ob im Raum jemand spricht, oder Krach macht. Vielleicht gibts da ja komplett fertige ICs?

Viele Grüße
Andreas

joar50
15.12.2012, 16:18
Mir geht es wirklich nur um ein Digitales Signal, ob im Raum jemand spricht, oder Krach macht.
Hallo,
also willst du nur ein Geräusch ab einem bestimmten Pegel detektieren, egal ob Sprache oder ein anderes Geräusch?
Habe ich das so richtig verstanden?

Bumbum
15.12.2012, 16:30
Ja genau joar50!

joar50
15.12.2012, 17:04
Ohne jetzt lange überlegt zu haben, sollten sich doch die "Klatschschalter" für diesen Zweck anpassen lassen. Schaltungen sollte es im Netz geben.
Ist nur so eine Idee auf die schnelle.

PICture
15.12.2012, 17:13
Auf die schnelle gefunden: http://www.pollin.de/shop/dt/MTg4OTgxOTk-/Bausaetze_Module/Bausaetze/Klatschschalter_Bausatz.html . ;)

Bumbum
16.12.2012, 12:32
Gute Idee ihr zwei. So ein Ding werde ich mir mal bestellen und unter die Lupe nehmen. Danke!

Sp666dy
17.12.2012, 14:39
Den klatschalter habe ich drei mal gekauft, und alle haben nicht funktioniert der von conrad ist besser, auch wenn er teurer ist... :-(

joar50
17.12.2012, 17:04
Den klatschalter habe ich drei mal gekauft, und alle haben nicht funktioniert der von conrad ist besser, auch wenn er teurer ist...
Ich habe auch nicht empfohlen diesen diesen Bausatz zu kaufen, sondern sich Schaltungen im Netz anzusehen und diese für den gewünschten Zweck anzupassen.
Wenn ich mir die Schaltung so anschaue, sollte auch dieser funktionieren. Nur muss man wahrscheinlich neben dem Mikrofon klatschen. Das Ding ist nicht empfindlich und genau das wird auch das Problem des TO werden.

Sp666dy
18.12.2012, 10:04
Sorry war dann falsch verstanden, aber am sensor habe ich alles versucht, aber naja, habs dann selber gemacht.
@Bumbum, hab gestern mal den Code in matlab geschrieben und alles Simuliert wenn dich das interessiert schick ich dir das mal, aber probier erst den klatsch schalter ;-)

Bumbum
18.12.2012, 18:46
Hallo Sp666dy,

ich glaube auch das der Klatschschalter erst mal die bessere Lösung ist. Ob ich bei dem Mathe-Zeugs durchsteige wäre nämlich die nächste Frage... ;-)

Viele Grüße
Andreas

PICture
18.12.2012, 19:59
Es sollte für Erhöhung der Empfindlichkei ein (selektiver) Verstärker zwischen Mikrofon und dem Modul genügen. Damit: http://www.ti.com/tool/filterpro geht's ohne Mathe. ;)