课 程 设 计 (1)
原文
audioread
Read audio file
Syntax
[y,Fs] = audioread(filename)
[y,Fs] = audioread(filename,samples)
[y,Fs] = audioread(___,dataType)
Description
Examples
Input Arguments
Output Arguments
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文件时,即使是单声道数据文件,也会当成立体声文件来读。