主要内容

dsp。AudioFileReader

音频文件流

描述

dsp。AudioFileReader系统对象™从音频文件中读取音频样本。

从音频文件中读取音频样本:

  1. 创建dsp。AudioFileReader对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

误判率= dsp。AudioFileReader返回一个音频文件读取器系统对象,误判率它从音频文件中读取音频。

例子

误判率= dsp。AudioFileReader (文件名返回一个音频文件读取器对象,误判率,文件名属性设置为文件名

例子

误判率= dsp。AudioFileReader (名称,值返回一个音频文件读取器系统对象,误判率,将每个指定的属性设置为指定的值。将每个属性名用单引号括起来。未指定的属性有默认值。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

将音频文件的名称指定为字符向量或字符串标量。如果FilenameIsTunableInCodegen设置为这个文件是用MATLAB编写的®路径,则不需要指定文件的全名。如果FilenameIsTunableInCodegen设置为真正的,则该文件名必须存在于当前目录中,或者必须指定完整的文件路径。文件名可以是http的web地址,比如“http://audio.wgbh.org: 8004 /”.有关示例,请参见读取和播放音频文件从http Web地址

文件名属性在生成的代码中是可调的。也就是说,在运行由该对象生成的代码时,可以将音频文件的名称作为输入传递。音频格式、音频通道数量、采样率和比特率等文件属性不可调,并且必须与您通过CodegenPrototypeFile财产。指定的原型音频文件决定了生成的代码可以读取的音频文件的属性和类型。有关示例,请参见可调谐的音频文件名称在生成的代码

支持的音频文件格式如下表所示。金宝app

平台 文件扩展名
窗户® . wav.wma.aviaif.aifc.aiffmp3.opus.au.snd, .mp4, .m4a, .flac, .ogg, .mov
非windows .avi, mp3, mp4, .m4a, wav, .flac, . ogg, aif, .aifc, .aiff, .opus, .au,爱恋,。mov

指定一个正整数作为播放文件的次数。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

将音频帧中的采样数指定为正的标量整数值。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

设置音频文件读取器对象输出的音频数据的数据类型。指定数据类型为“双”“单一”“int16”,或“uint8”

将此属性设置为true以启用的可调性文件名生成的C/ c++代码。指定的文件名必须存在于当前目录中,或者必须指定完整的文件路径。

如果FilenameIsTunableInCodegen设置为真正的,音频格式、音频通道数量、采样率和比特率等文件属性是不可调的,必须与您通过CodegenPrototypeFile财产。指定的原型音频文件决定了生成的代码可以读取的音频文件的属性和类型。例如,如果指定的原型文件是. wav文件,则生成的代码只能读取. wav文件。如果指定的原型文件采样率为44100 Hz,则生成的代码可以读取采样率为44100 Hz的文件。

数据类型:逻辑

将用于代码生成的原型音频文件的名称指定为字符向量或字符串标量。仅当文件不在MATLAB路径上时,才指定文件的完整路径。文件名可以是http网址,比如“http://audio.wgbh.org: 8004 /”

中指定的音频文件的属性文件名(如音频格式、音频通道数、采样率、比特率)必须与中指定的音频文件属性相匹配CodegenPrototypeFile.指定的原型音频文件决定了生成的代码可以读取的音频文件的属性和类型。例如,如果指定的原型文件是. wav文件,则生成的代码只能读取. wav文件。如果指定的原型文件采样率为44100 Hz,则生成的代码可以读取采样率为44100 Hz的文件。

支持的音频文件格式如下表所示:金宝app

平台 文件扩展名
窗户 . wav.wma.aviaif.aifc.aiffmp3.opus.au.snd, .mp4, .m4a, .flac, .ogg, .mov
非windows .avi, mp3, mp4, .m4a, wav, .flac, . ogg, aif, .aifc, .aiff, .opus, .au,爱恋,。mov

依赖关系

属性仅适用于FilenameIsTunableInCodegen属性设置为真正的

此属性是只读的。

此属性显示音频文件的采样率(Hz)。

数据类型:

指定要读取的样本范围,作为[形式的向量StartSampleEndSample),StartSample样本是从哪个文件读取开始的EndSample是文件读取停止的示例。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

使用

描述

例子

音频=误判率()输出一帧音频样本,音频.属性指定播放文件的次数PlayCount财产。在播放指定次数的文件后,音频包含的沉默。

音频eof= afr()返回文件结束指示符,eofeof每次输出都为真吗音频包含文件中的最后一个音频样本。

输出参数

全部展开

类中指定的值的长度的列向量返回的一帧音频样本SamplesPerFrame财产。类型中指定了音频输出的数据类型OutputDataType财产。

数据类型:||int16|uint8

文件结束指示符,返回为1或者一个0.值为1音频包含文件中的最后一个音频样本。

数据类型:逻辑

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

信息 特定音频文件的信息
结束 文件结束状态(逻辑)
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

使用标准音频输出设备读取并回放音频文件。

请注意:如果您正在使用R2016a或更早的版本,请将对对象的每个调用替换为等效的调用一步语法。例如,obj ()就变成了步骤(obj)

方法可以选择读取整个数据或指定要读取的数据范围ReadRange财产。默认情况下,ReadRange设置为[1 inf],指示文件读取器从源读取整个数据。本例中为setReadRange到3Fs,指示文件读取器读取前3秒的数据。

Afr = dsp。AudioFileReader (“speech_dft.mp3”“ReadRange”(3 * 22050));adw = audioDeviceWriter(“SampleRate”, afr.SampleRate);~isDone(afr) audio = afr();adw(音频);结束释放(误判率);释放(adw);

方法从http web地址读取音频数据dsp。AudioFileReader系统对象™。方法回放数据audioDeviceWriter系统对象。

初始化

创建一个音频文件阅读器,从读取数据http://audio.wgbh.org:8004/.设置音频设备写入器的采样率与音频文件读取器的采样率相同。

Afr = dsp。AudioFileReader (“http://audio.wgbh.org: 8004 /”
Afr = dsp。audifilereader属性:Filename: 'http://audio.wgbh.org:8004/' PlayCount: 1 SamplesPerFrame: 1024 OutputDataType: 'double' SampleRate: 44100 ReadRange: [1 Inf]
adw = audioDeviceWriter(afr.SampleRate)
adw = audioDeviceWriter with properties: Driver: 'DirectSound' Device: 'Default' SampleRate: 44100显示所有属性

阅读和回放

直接从web地址读取特定数量的数据,并使用音频设备写入器播放数据。

I = 1:1000 audio = afr();adw(音频);结束

关闭输入文件和音频输出设备。

发布(误判率)发布(adw)

从名为writeAudio.此函数从接口读取音频信号funky-stereo.wav文件,将信号抽取2倍,并将抽取后的信号写入指定的输出文件。

dsp。AudioFileReader对象从中读取音频信号funky-stereo.wav文件。的funky-stereo.wav文件有两个通道,采样率为44100 Hz,比特率为1411 kbps。的CodegenPrototypeFile属性设置为rock-stereo.wav文件。的rock-stereo.wav文件具有相同的文件属性,如音频通道数、采样率和比特率funky-stereo.wav文件。的dsp。FIRDecimator对象将输入音频信号抽取2倍。的dsp。AudioFileWriter对象将十进制信号写入输出文件myoutput.wav.由于抽取过程,输出文件的采样率为22050 Hz,比特率为2822 kbps。

类型writeAudio.m
function writeAudio(readfile,writefile) afr = dsp.AudioFileReader('FilenameIsTunableInCodegen',true,…“CodegenPrototypeFile”、“rock-stereo.wav”);误判率。文件名= readfile;% Filename是funky-stereo.wav, CodegenPrototypeFile是% rock-stereo.wav。firdec = dsp.FIRDecimator(2,'auto');% decimate by 2 afw = dsp.AudioFileWriter('SampleRate',22050);afw。文件名=写文件;while ~isDone(afr) audio = afr(); audiod = firdec(audio); afw(audiod); end release(afr); release(afw); end

为了生成代码,将文件名指定为最大长度为500的可变长度字符向量。

Readfilename = code .typeof(“一个”,[1 500],[0 1]);Writefilename = code .typeof(“b”,[1 500],[0 1]);

生成一个MEX文件codegen函数。

codegenwriteAudioarg游戏{readfilename, writefilename}
代码生成成功。
writeAudio_mex (“funky-stereo.wav”“myoutput.wav”);

限制

  • 适用于MP3、MPEG-4 AAC和AVI音频文件Windows 7及以上版本及Linux®平台,dsp。AudioFileReader对象读取的样本比预期的要少。在Windows平台上,这是由于底层Media Foundation框架的限制。在Linux平台上,这是由于底层GStreamer框架的限制。如果您需要精确的样本读取,请使用WAV或FLAC文件。

  • 要在Linux机器上读取OPUS文件,请确保已安装libsndfile 1.0.29或者更晚的版本。在Windows和Mac,此文件随MATLAB附带,可在美元MATLABROOT / bin / <平台>

算法

对象上描述的算法、输入和输出来自多媒体文件块引用页。对象属性对应于块参数,除了:

  • 对象没有对应的属性从文件继承样例时间块参数。对象总是从文件继承采样时间。

  • 对象没有对应的属性输出文件结束指示器参数。对象总是输出EOF作为最后的输出。

  • 对象没有对应的属性多媒体输出参数,因为音频是唯一支持的输出。金宝app

  • 对象没有对应的属性图像信号块参数。

  • 对象没有对应的属性输出颜色格式参数。

  • 对象没有对应的属性视频输出数据类型参数。

扩展功能

版本历史

在R2012a中引入

全部展开