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

Vokalanalyse mithilfe des Frequenzspektrums

 

Florian1992
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 01.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.05.2014, 20:35     Titel: Vokalanalyse mithilfe des Frequenzspektrums
  Antworten mit Zitat      
Mit einem Kommolitonen möchte ich ein Vokalanalyseprogramm entwerfen, welches im Frequenzspektrum anhand der Resonanzfrequenzen (Formanten) einzelne Vokale zuverlässig bestimmt. (a,e,i,u,o,ö,ä,ü - Keine Wörter)

Bisher haben wird das Zeitsignal mittels einer FFT in den Frequenzbereich transformiert, dort gefenstert, gefiltert, den Betrag gebildet und dann mittels der max-Funktion die jeweils größten Frequenzen in den einzelnen "Formantregionen" rausgeben lassen. Bei den verschiedenen Vokalen klappt dies mal mehr, mal weniger gut.

Mein Problem ist nun:

Ich möchte den Frequenzgang gerne glätten, damit unsere Suche nach den maximalen Frequenzen besser gelingt.
Es gibt das SP-Tool von Matlab, welches mittels der "Burg-Methode" einen Frequenzgang glättet und das "Burg Power Spectral Density Estimate" darstellt. Also wohl eine Schätzung, in welchen Frequenzbereichen die meiste Energie liegt.(?)

Das Ganze gefällt mir schon sehr gut, aber ich bekomme es einfach nicht hin, diesen "burg-Befehl" selbst ohne die Toolbox anzuwenden und in meine Funktion richtig zu integrieren.

Hat jemand zufällig mehr Erfahrung, wie ich mein Problem am Besten lösen könnte?

Ich freue mich über jegliche Hilfe ! Sad

Mein code:

Code:


% Vokalanalyse - Eingabe von daten und sampling-frequenz

% - Darstellung des Betragsspektrums -
N = length(x);                                  
H = fft(x,N);
H1 = abs(H);
f = 0:fs/2;
f = 0:fs/N:fs/2;
f = linspace(0,fs/2,N/2+1);
figure(1); clf;
stem(f, abs(H1(1:N/2+1)))
xlabel('f\rightarrow')
title('Betragsspektrum')

%Filterung und Fensterung
x1 = x.*hamming(length(x));     %1. Fensterung der Sprache mit Hamming!
preemph = [1 0.63];             %2. Filterung mit Highpass
x1 = filter(1,preemph,x1);

%Darstellung mit der burg-Funktion

figure(2)
[pxx,w] = pburg(x1,60,length(x1));
plot(w,10*log10(pxx)); axis tight;
xlabel('Radians/sample');
 
 
Private Nachricht senden Benutzer-Profile anzeigen


Florian1992
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 01.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2014, 17:45     Titel:
  Antworten mit Zitat      
Ich denke, dass ich es nun hinbekommen habe, die "burg"-Funktion richtig zu benutzen. Das geglättete Frequenzspektrum ist das Gleiche wie bei den Einstellungen mit der Matlab-Toolbox.

Mein Problem nun ist aber, dass ich nicht die korrekten Maximalwerte aus dem Plot des Frequenzganges bekomme.
Mit dem Befehl "max" unterscheiden sich die Werte immer von den ablesbaren Werten im Plot.

Weiß jemand zufällig, was ich hier falsch mache?


Code:


%Darstellung mit der burg-Funktion
figure(2)
[Pxx,freq] = pburg(x1,60,length(x1),fs);
plot(freq,10*log10(Pxx)); axis tight;
xlabel('Frequency');

[a,f1] = max(Pxx(1:fs/2,1)); % erster Formant
[a2,f_2] = max(Pxx((f1+300):fs/2,1));
[pks,locs] = findpeaks(Pxx) , grid

f1
f2 = f1 + f_2 + 300 % weil Matlab wieder beu Null anfängt zu zählen
fd = f2-f1; % Differenz der Formanten


% Bestimmung der Vokale und Umlaute

if (f1 >= 600 & f1 <= 1200 & f2 >= 950 & f2 <= 1300 )%a großer f1 bereich
    Buchstabe_lautet = 'a'
end

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 2024 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.