WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Dauer eines bestimmten Tons in Audiodatei analysieren

 

firen89
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 16.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2014, 22:45     Titel: Dauer eines bestimmten Tons in Audiodatei analysieren
  Antworten mit Zitat      
Hallo,
ist es möglich aus einer Audiodatei mit hilfe von Matlab die Dauer eines bestimmten Geräusches (ein hohes piepen ähnlich von dem eines Rauchmelders, nur durchgehend) auszulesen?

Grüße,
René
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 22.09.2014, 10:46     Titel:
  Antworten mit Zitat      
Ja. Sollte sogar sehr einfach gehen. Wie kann die Community dabei helfen?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
firen89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 16.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.09.2014, 13:30     Titel:
  Antworten mit Zitat      
ich wollte erstmal nur wissen ob das prinzipiell möglich ist, aber das ja schonmal gut. Gibt es dazu ein paar stichwörter, oder befehle die ich mir angucken kann. Die Dateien liegen leider in .mov vor, da von apple aufgenommen.

Danke!
Grüße,
René
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 22.09.2014, 16:13     Titel:
  Antworten mit Zitat      
Es sind ja maximal drei Schritte

1. Einlesen des MOV Files
2. Möglicherweise Datenvorverarbeitung (Filtern, Entrauschen, etc.)
3. Längenbestimmung

1. http://www.mathworks.com/help/matlab/audio-and-video.html

Was hier ungewöhnlich ist, MOV ist ja ein Video Format. Da käme es auf einen Versuch an wie man das Audiosignal extrahiert. Geht bestimmt, aber meine Sorge ist, dass viel unnütze Videoinformationen eingelesen werden und viiiiiiel Speicher unnütz belegt wird.

2. Die Befehle sind einfach, aber man muss vielleicht ein wenig Signalverarbeiting können. Wie steht es damit?

3. Hängt von Schritt 2 ab. Im einfachsten Fall eine FFT und /oder entsprechendes herausfiltern eines Frequenzbandes. Abschliessend ist ein einfacher Schwellwert zu definieren was Start und Ende des Signals ist. Fertig.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
firen89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 16.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.09.2014, 23:37     Titel:
  Antworten mit Zitat      
Naja Signalverarbeitung hab ich nicht so viel Ahnung von leider, aber ihc guck mir das mal in Ruhe an. Könntest du mir dazu ein paar wichtige Befehle nennen, die dabei in Frage kommen?

Und ich verstehe nicht ganz, wie ich den mit einer FFT auf den Zeitraum eines Signals rückschließen kann?

Grüße
René
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 23.09.2014, 09:40     Titel:
  Antworten mit Zitat      
Die Befehle hängen davon ab was es für ein Signal ist. Ich gehe jetzt mal davon aus, dass es ein Signussignal mit einer konstanten, aber unbekannten Frequenz ist, dazu etwas Rauschen. Also gilt es mittels einer FFT die Frequenz zu identifizieren, und dann mit einem Filter das Rauschen weg zu machen.

Ich schlage vor erstmal versuchen die Daten reinzubekommen und dann ein Signal zu posten.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
firen89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 16.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2014, 15:26     Titel:
  Antworten mit Zitat      
Hallo,

bis hierhin schonmal vielen Dank Smile

Also ich habe mit anderer Software die mov-Dateien in wav-Dateien umgewandelt. Nun habe ich dann audioread zum einlesen verwendet. Meine erste Frage ist, warum meine Variable aus zwei Spalten besteht in denen jeweils exakt das gleiche steht?(Vom Typ double sind die.) Und zweitens wüsste ich gerne wie ich nur einen Teil der Datei einlesen kann. Ich glaube ich habe da die Falsche Syntax.

Grüße,
René
Private Nachricht senden Benutzer-Profile anzeigen
 
firen89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 16.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2014, 20:48     Titel:
  Antworten mit Zitat      
Ich habe jetzt soweit einmal eine fft gemacht mit dem Signal, hab mich dabei an dem orientiert wie es in der Hilfe beschrieben ist.
Code:
[y,fs]=audioread('A3OI2Film am 03.09.14 um 10.12.wav');
s=audioplayer(y,48000);

play(s,[100000 ,2000000]);
pause(3);
stop(s);
m = (length(y))/4;          % Window length
n = pow2(nextpow2(m));    
t=fft(y,n);
power = t.*conj(t)/n;  

%b=s.SampleRate;

plot(power);

Ich vermute mal stark, das der eine Peak normales Reden etc. ist, und der zweite bei etwa 2 Megahertz das piepen.
Kann mir jemand sagen was ich jetzt machen muss? Und ich hatte das Problem das ich nicht vom gesamten Video die fft machen konnte, da zu wenig Speicher vorhanden scheinbar. Ist das schlimm? Daher auch : m = (length(y))/4;

