マイク

  • Google Pixel 4a

解析対象

  • バイク
    • 125cc
    • 単気筒
    • 4ストローク
    • NA
  • F1
    • 2.4L
    • V8
    • 4ストローク
    • NA
  • ブルーインパルス
    • ターボファン・エンジン

バイク

  • 1100rpm Motorcycle-1100rpm-idling

Motorcycle-1100rpm-idling-fft



  • 5000rpm Motorcycle-5000rpm

Motorcycle-5000rpm-fft



  • Revving Motorcycle-rev



F1

F1



ブルーインパルス

BlueImpulse



使用環境

  • MATLAB R2020a
  • Signal Processing Toolbox

参考

ソースコード

clear all;
close all;
clc;

% ファイル名
filename = 'filename';

% オーディオファイルに関する情報取得
info = audioinfo(filename)

% オーディオファイル読み込み(5秒分だけ)
samples = [1,5*info.SampleRate];
[y,Fs] = audioread(filename,samples,'double');

% ステレオ→モノラル
if size(y,2)
    yMono = sum(y,2) / size(y,2);
    y = yMono;
end

% 振幅グラフ
subplot(2,1,1);
plot(0:1/Fs:(length(y)-1)/Fs,y);
xlabel('Time (seconds)');
ylabel('Amplitude');
ylim([-1.5 1.5]);

% スペクトログラム
Nw = 4096;    % フレーム長
No = 1024;    % フレームシフト長(オーバーラップ1/4)

subplot(2,1,2);
spectrogram(y,Nw,No,Nw,Fs,'yaxis');
ax = gca;
ax.YScale = 'log';                % 対数表示
xlabel('Time (seconds)');
ylabel('Frequency (kHz)');

% カラーバー位置変更
colorbar('off');
c = colorbar('east');
c.Label.String = 'Power/frequency (dB/Hz)';

% サブプロットのタイトル
sgt = sgtitle(filename,'Color','red');
sgt.FontSize = 16;

% グラフを保存
[filepath,name,ext] = fileparts(filename);
saveas(gcf,strcat(name,'.png'));

% オーディオファイル再生
playerObj = audioplayer(y,Fs);
play(playerObj);