Dsp.audioplayer 和 dsp.audiorecorder
一、Dsp.audioplayer 这个是matlab 的DSP工具箱中对象,可以使用电脑的音频设备发出音频信号。(这个功能在将来发布的版本中可能会被去掉,会被audiodevicewriter 替代)
1. 要预先设置定义好音频播放对象。
H = dsp.AudioPlayer 返回一个音频对象,可以使用音频输出设备实时播放音频信号。
H = dsp.AudioPlayer (‘PropertyName’, PropertyValue, ,,,)
属性的含义:
(1).DeviceName 将音频数据输出的设备,默认Default,为电脑的标准输出设备。
(2).sampleRate 每秒发送的音频设备的采样数。默认44100,可调。
(3).DeviceDataType 设备使用的数据类型。(Determine from input data type,8-bit integer,16-bit integer,24-bit integer,或32-bit float。默认是Determine from input data type)
(4).BufferSizeSource 缓冲区的来源,Auto或者Property。前者为默认,表示根据SampleRate计算出适当的缓冲区大小。
(5).BufferSize 缓冲区大小(整数),为声卡缓冲区大小的一半,一个数据帧不能传递到队列,直到设备清空缓冲区,这会引起延迟。延迟是设备清空队列和缓冲区所用的时间。BufferSize必须小于有效排队时长。该属性是可调的。调整此属性涉及设备延迟和丢失数据的可能性(缓冲区欠载)之间的平衡。此属性适用于将BufferSizeSource属性设置为Property。默认是4096。要将该BufferSize值设置为默认值以外的值,请先将其更改BufferSizeSource为'Property'。您可以BufferSize在属性列表中进行选择。
(6).QueueDuration 音频队列的长度,以秒为单位,默认1.0s,目的是为了平衡延迟和数据欠载之间的影响。延迟定义为:
此值是System对象的数据供应可能滞后于设备数据需求的最大时间长度。如果MATLAB ®数据吞吐速率比器件吞吐率降低,发生缓冲欠载。您可以使用OutputNumUnderrunSamples监视欠载。要纠正欠载运行,请使队列持续时间大于缓冲区。如果MATLAB数据吞吐速率高于设备吞吐速率,则会发生缓冲区溢出,从而导致System对象在将数据写入队列之前等待。为了尽量减少丢失的可能性,System对象进行检查以验证队列持续时间至少与缓冲区大小和帧大小的最大值一样大。如果不是,则队列持续时间自动设置为此最大值。在模拟开始时,队列中充满了沉默。在每个时间步,System对象都会将队列顶部的样本缓冲区发送到音频设备。如果队列中没有足够的数据来完全填充缓冲区。
(7).OutputNumUnderrunSamples 启用欠载计数输出,设置为true输出自上次调用step方法以来由于队列不足而插入的零样本数。默认是false
(8).ChannelMappingSource设备通道映射的来源指定是否确定频道映射为'Auto' 或'Property'。如果您将值设置为ChannelMappingSourceto 'Auto',则该ChannelMapping字段呈现为非活动状态。如果将此属性设置为'Property',则ChannelMapping字段中指定的矢量将用于路由输出。
(9).ChannelMapping 数据到设备通道映射用于表示数据和设备输出通道之间映射的有效通道索引向量。术语“ 频道映射”是指将选定音频设备上的频道与数据频道相关联的1对1映射。当您播放音频时,通道映射允许您指定音频数据的哪个通道输出特定的音频数据通道。默认情况下,该ChannelMapping字段为[1:MAXOUTPUTCHANNELS],其中MAXOUTPUTCHANNELS取决于所选设备。
2. 调用step方法发送音频数据到设备
Step方法: 将音频写入音频输出设备
step(H,AUDIO) 将一帧AUDIO样本写入音频输出设备。
Underrun = step(H,AUDIO)将一帧AUDIO 样本写入音频输出设备。输出Underrun指示自上次调用step方法以来由于队列欠载而插入的零样本数 。此OutputNumUnderrunSamples属性适用于将属性设置 为 true。
二、 Dsp.audioRecorder 对象使用电脑的音频设备录制音频数据。
1. 定义并设置音频录制对象。
H = dsp.AudioRecorder 返回一个录音对象,使用音频输入设备实时录制音频样本
H = dsp.AudioRecorder('PropertyName',PropertyValue, ...)返回一个录音机对象,H每个属性设置为指定的值。
属性:
DeviceName 从中获取音频数据的设备,默认为电脑标准输入设备。
SampleRate 从音频设备读取的每秒采样数将信号中每秒的采样数指定为整数。默认值是44100.此属性是可调整的。
NumChannels 音频通道数以整数形式指定音频通道的数量。默认值是2。
DeviceDataType 设备使用的数据类型指定用于由该装置获取的音频数据作为数据类型Determine from output data type,8-bit integer,16-bit integer,24-bit integer,或32-bit float。默认是Determine from output data type。
BufferSizeSource 缓冲区大小的来源指定如何确定缓冲区大小为Auto或Property。默认是Auto。
BufferSize
QueueDuration
SamplesPerFrame输出信号中的采样数量将音频记录器输出中的采样数指定为整数。默认值是1024。
OutputNumOverrunSamples 启用超限计数输出设置为true输出自上次调用step方法以来由于队列溢出而丢弃的样本数。默认是false。
2. 调用step方法录制来自录音设备的音频
AUDIO = step(H) 从所选音频输入设备读取一帧音频样本。
[AUDIO,Overrun] = step(H) 从所选音频输入设备读取一帧音频样本。输出Overrun表示自上次调用step方法以来由于队列溢出而丢弃的样本数 。当您将OutputNumOverrunSamples属性 设置为时,此语法适用true