fft_test.PNG
 Beschreibung:

Download
 Dateiname:  fft_test.PNG
 Dateigröße:  66.54 KB
 Heruntergeladen:  225 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 29.09.2014, 08:39     Titel:
  Antworten mit Zitat      
Es könnte sein, dass das Signal als Stereosignal eingelesen wird, aber eigentlich Mono ist und daher auf beiden Kanälen identisch.

2 Peaks liegen an der Theorie dazu:

http://www.uni-protokolle.de/foren/viewt/273039,0.html

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
firen89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 16.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2014, 18:08     Titel:
  Antworten mit Zitat      
Hallo,

ok ich habe jetzt die fft mal gemacht. mit folgendem code:
Code:
[y,fs]=audioread('A3OI2Film am 03.09.14 um 10.12.wav');
s=audioplayer(y,48000);

%  play(s,[4200000 ,5500000]);
%  pause(3);
%  stop(s);
m = (length(y))/2;        %Abtastpunkte festlegen aus Länge des Signals
n = pow2(nextpow2(m));  %das ganze auf eine potenz von 2 bringen
spec = abs(fft(y, n)); % Amplitudenspektrum

f = linspace(0,48000/2,n/2); % Frequenzachse

plot(f, spec(1:n/2));
xlabel('Frequenz in Hz');
ylabel('Amplitude');
 


nun sieht das ganze aus wie auf dem bild(fft). jetzt weis ihc jedoch nicht wie ich das im zusammenhang mit dem zeitsignal nutzen kann? Besonders wegen der Amplituden. Wo ist da der zusammenhang?
ist die fft überhaupt richtig?

Danke und sorry für die vielen Fragen!

zeitsignal.PNG
 Beschreibung:

Download
 Dateiname:  zeitsignal.PNG
 Dateigröße:  79.67 KB
 Heruntergeladen:  248 mal
fft.PNG
 Beschreibung:

Download
 Dateiname:  fft.PNG
 Dateigröße:  48.67 KB
 Heruntergeladen:  248 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 01.10.2014, 12:55     Titel:
  Antworten mit Zitat      
Wenn ich mir "zeitsignal.PNG" anschaue, würde mich zunächst interessieren was denn die menschliche Betrachtung als "Dauer eines bestimmten Geräusches" hier ist? Für mich ist das ein durchgehendes Geräusch im gesamten Zeitraum.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
firen89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 16.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2014, 13:08     Titel:
  Antworten mit Zitat      
Naja also durchgehend ist es nicht. Es ist halt schon häufig in diesem Fall, aber es gibt ja auch phasen ohne Amplitude, und mich interessieren nur die Phasen wo das Signal da ist. Dazu muss auhc noch gesagt werden das zwischendurch noch normales sprechen vorkommt, was jedoch deutlich leiser sein sollte als das Piepen selber.

Grüße,
René
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 01.10.2014, 13:32     Titel:
  Antworten mit Zitat      
Nun gut. Akzeptiert. Die nächsten Schritte sind in die FFT ein wenig hineinzuzoomen und zu schauen welcher Frequenzbereich heraus gefiltert werden soll. Ein Bandpass von x bis y Hertz - irgendwo bei 3000 Hz wohl.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 01.10.2014, 14:39     Titel: "Dauer eines Tons"
  Antworten mit Zitat      
Hallo,

die anfänglich harmlose Frage "Wie lange dauert ein Ton" hat es in sich.
Das Einlesen, Resamplen etc. ist jetzt mehr oder weniger gelöst.

Kernansatz hier sollte sein:
Aus dem Tonsignal ein Kurzzeitspektrogramm erstellen. Hierbei werden überlappende Zeitabschnitte in den Frequenzbereich transformiert. Letzten Endes hat man damit aus einem Vektor (Sound) wieder eine Matrix (Bild) gemacht.

Aus dem Bild markiert man einen Teil-)Bereich, der den Ton beinhaltet.
Nun muss man im Bild nach dem Muster suchen, das diesen Ton "hinreichend" genau beschreibt (gewisse Amplitudenschwankungen und ggfs. Frequenzschwankungen sollen ja toleriert werden).

Entlang der Zeitachse des Kurzzeitspektrogramms zählt man die Segmente, auf die das zutrifft, und schon hat man die Dauer.

Viel Spaß und Erfolg
Andreas
Private Nachricht senden Benutzer-Profile anzeigen
 
firen89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 16.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2014, 16:35     Titel:
  Antworten mit Zitat      
Hallo Andreas,
danke für die Antwort. Also die Grundidee habe ich verstanden. Nur von der Umsetzung habe ich garkeine Ahnung leider^^. Welche funktionen brauche ich denn dafür?
Diese vllt?
http://www.mathworks.de/de/help/signal/ref/spectrogram.html

Danke, und Grüße
René
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.