Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

audioread

读取音频文件

说明

示例

[y,Fs] = audioread(filename) 从名为 filename 的文件中读取数据,并返回样本数据 y 以及该数据的采样率 Fs

示例

[y,Fs] = audioread(filename,samples) 读取文件中所选范围的音频样本,其中 samples[start,finish] 格式的向量。

示例

[y,Fs] = audioread(___,dataType) 返回数据范围内与 dataType'native''double')对应的采样数据,可以包含先前语法中的任何输入参数。

示例

全部折叠

从示例文件 handel.mat 创建 WAVE 文件,并将此文件读回 MATLAB®。

在当前文件夹中创建 WAVE (.wav) 文件。

load handel.mat

filename = 'handel.wav';
audiowrite(filename,y,Fs);
clear y Fs

使用 audioread 将数据读回 MATLAB。

[y,Fs] = audioread('handel.wav');

播放音频。

sound(y,Fs);

从示例文件 handel.mat 创建 FLAC 文件,然后仅读取前 2 秒的内容。

在当前文件夹中创建 FLAC (.flac) 文件。

load handel.mat

filename = 'handel.flac';
audiowrite(filename,y,Fs);

仅读取前 2 秒的内容。

samples = [1,2*Fs];
clear y Fs
[y,Fs] = audioread(filename,samples);

播放样本。

sound(y,Fs);

创建一个 .flac 文件,读取文件的前 2 秒内容,然后返回原生整数格式的音频。

在当前文件夹中创建 FLAC (.flac) 文件。

load handel.mat
filename = 'handel.flac';
audiowrite(filename,y,Fs);

仅读取前 2 秒内容,然后指定数据并查看采样数据 y 的数据类型。y 的数据类型为 double

samples = [1,2*Fs];
clear y Fs
[y,Fs] = audioread(filename,samples);
whos y
  Name          Size             Bytes  Class     Attributes

  y         16384x1             131072  double              

请求文件原生格式的音频数据,然后查看采样数据 y 的数据类型。请注意 y 的新数据类型。

[y,Fs] = audioread(filename,'native');
whos y
  Name          Size             Bytes  Class    Attributes

  y         73113x1             146226  int16              

输入参数

全部折叠

要读取的文件的名称,指定为包含文件扩展名的字符向量或字符串标量。如果已指定路径,它可以是绝对、相对或部分路径。

示例: 'myFile.mp3'

示例: '../myFile.mp3'

示例: 'C:\temp\myFile.mp3'

audioread 支持以下文件格式。

平台支持文件格式
所有平台WAVE (.wav)
OGG (.ogg)
FLAC (.flac)
AU (.au)
AIFF(.aiff.aif
AIFC (.aifc)
Windows® 7(或更高版本)、Macintosh 和 Linux®MP3 (.mp3)
MPEG-4 AAC(.m4a.mp4

在低于 Windows 7 的 Windows 平台上,audioread 不读取包含 MP3 编码数据的 WAVE 文件。

在 Windows 7(或更高版本)平台中,audioread 可能还读取 Windows Media® Foundation 支持的任何文件。

在 Linux 平台中,audioread 可能还读取 GStreamer 支持的任何文件。

audioread 可以从 Windows 7 或更高版本、Macintosh 和 Linux 上的 MPEG-4(.mp4.m4v)视频文件、从 Windows 7(或更高版本)和 Linux 平台上的 Windows Media 视频 (.wmv) 和 AVI (.avi) 文件中提取音频。

数据类型: char | string

要读取的音频样本,指定为 [start,finish] 格式的二元素向量,其中 startfinish 是要读取的第一个和最后一个样本,是正整数标量。

  • start 必须小于或等于 finish

  • startfinish 必须小于文件中的音频样本数,

  • 可以使用 inf 指示文件中的最后一个样本。

注意

Windows 7 平台上读取某些 MP3 文件的部分内容时,audioread 可能会读取不同范围的样本。这是由于基础 Windows Media Foundation 框架的局限性所致。

在 Linux 平台上读取某些 MP3 和 M4A 文件的部分内容时,audioread 可能会读取不同范围的样本。这是由于基础 GStreamer 框架的局限性所致。

示例: [1,100]

数据类型: double

音频数据 y 的数据格式,指定为以下值之一:

'double'双精度的归一化样本。
'native'在文件中找到的原生格式的样本。

对于已压缩的音频格式,例如未按照整数格式存储数据的 MP3 和 MPEG-4 AAC,'native' 默认为 'single'

数据类型: char | string

输出参数

全部折叠

文件中的音频数据,返回为 m×n 矩阵,其中 m 是读取的音频样本数,n 是文件中的音频通道数。

  • 如果未指定 dataType,或者 dataType'double',则 ydouble 类型,矩阵元素是介于 −-1.0 和 1.0 之间的归一化值。

  • 如果 dataType'native',则 y 可以是多个 MATLAB® 数据类型之一,具体取决于输入文件的文件格式和 BitsPerSample 值。调用 audioinfo 以确定文件的 BitsPerSample 值。

    文件格式BitsPerSample y 的数据类型y 的数据范围
    WAVE (.wav)8uint80 ≤ y ≤ 255
    16int16-32768 ≤ y ≤ +32767
    24int32-2^31 ≤ y ≤ 2^31–1
    32int32-2^31 ≤ y ≤ 2^31–1
    32single-1.0 ≤ y ≤ +1.0
    64double-1.0 ≤ y ≤ +1.0
    WAVE (.wav) (u-law)8int16-32124 ≤ y ≤ +32124
    WAVE (.wav) (A-law)8int16-32256 ≤ y ≤ +32256
    FLAC (.flac)8uint80 ≤ y ≤ 255
    16int16-32768 ≤ y ≤ +32767
    24int32-2^31 ≤ y ≤ 2^31–1
    MP3 (.mp3)、MPEG-4 AAC (.m4a.mp4)、OGG (.ogg) 和某些压缩的 WAVE 文件不适用single-1.0 ≤ y ≤ +1.0

注意

其中,ysingledoubleBitsPerSample 是 32 或 64,y 中的值可能会超过 −1.0 或 +1.0。

音频数据 y 的采样率(以赫兹为单位),返回为正标量。

局限性

  • 对于 Windows 7 或更高版本和 Linux 平台上的 MP3、MPEG-4 AAC 和 AVI 音频文件,audioread 读取的样本数量可能比预期的少。在 Windows 7 平台上,这是由于基础 Media Foundation 框架所致。在 Linux 平台上,这是由于基础 GStreamer 框架的局限性所致。如果需要精确的样本读取,请使用 WAV 或 FLAC 文件。

  • 在 Linux 平台上,audioread 读取包含用作立体声数据的单通道数据的 MPEG-4 AAC 文件。

在 R2012b 中推出