audioread
读取音频文件
说明
示例
读取完整的音频文件
从示例文件 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
输入参数
filename
— 要读取的文件的名称
字符向量 | 字符串标量
要读取的文件的名称,指定为包含文件扩展名的字符向量或字符串标量。
根据文件的位置,filename
可以采用下列形式之一。
当前文件夹 | 指定 示例: | ||||||||
其他文件夹 | 如果该文件不在当前文件夹或 MATLAB® 路径下的文件夹中,则在 示例: 示例: | ||||||||
Internet URL | 如果文件指定为 Internet 统一资源定位器 (URL),则 示例: | ||||||||
远程位置 | 如果文件存储在远程位置,则
根据远程位置,
有关详细信息,请参阅处理远程数据。 示例: |
示例: 'myFile.mp3'
示例: '../myFile.mp3'
示例: 'C:\temp\myFile.mp3'
audioread
支持以下文件格式。
平台支持 | 文件格式 |
---|---|
所有平台 | AIFC (.aifc ) |
AIFF(.aiff 、.aif ) | |
AU (.au ) | |
FLAC (.flac ) | |
OGG (.ogg ) | |
OPUS (.opus ) | |
WAVE (.wav ) | |
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
samples
— 要读取的音频样本
[1,inf]
(默认) | 正整数标量的二元素向量
要读取的音频样本,指定为 [start,finish]
形式的二元素向量,其中 start
和 finish
是要读取的第一个和最后一个样本,是正整数标量。
start
必须小于或等于finish
。start
和finish
必须小于文件中的音频样本数,可以使用
inf
指示文件中的最后一个样本。
注意
在 Windows 7 平台上读取某些 MP3 文件的部分内容时,audioread
可能会读取不同范围的样本。这是由于基础 Windows Media Foundation 框架的局限性所致。
在 Linux 平台上读取某些 MP3 和 M4A 文件的部分内容时,audioread
可能会读取不同范围的样本。这是由于基础 GStreamer 框架的局限性所致。
示例: [1,100]
数据类型: double
dataType
— 音频数据 y
的数据格式
'double'
(默认) | 'native'
音频数据 y
的数据格式,指定为以下值之一:
'double' | 双精度的归一化样本。 |
'native' | 在文件中找到的原生格式的样本。 |
对于已压缩的音频格式,例如未按照整数格式存储数据的 MP3 和 MPEG-4 AAC,'native'
默认为 'single'
。
数据类型: char
| string
输出参数
y
— 音频数据
矩阵
文件中的音频数据,返回为 m
×n
矩阵,其中 m
是读取的音频样本数,n
是文件中的音频通道数。
如果未指定
dataType
,或者dataType
为'double'
,则y
为double
类型,矩阵元素是介于 −1.0 和 1.0 之间的归一化值。如果
dataType
是'native'
,则y
可以是多个 MATLAB 数据类型之一,具体取决于输入文件的文件格式和BitsPerSample
值。调用audioinfo
以确定文件的BitsPerSample
值。文件格式 BitsPerSample y 的数据类型 y 的数据范围 WAVE ( .wav
)8 uint8
0 ≤ y
≤ 25516 int16
-32768 ≤ y
≤ +3276724 int32
-2^31 ≤ y
≤ 2^31–132 int32
-2^31 ≤ y
≤ 2^31–132 single
-1.0 ≤ y
≤ +1.064 double
-1.0 ≤ y
≤ +1.0WAVE ( .wav
) (u-law)8 int16
-32124 ≤ y
≤ +32124WAVE ( .wav
) (A-law)8 int16
-32256 ≤ y
≤ +32256FLAC ( .flac
)8 uint8
0 ≤ y
≤ 25516 int16
-32768 ≤ y
≤ +3276724 int32
-2^31 ≤ y
≤ 2^31–1MP3 ( .mp3
)、MPEG-4 AAC (.m4a
、.mp4
)、OGG (.ogg
)、OPUS (.opus
) 和某些压缩的 WAVE 文件不适用 single
-1.0 ≤ y
≤ +1.0
注意
其中,y
是 single
或 double
,BitsPerSample
是 32 或 64,y
中的值可能会超过 −1.0 或 +1.0。
Fs
— 采样率
正标量
音频数据 y
的采样率(以赫兹为单位),返回为正标量。
局限性
对于 Windows 7 或更高版本和 Linux 平台上的 MP3、MPEG-4 AAC 和 AVI 音频文件,
audioread
读取的样本数量可能比预期的少。在 Windows 7 平台上,这是由于基础 Media Foundation 框架所致。在 Linux 平台上,这是由于基础 GStreamer 框架的局限性所致。如果需要精确的样本读取,请使用 WAV 或 FLAC 文件。在 Linux 平台上,
audioread
读取包含用作立体声数据的单通道数据的 MPEG-4 AAC 文件。
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2012b 中推出R2022a: 读取 Opus (.opus
) 音频文件
您可以读取 Ogg Opus 音频文件。
R2021b: 支持基于线程的环境
您可以使用 MATLAB backgroundPool
在后台运行 audioread
。
R2021a: 从 HTTP 或 HTTPS URL 读取音频文件
您可以通过将 filename
指定为包含协议类型 'http://'
或 'https://'
的字符串或字符向量,从 Internet URL 读取音频文件。
R2020b: 从远程位置读取音频文件
您可以读取存储在远程位置(如 Amazon S3、Windows Azure Blob 储存和 HDFS)的音频文件。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)