|
|
wavread: mit anderer als originaler Abtastfrequenz auslesen? |
|
AK79 |

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 10.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2010, 21:22
Titel: wavread: mit anderer als originaler Abtastfrequenz auslesen?
|
 |
Hallo allseits!
habe verschiedene wav-Files mit unterschiedlichen Abtastfrequenzen(-raten).
Nun habe ich ein Progrämmchen geschrieben, das mir die Files ausliest ([y,fs]=wavread)
und weiterverarbeitet (MFC-Koeffizientenbildung).
Zur besseren Handhabung möchte ich das Auslesen stets mit der gleichen
Frequenz (16kHz) machen (ungeachtet der originalen Abtastfrequenz),
damit der "soundvektor" y stets die gleiche Größe hat ( length(y) ). Bzw, damit später,
wenn ich die Melfilterbank anwende, diese gleich bleibt und nicht von der
unterschiedlichen fs (Abtastfrequenz) abhängt.
Wie könnte ich das realisieren?
Wie könnte ich "sagen", "lies wavfile mit 16kHz ab und speichere diesen so als y"?
Für Hilfe oder Ratschläge wäre ich sehr dankbar!
Vielen Dank im voraus!
Mfg, AK.
|
|
|
|
|
Tim |

Forum-Century
|
 |
Beiträge: 140
|
 |
|
 |
Anmeldedatum: 03.11.07
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: 2011b+aktuellstes Release
|
 |
|
|
 |
|
Verfasst am: 15.02.2010, 21:39
Titel:
|
 |
Einfach einlesen und durch Extrapolation (irgendeiner Art) alle Spuren auf die höchste Abtastrate bringen?
|
|
|
AK79 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 10.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2010, 22:02
Titel:
|
 |
Hallo Tim!
"... auf die höchste Abtastrate bringen? " - na eben das versuche ich zu meiden
Ich möchte eben, dass diese konstant 16kHz bleibt, damit ich
1) die Melfilterbank nicht jedesmal neu für jedes Sample konstruirien
muss, sondern stets die gleiche (mit fs=16kHz);
2) die Größe der Samples (length(y)) bei gleicher Dauer (10sek) auch die
gleiche ist.
Ich möchte einfach das auslesen stets mit gleicher Frequenz (ganz gleich, was die
originale Abtastfrequenz des Samples ist), dass length(y) nach
gleich bleibt.
Die 160000 entstehen, da ich bei 16kHz-Abtastfrequenz somit genau 10 sekunden vom sample erfassen würde.
D.h, ich hätte da genau 160000 Werte im y-vektor und vor allem die Gewissheit, dass die maximale Frequenz im
Sample 8kHz ist (und ich stets die gleiche filterbank (Mel) nehmen kann)
Evtl. noch anderen Ratschläg, wie ich dies lösen kann?
PS: hoffe, meine Erklärungen sind nicht zu kompliziert und man kann verstehen, was ich möchte
grüße, AK.
|
|
|
AK79 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 10.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.02.2010, 18:56
Titel:
|
 |
Hallo wiedermal
Da das thema noch als "offen" markiert ist, dachte ich, schliesse ich dies
Habe nun Abhilfe gefunden.
Für die, die es interessiert: der nötige Zauberbefehl lautet "resample(y,p,q)".
Hiermit kann man all das bewerkstelligen, was in angesprochen habe.
"help resample" gibt einem die nötige Infos zusätzlich
Also, hier ein Beispiel:
[y,fs]=wavread('data');
x=resample(y,8000,fs);
--> bewirkt, dass das ursprüngliche Signal auf 8kHz runtergesamplt wird.
Mit soundsc(x,8000) hört man das neue Signal und merkt den Unterschied
Grüße, AK.
|
|
|
derOli |

Forum-Meister
|
 |
Beiträge: 579
|
 |
|
 |
Anmeldedatum: 19.03.08
|
 |
|
 |
Wohnort: Leipzig
|
 |
|
 |
Version: 2010a
|
 |
|
|
 |
|
Verfasst am: 23.02.2010, 19:59
Titel:
|
 |
Hi,
ich kann mir nicht so richtig vorstellen, dass das mit resample funktioniert. Muss man da nicht ersteinmal ein timeseries object erzeugen? Eigentlich brauchst du doch bloß einen Tiefpassfilter mit 16 KHz und danach downsampeln, wenn deine Signale über 16 KHz sind und interpolieren wenn sie drunter sind. Zudem kommt es darauf an wie du die MFCC Features berechnest. Der MFCC Algorithmus kann auch selbst berechnen was die Maximalfrequenz ist und die Filterbank dementsprechend anpassen. Grundsätzlich ist es aber dennoch eine gute Idee alles auf eine Samplingrate zu bekommen. Wobei es aber wiederrum schwierig wird wenn du wirklich Signale hast die eine niedriegere Samplingrate haben.
Ich interessiere mich sehr für dieses Thema, mich würde mal interessieren wie du die MFCCs berechnest gerne auch per PM.
Viele Grüße,
der Oli
|
|
|
derOli |

Forum-Meister
|
 |
Beiträge: 579
|
 |
|
 |
Anmeldedatum: 19.03.08
|
 |
|
 |
Wohnort: Leipzig
|
 |
|
 |
Version: 2010a
|
 |
|
|
 |
|
Verfasst am: 23.02.2010, 20:12
Titel:
|
 |
Habe gerade gelesen, das resample wohl mehrfach verwendet wird. In der Signal Processing Toolbox macht es genau das was ich oben geschrieben habe, also Tiefpassfilter und downsampeln. Es gibt aber noch eine Funktion mit gleichem Namen, wo es um timeseries geht.
Viele Grüße,
der Oli
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|