Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

audiowrite

写音频文件

说明

示例

audiowrite(filename,y,Fs) 以采样率 Fs 将音频数据矩阵 y 写入名为 filename 的文件。filename 输入还指定了输出文件格式。输出数据类型取决于音频数据 y 的输出文件格式和数据类型。

示例

audiowrite(filename,y,Fs,Name,Value) 使用一个或多个 Name,Value 对组参数指定的其他选项。

示例

全部折叠

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

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

load handel.mat

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

使用 audioread 将数据读回 MATLAB。

[y,Fs] = audioread(filename);

收听音频。

sound(y,Fs);

从示例文件 handel.mat 创建 FLAC 文件并指定每样本的输出位数和注释。

load handel.mat

filename = 'handel.flac';
audiowrite(filename,y,Fs,'BitsPerSample',24,...
'Comment','This is my new audio file.');
clear y Fs

使用 audioinfo 函数查看有关新 FLAC 文件的信息。

info = audioinfo(filename) ;

info 结构体包含以下信息字段:FilenameCompressionMethodNumChannelsSampleRateTotalSamplesDurationTitleCommentArtistBitsPerSample

输入参数

全部折叠

要写入的文件的名称或文件的完整路径,指定为包含文件扩展名的字符向量或字符串标量。

根据您写入的位置,filename 可以采用以下形式之一。

位置

形式

当前文件夹

要写入当前文件夹,请在 filename 中指定文件名。

示例:'sample_audio.wav'

其他文件夹

要写入不同于当前文件夹的文件夹,请在 filename 中指定完整或相对路径名称。

示例:'C:\myFolder\sample_audio.mp3'

示例:'myFolder\sample_audio.wav'

远程位置

要写入远程位置,filename 必须包含指定为统一资源定位器 (URL) 形式的文件的完整路径:

scheme_name://path_to_file/my_file.ext

根据您的远程位置,scheme_name 可以是下表中的值之一。

远程位置scheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasb, wasbs
HDFS™hdfs

有关详细信息,请参阅处理远程数据

示例:'s3://bucketname/path_to_file/sample_audio.mp3'

audiowrite 支持以下文件格式。

平台支持文件格式
所有平台FLAC (.flac)
OGG (.ogg)
OPUS (.opus)
WAVE (.wav)
Windows®MacMPEG-4 AAC(.m4a.mp4

示例: 'myFile.m4a'

示例: '../myFile.m4a'

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

在 Windows 上写 AAC 文件时,audiowrite 使用额外的静音样本填充输出信号的前后沿。Windows AAC 编码器还在音频中放置明显淡入和淡出效果。这会在向磁盘写入音频后使它的样本数量增加。

数据类型: char | string

要写入的音频数据,指定为 m×n 实矩阵,其中 m 是要写入的音频样本数,n 是要写入的音频通道数。

如果 mn 是 1,则 audiowrite 假定此维指定音频通道数,其他维指定音频样本数。

最大通道数量取决于文件格式。

文件格式最大通道数
WAVE (.wav)1024
OGG (.ogg)255
OPUS (.opus)255
FLAC (.flac)8
MPEG-4 AAC(.m4a.mp42

y 中的数据有效范围取决于 y 的数据类型。

y 的数据类型y 的有效范围
uint80 ≤ y ≤ 255
int16-32768 ≤ y ≤ +32767
int32-2^31 ≤ y ≤ 2^31–1
single-1.0 ≤ y ≤ +1.0
double-1.0 ≤ y ≤ +1.0

超过有效范围的数据将会被裁剪。

如果 ysingledouble,则 y 中的音频数据应归一化为范围 −1.0 至 1.0(包括二者)内的值。

数据类型: single | double | int16 | int32 | uint8

音频数据 y 的采样率(以赫兹为单位),指定为大于 0 的正整数标量。当写入 .opus 文件时,audiowrite 仅支持 48000、24000、16000、12000 或 8000 的采样率。在 Windows 平台上写入到 .m4a.mp4 文件中时,audiowrite 仅支持 48000 和 44100 的采样率。

示例: 44100

数据类型: double

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'Title','Symphony No. 9','Artist','My Orchestra' 指示 audiowrite 写入一个标题为“Symphony No. 9”和艺术家信息“My Orchestra”的音频文件。

每样本的输出位数,指定为以逗号分隔的包含 'BitsPerSample' 和整数的对组。

仅对 WAVE (.wav) 和 FLAC (.flac) 文件可用。对于 FLAC 文件,仅支持 8、16 或 24 的采样位数。

示例: 'BitsPerSample',32

用于已压缩的音频文件的千位/秒 (kbit/s) 数,指定为包含 'BitRate' 和整数、以逗号分隔的对组。在 Windows 7 或更高版本中,仅 96、128、160 和 192 为有效值。

通常,较大的 BitRate 值可以提高压缩质量。

仅适用于 MPEG-4(.m4a.mp4)文件。

示例: 'BitRate',96

Ogg Vorbis 和 Ogg Opus 压缩的质量设置,指定为包含 'Quality' 和范围 [0 100] 内的数字、以逗号分隔的对组,其中 0 表示较低质量和较高的压缩率,100 表示较高质量和较低的压缩率。

仅适用于 OGG (.ogg) 和 OPUS (.opus) 文件。

示例: 'Quality',25

标题信息,指定为逗号分隔的对组,包含 'Title' 和一个字符向量或字符串标量。

数据类型: char | string

艺术家信息,指定为逗号分隔的对组,包含 'Artist' 和一个字符向量或字符串标量。

数据类型: char | string

其他信息,指定为逗号分隔的对组,包含 'Comment' 和一个字符向量或字符串标量。

数据类型: char | string

注意

Mac 平台上,audiowrite 仅将元数据写入 FLAC、OGG、OPUS 和 WAVE 文件,而不会将 'Title''Author''Comment' 字段写入 MPEG-4 AAC 文件。

算法

输出数据类型由文件格式、y 的数据类型和指定输出 BitsPerSample 决定。

文件格式y 的数据类型每样本的输出位数输出数据类型
WAVE (.wav) uint8, int16, int32, single, double8uint8
16int16
24int32
uint8, int16, int3232int32
single, double32single
single, double64double
FLAC (.flac)uint8, int16, int32, single, double8int8
16int16
24int32
MPEG-4(.m4a.mp4)、
OGG (.ogg)、
OPUS (.opus)
uint8, int16, int32, single, double不适用single

扩展功能

版本历史记录

在 R2012b 中推出