如何在MATLAB中生成双音频率?

sta*_*tor 7 audio matlab

我有兴趣在运行时产生音频,频率和持续时间是可变参数.在MATLAB中生成此声音文件的最佳方法是什么?并且可以在脚本中访问它以便以后用于与以不同频率/持续时间以类似方式生成的其他声音文件连接?提前感谢您的评论.

gno*_*ice 19

给定矢量将播放的持续时间取决于矢量中的元素数量和采样率.例如,当以1 kHz播放时,1000个元素的矢量将持续1秒.以500 Hz的频率播放时,它将持续2秒.因此,您应该做的第一个选择是您要使用的采样率.为避免混叠,采样率应为信号最大频率分量的两倍.但是,您可能希望使其大于此值,以避免接近采样率的频率衰减.

给定1 kHz的采样率,以下示例创建给定持续时间和音频频率的声音向量(使用LINSPACESIN函数):

Fs = 1000;      %# 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)));
Run Code Online (Sandbox Code Playgroud)

当使用SOUND功能以1 kHz播放时,此向量将产生50 Hz音调2秒:

sound(y, Fs);  %# Play sound at sampling rate Fs
Run Code Online (Sandbox Code Playgroud)

然后可以使用WAVWRITE函数将矢量保存为wav文件:

wavwrite(y, Fs, 8, 'tone_50Hz.wav');  %# Save as an 8-bit, 1 kHz signal
Run Code Online (Sandbox Code Playgroud)

稍后可以使用WAVREAD函数加载声音向量.如果要连接两个声音向量,则应确保它们都设计为使用相同的采样率.