课 程 设 计 (1)
原文
Syntax
-
[y,Fs] = audioread(filename)
-
[y,Fs] = audioread(filename,samples)
Description
[y
,Fs
] = audioread(filename
)
reads data from the file named filename
, and returns sampled data, y
, and a sample rate for that data, Fs
.
[y
,Fs
] = audioread(filename
,samples
)
reads the selected range of audio samples in the file, where samples
is a vector of the form [start,finish]
.
[y
,Fs
] = audioread(___,dataType
)
returns sampled data in the data range corresponding to the dataType
of 'native'
or 'double'
, and can include any of the input arguments in previous syntaxes.
Examples
Create a WAVE file from the example file handel.mat
, and read the file back into MATLAB®.
Create a WAVE (.wav
) file in the current folder.
Read the data back into MATLAB using audioread
.
Play the audio.
Create a FLAC file from the example file handel.mat
, and then read only the first 2 seconds.
Create a FLAC (.flac
) file in the current folder.
Read only the first 2 seconds.
Play the samples.
Create a FLAC file and read the first 2 seconds according to the previous Example. Then, view the data type of the sampled data y
.
Name Size Bytes Class Attributes
y 16384x1 131072 double
The data type of y
is double
.
Request audio data in the native format of the file, and then view the data type of the sampled data y
.
Name Size Bytes Class Attributes
y 16384x1 32768 int16
The data type of y
is now int16
.
Output Arguments
Audio data in the file, returned as an m
-by-n
matrix, where m
is the number of audio samples read and n
is the number of audio channels in the file.
-
If you do not specify dataType
, or dataType
is 'double'
, then y
is of type double
, and matrix elements are normalized values between −1.0 and 1.0.
-
If dataType
is 'native'
, then y
can be one of several MATLAB data types, depending on the file format and the BitsPerSample
value of the input file. Call audioinfo
to determine theBitsPerSample
value of the file.
File Format | BitsPerSample | Data Type of y | Data Range of y |
WAVE (.wav ) |
8 |
uint8 |
0 ≤ y ≤ 255 |
16 |
int16 |
-32768 ≤ y ≤ +32767 |
24 |
int32 |
-2^32 ≤ y ≤ 2^32–1 |
32 |
int32 |
-2^32 ≤ y ≤ 2^32–1 |
32 |
single |
-1.0 ≤ y ≤ +1.0 |
64 |
double |
-1.0 ≤ y ≤ +1.0 |
FLAC (.flac ) |
8 |
uint8 |
0 ≤ y ≤ 255 |
16 |
int16 |
-32768 ≤ y ≤ +32767 |
24 |
int32 |
-2^32 ≤ y ≤ 2^32–1 |
MP3 (.mp3 ), MPEG-4 AAC (.m4a , .mp4 ), OGG (.ogg ), and certain compressed WAVE files |
N/A |
single |
-1.0 ≤ y ≤ +1.0 |
Note: Where y is single or double and the BitsPerSample is 32 or 64, values in y might exceed −1.0 or +1.0.
|
Sample rate, in hertz, of audio data y
, returned as a positive scalar.
Limitations
-
For MP3, MPEG-4 AAC, and AVI audio files on Windows 7 or later and Linux platforms, audioread
might read fewer samples than expected. On Windows 7 platforms, this is due to a limitation in the underlying Media Foundation framework. On Linux platforms, this is due to a limitation in the underlying GStreamer framework. If you require sample-accurate reading, work with WAV or FLAC files.
-
On Linux platforms, audioread
reads MPEG-4 AAC files that contain single-channel data as stereo data.
翻译
调用结构&描述
[y, Fs] =audioread(filename)
从以“filename”为文件名的文件中读取数据,并返回抽样数据y和此数据的抽样率Fs 。
[y, Fs] =audioread(filename, samples)
以选定范围从文件中读取音频样本,其中 samples 是具有[start, finish]形式的向量。
[y, Fs] =audioread( ____, dataType)
返回数据域中与 dataType 相对应的采样数据,dataType 可选“native(本地类型)”或“double(双精度型)”。
例子
可以自己从本地音乐里面选择音乐来测试。但是建议适当缩减音频长度,不然计算量会比较大,有可能卡死电脑。剪辑音频可以使用“格式工厂”,它也能用来转换文件格式。
输入 1、对于输入文件,表中给的信息已经很详细了,".wav"格式的音频是一定支持的,通用的".mp3"格式在win7以上及Linux系统上都是可以读取的。
2、 对于输入参数 samples ,在第一种调用结构中其实是隐藏了 [1, inf] 的默认samples参数,意思是从文件头读到文件尾。在第二种调用格式里面我们可以指定读取的参数范围。要注意 start, finish 两个参数都是正整数,而且他们的大小不能超出抽样个数。这个很容易理解,超出了源文件的抽样范围就不可能有数据。在使用中,可以用 [start, inf] 表示从 start 读到文件尾。
注意:当在win7平台上读取MP3以及在Linux上读取MP3&M4A格式文件时,可能会出现读取范围转移的现象,这是由于底层Windows Media Foundation框架的局限性造成的。
3、dataType有两种取值,native 或 double 。默认情况下,native 为单精度类型 single 。
输出
y 为音频数据,是一个mxn 的矩阵,m是读取文件的抽样个数,n是读取文件的音频信道个数。
· 在未明确 dataType 和 dataType 取 double 时,y 的类型也是 double。y 的元素为值介于-1.0和1.0之间的规范化值。
· 如果 dataType 取 native,y 可以为matlab所允许的几种数据类型之一。至于为哪一种类型取决于输入文件的类型,这种对应关系在上面给出的表中。
注意:当 y 为单精度或双精度数, 且 BitPerSample 为32或64时,y 的值有可能超出 -1.0~1.0。
局限
· 对于 MP3, MPEG-4 AAC, AVI音频文件,在win7及更高版本和Linux平台上,有可能会出现抽样个数比预期要少的现象。
· 在Linux上读取MPEG-4 AAC文件时,即使是单声道数据文件,也会当成立体声文件来读。