DSP音频功能块到音频输出

时间:2013-09-18 14:55:21

标签: matlab signal-processing simulink

我有一个simulink块,它从matlab获取一个函数,并将其输出作为“To Audio Device”图的输入。我得到的错误是Port Audio:无效的通道数。所以我添加了变量H来用DSP.AudioRecorder录制音频,但我无法将其设置为输出H = fcn()..所以主要问题是这是最简单的方法,因为我现在很迷茫。谢谢!

我的以下代码是:

 function y = fcn()
 %#codegen
 Fs = 125;      %# Samples per second
 toneFreq = 50;  %# Tone frequency, in Hertz
 nSeconds = 2;   %# Duration of the sound
 y = sin(linspace(0, nSeconds*toneFreq*2*pi, round(nSeconds*Fs)));

coder.extrinsic('sound');
coder.extrinsic('audiowrite');

H = dsp.AudioRecorder('DeviceName','Default', 'SampleRate', 48000, 'BufferSizeSource',       'Property', 'BufferSize', 512, 'NumChannels', 2);
step(H);

sound(y, Fs);  %# Play sound at sampling rate Fs

audiowrite(y, Fs, 8, 'tone_50Hz.wav');  %# Save as an 8-bit, 1 kHz signal

1 个答案:

答案 0 :(得分:0)

“To Audio Device”块将每列视为一个频道。您应该在返回fcn的输出之前转置数据y。

目前您收到的错误是因为您的行向量为y,并且此行向量中的每个样本都被视为一个单独的通道。