Spectre, spectre de phase, spectre d'amplitude, spectre de puissance et spectrogramme des connaissances de base du traitement du signal vocal

1. Traitement du signal vocal

Un signal audio peut être représenté par un vecteur réel dans le domaine temporel. La taille de ce tableau = fréquence d'échantillonnage * durée audio. Par exemple : un morceau d'audio avec un taux d'échantillonnage de 8000 et une durée de 15,6 s est exprimé dans matlab comme suit : un vecteur réel de taille 15,6 x 8000 = 124 800

insérez la description de l'image ici

Voici deux façons de lire les fichiers .wav et les fichiers .pcm à l'aide de matlab

1.1 lire wav

[x1, fs_n] = audioread('test\Far_common.wav');   

1,2 lire pcm

fid_far = fopen("test\Far_common.pcm",'r'); 
x_far = fread(fid_far,inf,'int16');

insérez la description de l'image ici

Comme on peut le voir sur la figure ci-dessus, le signal audio est représenté par un vecteur dans matlab.

2. Connaissance de base du traitement du signal vocal

2.1, spectrogramme

Concept : Indique la relation entre la fréquence du signal et l'énergie. Le spectrogramme se compose généralement de deux parties : le spectrogramme de phase et le spectrogramme de magnitude.

Méthode de dessin : Effectuez une transformation de Fourier sur un morceau d'audio dans le domaine temporel, et le résultat est un spectrogramme. Mais comme il contient deux informations, il ne peut pas être dessiné directement. Il peut être tracé séparément sous forme de spectrogramme de phase et de spectrogramme de magnitude.

[x1, fs_n] = audioread('D:\blog\新建文件夹\Far_common.wav');   
xi_fd = fft(x1);

D'après les résultats d'observation, on peut constater qu'un vecteur complexe de même taille est obtenu après qu'un vecteur unidimensionnel a été transformé par Fourier.

insérez la description de l'image ici

2.1.1 Spectrogramme de phase

Concept : Dans l'analyse de Fourier, le changement de la phase de chaque composante avec la fréquence devient le spectre de phase du signal.

Méthode de dessin : remplacez la partie amplitude du spectre par l'angle de phase, utilisez ici la fonction d'angle dans matlab pour dessiner.

[x1, fs_n] = audioread('test\Far_common.wav');   

%频域信息
x1_fd = fft(x1);

%求相位谱
n=0:length(x1)-1;
f=n*fs_n/length(x1);
x1_abs = abs(x1_fd);
ph= 2*angle(x1_fd(1:length(x1)/2));
ph= ph *180/pi;
plot(f(1:length(x1)/2),ph(1:length(x1)/2));
xlabel('频率/hz'),ylabel('相角'),title('相位谱');

insérez la description de l'image ici

Ici, en raison du problème de sélection audio, le spectre de phase est trop dense.

2.1.2 Spectrogramme d'amplitude

Concept : Dans l'analyse de Fourier, la variation de l'amplitude de chaque composante avec la fréquence devient le spectre d'amplitude du signal.

Méthode de dessin : effectuez une opération modulo sur le vecteur complexe après fft du signal, et le spectre d'amplitude obtenu est obtenu.

%求幅度谱
x1_fd_abs = abs(x1_fd);
plot(f(1:length(x1)/2),x1_fd_abs(1:length(x1)/2));
xlabel('频率/hz'),ylabel('幅度'),title('幅度谱');

insérez la description de l'image ici

2.2, spectre de puissance (spectre d'énergie):

Concept : Le spectre de puissance est l'abréviation de la fonction de densité spectrale de puissance, qui est définie comme la puissance du signal dans la bande de fréquence unitaire. Il représente la variation de la puissance du signal avec la fréquence, c'est-à-dire la distribution de la puissance du signal dans le domaine fréquentiel.

Méthode de dessin : Effectuez la somme des carrés de la partie réelle et de la partie imaginaire sur le vecteur complexe après la fft du signal, et le spectre de puissance est obtenu. (c'est-à-dire le carré du spectre de magnitude)

%求功率谱
for i=1:length(x1_fd)
    x1_power(i)=power(real(x1_fd(i)),2)+power(imag(x1_fd(i)),2);
end

insérez la description de l'image ici

2.3, spectrogramme :

Concept : L'abscisse du spectrogramme est le temps, l'ordonnée est la fréquence et la valeur du point de coordonnées est l'énergie des données de parole. Puisqu'un plan bidimensionnel est utilisé pour exprimer des informations tridimensionnelles, la valeur d'énergie est représentée par la couleur, et plus la couleur est foncée, plus l'énergie de la parole est forte à ce point. Cela peut être compris comme l'utilisation de coordonnées bidimensionnelles pour représenter des informations tridimensionnelles.

Méthode de dessin : ici, la fonction enframe sous le package de ressources Voicebox dans matlab est utilisée.

%求语谱图
clear all; clc; close all;
[x,Fs]=audioread('test\Far_common.wav');   %读入数据文件
wlen=800; inc=80; win=hanning(wlen);% 设置帧长,帧移和窗函数
N=length(x); time=(0:N-1)/Fs;       % 计算时间
y=enframe(x,win,inc)';              % 分帧
fn=size(y,2);                       % 帧数
frameTime=(((1:fn)-1)*inc+wlen/2)/Fs; % 计算每帧对应的时间
W2=wlen/2+1; n2=1:W2;
freq=(n2-1)*Fs/wlen;                % 计算FFT后的频率刻度
Y=fft(y);                           % 短时傅里叶变换
clf                                 % 初始化图形
% 画出语谱图        
set(gcf,'Position',[20 100 600 500]);            
axes('Position',[0.1 0.1 0.85 0.5]);  
imagesc(frameTime,freq,abs(Y(n2,:))); % 画出Y的图像  
axis xy; ylabel('频率/Hz');xlabel('时间/s');
title('语谱图');
% 画出语音信号的波形  
axes('Position',[0.07 0.72 0.9 0.22]);
plot(time,x,'k');
xlim([0 max(time)]);
xlabel('时间/s'); ylabel('幅值');
title('语音信号波形');

insérez la description de l'image ici

Ce qui précède est mon résumé des connaissances de base du spectre d'amplitude, du spectre de phase et du spectre d'énergie rencontrés dans le processus de traitement et d'analyse du signal audio. S'il y a une erreur, veuillez me corriger.

Je suppose que tu aimes

Origine blog.csdn.net/qq_44085437/article/details/125376660
conseillé
Classement