Matlab中如何将声音转换为矩阵?

How is the sound converted to matrix in Matlab?

我正在使用 Matlab 的 audioread(filename,y,Fs) 函数,它将音频文件转换为矩阵。我想知道该矩阵的每个值是如何生成的。是否可以通过将您自己的值赋给矩阵然后使用 sound() 函数发声来产生像吉他的特定声音?

1) 该矩阵的每个值是如何生成的
矩阵的列数与通道数相同(1 通道 = 单声道 = 1 列;2 通道 = 立体声 = 2 列)。作为附加输入,您可以指定 'dataType':如果 'dataType''native',Matlab 将导入用于压缩的相同值,您可以使用 audioinfo() 函数先验地知道这样值。如果未指定 'dataType''double'(默认),这些值将在 [-1;+1].

范围内标准化

2) 是否可以产生特定的声音
你当然可以。尽管生成像吉他这样的复杂声音可能需要您花费相当长的时间。但可以很容易地产生给定频率的正弦音调并播放。当然要注意音频文件的正弦波频率和采样频率。
快速演示:

fs = 16000;            % sampling frequency in Hz
T = 5;                 % 5 seconds duration

t = 0:(1/fs):T;
f = 440;               % tone frequency (A4 note)
a = 0.5;               % amplitude (volume)
y = a*sin(2*pi*f*t);   % tone matrix
sound(y, fs);          % rock it!