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!
我正在使用 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!