audioDeviceWriter
发挥声卡
描述
的audioDeviceWriter
系统对象™写音频样本音频输出设备。音频设备的作家的属性指定驱动程序,设备,如采样率和设备属性,深度,和缓冲区大小。
看到音频I / O:缓冲、延迟和吞吐量音频设备的详细解释作家数据流。
流数据到音频设备:
创建
audioDeviceWriter
对象并设置其属性。调用对象的参数,就好像它是一个函数。
了解更多关于系统对象是如何工作的,看到的系统对象是什么?
创建
语法
描述
返回一个系统对象,deviceWriter
= audioDeviceWriterdeviceWriter
,写音频样本实时音频输出设备。
设置SampleRate财产deviceWriter
= audioDeviceWriter (sampleRateValue
)sampleRateValue
。
每个属性集deviceWriter
= audioDeviceWriter (___,名称,值
)的名字
到指定的价值
。未指定的属性有默认值。
“BitDepth”deviceWriter = audioDeviceWriter(48000年,8位整数)
创建一个系统对象,deviceWriter
,在48千赫采样率和一个8位整数位深度。
属性
属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放
函数打开它们。
如果一个属性可调在任何时候,你可以改变它的值。
改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象。
司机
- - - - - -仅用于访问音频设备驱动程序(Windows)
声音处理软件的
(默认)|“ASIO”
|“WASAPI”
驱动程序用于访问您的音频设备,指定为声音处理软件的
,“ASIO”
,或“WASAPI”
。
ASIO预装Windows™司机不来®机器。使用
“ASIO”
驱动程序选项,安装ASIO司机以外的MATLAB®。请注意
如果
司机
被指定为“ASIO”
,使用asiosettings
设置声卡缓冲区大小的缓冲区大小audioDeviceWriter
系统对象。WASAPI司机只支持独占模式。金宝app
ASIO和WASAPI司机不提供采样率转换。ASIO和WASAPI司机,集SampleRate
采样率由您的音频设备。金宝app
这个属性只在Windows机器。Linux®机器一直使用ALSA驱动程序。Mac机器总是使用CoreAudio驱动程序。
指定默认的司机
值,您必须有一个音频工具箱™许可证。如果没有安装工具箱,指定默认的司机
值返回一个错误。
数据类型:字符
|字符串
设备
- - - - - -设备用于播放音频样本
默认的音频设备(默认)|特征向量|字符串标量
设备用于播放音频样本,指定为一个特征向量或字符串标量。使用getAudioDevices
为所选择的驱动程序可用设备列表。
数据类型:字符
|字符串
SampleRate
- - - - - -采样率信号发送到音频设备(赫兹)
44100年
(默认)|正整数
采样率信号发送到音频设备,在赫兹,指定为一个正整数。的范围SampleRate
取决于你的音频硬件。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
BitDepth
- - - - - -数据类型所使用的设备
的16位整数
(默认)|8位整数的
|24位整数的
|32位浮点数的
设备,所使用的数据类型指定为一个特征向量或字符串标量。之前进行数模转换,输入数据到指定的数据类型BitDepth
。
指定一个默认的BitDepth
,你必须有一个音频工具箱许可证。如果没有安装工具箱,指定一个默认的BitDepth
返回一个错误。
数据类型:字符
|字符串
金宝appSupportVariableSizeInput
- - - - - -金宝app支持可变帧大小
假
(默认)|真正的
选择支持可变帧大小,金宝app指定为真正的
或假
。
假
——如果audioDeviceWriter
对象被锁定,输入必须具有相同的帧大小在每个调用。音频设备的缓冲区大小是一样的输入帧大小。真正的
——如果audioDeviceWriter
对象被锁定,输入帧尺寸可以改变在每个调用。您的音频设备指定的缓冲区大小BufferSize财产。
数据类型:字符
BufferSize
- - - - - -缓冲区大小的音频设备
4096年
(默认)|正整数
缓冲区大小的音频设备,指定为一个正整数。
请注意
如果司机
被指定为“ASIO”
,打开ASIO UI设置声卡的缓冲区大小BufferSize
你的价值audioDeviceWriter
系统对象。
依赖关系
要启用这个特性,设置金宝appSupportVariableSizeInput来真正的
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
ChannelMappingSource
- - - - - -源输入矩阵和设备通道之间的映射
“汽车”
(默认)|“属性”
源输入矩阵的列和渠道之间的映射的音频输出设备,指定为“汽车”
或“属性”
。
“汽车”
——默认设置确定输入矩阵的列之间的映射和通道的音频输出设备。例如,假设您的输入与四列是一个矩阵,和您的音频设备有四个频道。第1列的输入设备的数据写入通道1,第2列输入数据写入通道2的设备,等等。“属性”
——这是ChannelMapping属性决定了输入矩阵的列之间的映射和通道的音频输出设备。
数据类型:字符
|字符串
ChannelMapping
- - - - - -默认的输入矩阵和设备通道之间的映射
(1:MaximumOutputChannels)
(默认)|标量|向量
默认的输入矩阵的列和渠道之间的映射输出设备,指定为一个标量或矢量的有效通道指数。看到为audioDeviceWriter指定通道映射例子以获取更多信息。
列之间的选择性映射输入矩阵和声卡的输出渠道,你必须有一个音频工具箱许可证。如果没有安装工具箱,指定一个默认的ChannelMapping
返回一个错误。
请注意
以确保单声道输出只有一个频道的音响设备,使用默认值ChannelMapping
设置和提供一个立体声信号通道都是零。
例子:outputLeftOnly = [x(: 1) 0(大小(x, 1), 1)];
例子:outputRightOnly =[0(大小(x, 1), 1) x (: 1)];
依赖关系
要启用这个特性,设置ChannelMappingSource来“属性”
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
使用
描述
写一帧音频样本,numUnderrun
= deviceWriter (audioToDevice
)audioToDevice
,选中的音频设备和返回音频样本数量的暗流自从上次打电话deviceWriter
。
注意:当你打电话给audioDeviceWriter
系统对象,指定的音频设备设备
属性是锁着的。一个音频设备可以被只有一个锁audioDeviceWriter
在一个时间。发布音频设备,电话释放
在你的audioDeviceWriter
系统对象。
输入参数
audioToDevice
- - - - - -音频设备
矩阵
音频信号写入设备,指定为一个矩阵。矩阵的列被视为独立的音频通道。
如果audioToDevice
的数据类型“双”
或“单一”
、音频设备作家剪辑值范围之外的[1]。对于其他数据类型,允许输入范围(最小,最大)的指定数据类型。
数据类型:单
|双
|int16
|int32
|uint8
输出参数
numUnderrun
——样品短货的数量
标量
样本数的音频设备作家队列是暗流自从上次打电话deviceWriter
。
数据类型:uint32
对象的功能
使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj
使用这个语法:
发行版(obj)
例子
从文件读取和写入音频设备
读一个MP3音频文件,播放通过默认的音频输出设备。
创建一个dsp.AudioFileReader
对象的默认设置。使用audioinfo
函数返回一个包含音频文件的信息结构。
fileReader = dsp.AudioFileReader (“speech_dft.mp3”);fileInfo = audioinfo (“speech_dft.mp3”)
fileInfo =结构体字段:文件名:“mathworks /猛击/棒/ Bdoc21b /构建/ matlab工具箱/ dsp / dsp / speech_dft。mp3的CompressionMethod:“mp3”NumChannels: 1 SampleRate: 22050 TotalSamples: 112320时间:5.0939标题:[]评论:[]艺术家:[]比特率:64
创建一个audioDeviceWriter
对象和指定采样率。
deviceWriter = audioDeviceWriter (“SampleRate”,fileInfo.SampleRate);
调用设置
减少计算负荷的初始化音频流循环。
设置(deviceWriter 0 (fileReader.SamplesPerFrame…fileInfo.NumChannels))
使用信息
函数来获得特征信息设备的作家。
信息(deviceWriter)
ans =结构体字段:司机:“ALSA”设备名称:“ALSAdefault”MaximumOutputChannels: 32
在一个音频流循环,从文件读取一个音频信号帧,帧写入你的设备。
而~结束(fileReader) audioData = fileReader ();deviceWriter (audioData);结束
关闭输入文件并释放装置。
发布(fileReader)发布(deviceWriter)
减少延迟由于输出设备缓冲区
延迟由于输出设备缓冲区是写作的时间延迟一帧的数据。修改默认的属性audioDeviceWriter
系统对象™减少延迟由于设备缓冲区大小。
创建一个dsp.AudioFileReader
系统对象与默认设置读取一个音频文件。
fileReader = dsp.AudioFileReader (“speech_dft.mp3”);
创建一个audioDeviceWriter
系统对象并指定采样率相匹配的音频文件阅读器。
deviceWriter = audioDeviceWriter (…“SampleRate”,fileReader.SampleRate);
计算延迟由于设备缓冲区,在几秒钟内。
bufferLatency = fileReader.SamplesPerFrame / deviceWriter.SampleRate% #好吧
bufferLatency = 0.0464
设置SamplesPerFrame
你的属性dsp.AudioFileReader
系统对象到256。计算的缓冲延迟秒数。
fileReader。SamplesPerFrame = 256;bufferLatency = fileReader.SamplesPerFrame / deviceWriter.SampleRate
bufferLatency = 0.0116
确定并减少短货
暗流是指输出信号的沉默,这发生在音频流循环不跟上输出设备。确定一个音频流循环的暗流,音频流中添加人工计算负载循环,然后修改你的属性audioDeviceWriter
对象减少暗流。你的结果取决于你的电脑。
创建一个dsp.AudioFileReader
对象,并指定阅读的文件。使用audioinfo
函数返回一个包含音频文件的信息结构。
fileReader = dsp.AudioFileReader (“speech_dft.mp3”);fileInfo = audioinfo (“speech_dft.mp3”);
创建一个audioDeviceWriter
对象。使用SampleRate
文件的读者的SampleRate
设备的作家。调用设置
减少计算负荷的初始化音频流循环。
deviceWriter = audioDeviceWriter (“SampleRate”,fileReader.SampleRate);设置(deviceWriter 0 (fileReader.SamplesPerFrame…fileInfo.NumChannels))
运行您的音频流回路的输入文件和输出设备。打印总样本暗流和暗流在秒。
totalUnderrun = 0;而~结束(fileReader)输入= fileReader ();numUnderrun = deviceWriter(输入);totalUnderrun = totalUnderrun + numUnderrun;结束流(的总样本暗流:% d。\ n”totalUnderrun)
总样本暗流:0。
流(的总秒暗流:% d。\ n”双(totalUnderrun) /双(deviceWriter.SampleRate))
总秒暗流:0。
释放你的dsp.AudioFileReader
和audioDeviceWriter
对象和设置计数器变量为零。
发布(fileReader)发布(deviceWriter) totalUnderrun = 0;
使用暂停
模仿一个算法,需要0.075秒的过程。停顿使音频流循环慢于设备,导致时间的沉默在输出音频信号。
而~结束(fileReader)输入= fileReader ();numUnderrun = deviceWriter(输入);totalUnderrun = totalUnderrun + numUnderrun;暂停(0.075)结束流(的总样本暗流:% d。\ n”totalUnderrun)
总样本暗流:68608。
流(的总秒暗流:% d。\ n”双(totalUnderrun) /双(deviceWriter.SampleRate))
总秒暗流:3.111474 e + 00。
释放你的audioDeviceReader
和dsp.AudioFileWriter
并设置计数器变量为零。
发布(fileReader)发布(deviceWriter) totalUnderrun = 0;
设置你的音频流的帧大小循环到2048。因为金宝appSupportVariableSizeInput
你的属性audioDeviceWriter
系统对象设置为假
您的音频设备的缓冲区大小大小作为输入帧大小是一样的。增加你的设备缓冲区大小减少暗流。
fileReader = dsp.AudioFileReader (“speech_dft.mp3”);fileReader。SamplesPerFrame = 2048;fileInfo = audioinfo (“speech_dft.mp3”);deviceWriter = audioDeviceWriter (“SampleRate”,fileReader.SampleRate);设置(deviceWriter 0 (fileReader.SamplesPerFrame fileInfo.NumChannels))
计算总暗流。
而~结束(fileReader)输入= fileReader ();numUnderrun = deviceWriter(输入);totalUnderrun = totalUnderrun + numUnderrun;暂停(0.075)结束流(的总样本暗流:% d。\ n”totalUnderrun)
总样本暗流:0。
流(的总秒暗流:% d。\ n”双(totalUnderrun) /双(deviceWriter.SampleRate))
总秒暗流:0。
增加帧尺寸减少你的总暗流音频流循环。然而,增加帧大小也会增加延迟。其他方法来减少暗流包括:
增加输入帧大小的缓冲区大小无关。增加缓冲区大小独立于输入帧的大小,你必须首先设置
金宝appSupportVariableSizeInput
来真正的
。这种方法也会增加延迟。减少了采样率。减少了采样率减少了延迟和暗流在信号分辨率的成本。
选择一个最优的驱动程序和设备为您的系统。
指定通道映射audioDeviceWriter
指定一个默认的信道映射audioDeviceWriter
对象。这个例子是硬件具体。它假定你的电脑有一个默认的音频输出设备有两个可用的频道。
创建一个audioDeviceWriter
对象的默认设置。
deviceWriter = audioDeviceWriter;
默认情况下,audioDeviceWriter
对象写可用频道的最大数量,对应于输入的列矩阵。使用信息
让你的设备的最大数量的渠道。
信息(deviceWriter)
ans =结构体字段:司机:“声音处理软件”设备名称:“主声音驱动程序”MaximumOutputChannels: 2
如果deviceWriter
叫做一列的数据,两个渠道被写入你的音频输出设备。两个通道对应一列的数据。
使用audioOscillator
对象输出你的语气audioDeviceWriter
对象。你的对象,sineGenerator
打电话时,返回一个向量。
sineGenerator = audioOscillator;
sin语气写你的音频设备。如果您使用的是耳机,你可以听到基调从两个渠道。
数= 0;而数< 500正弦= sineGenerator ();deviceWriter (sin);数=计数+ 1;结束
如果你的audioDeviceWriter
对象被称为两列的数据,两个渠道被写入你的音频输出设备。第一列对应通道1你的音频输出设备,和第二列对应通道2的音频输出设备。
写一个两列矩阵到您的音频输出设备。第一列对应于正弦语气,第二列对应于一个静态的信号。如果您使用的是耳机,你可以听到一位发言者的语气和其他静态的演讲者。
数= 0;而数< 500正弦= sineGenerator ();静态= randn(长度(sin), 1);deviceWriter ((sin,静态));数=计数+ 1;结束
指定设备的替代渠道之间的映射和列的输出矩阵表示对应于输入输出通道数字索引列。集ChannelMappingSource
来“属性”
。表明,第一列的输入输出设备的数据写入通道2,和第二列的输入数据写入通道1的输出设备。修改通道映射,您必须首先打开audioDeviceReader
对象。
(deviceWriter) deviceWriter发布。ChannelMappingSource =“属性”;deviceWriter。ChannelMapping = (2, 1);
玩你的音频信号反向映射。如果您使用的是耳机,注意语气和静态交换扬声器。
数= 0;而数< 500正弦= sineGenerator ();静态= randn(长度(sin), 1);deviceWriter ((sin,静态));数=计数+ 1;结束
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
系统在MATLAB代码生成对象(MATLAB编码器)
生成的可执行文件从这个系统对象依赖于预先构建的动态库文件(
. dll
文件)包含在MATLAB中。使用packNGo
功能包生成的代码从这个对象和所有相关的文件压缩的zip文件。使用此zip文件,您可以迁移,解压缩,并重建您的项目在MATLAB没有安装另一个开发环境。更多细节,请参阅运行在MATLAB和Simulink音频I / O特性金宝app。
另请参阅
asiosettings
|getAudioDevices
|音频设备的作家|audioDeviceReader
|audioPlayerRecorder
|dsp.AudioFileWriter
|dsp.AudioFileReader
打开举例
你们possedez一个版本modifiee de cet(中央东部东京)为例。Souhaitez-vous打开cet(中央东部东京)为例用vos修改吗?
对MATLAB
你们有派对在联合国留置权,对应这个对MATLAB:
倒实行la对saisissez-la在fenetre德对MATLAB。Les navigateurs web不sup金宝appportent Les MATLAB命令。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。