采样率改变正弦波的音高,sound() 函数,MATLAB

Posted

技术标签:

【中文标题】采样率改变正弦波的音高,sound() 函数,MATLAB【英文标题】:Sample rate changes pitch of sine wave, sound() function, MATLAB 【发布时间】:2014-04-04 00:42:09 【问题描述】:

我有一个小的 .wav 文件,我想使用 MATLAB 中的 sound() 函数来播放它。我已经搞砸了一点,我发现改变回放声音的采样率也会改变音高。

现在,我对音频处理的掌握虽然可能很脆弱,但告诉我改变声波的采样率不应该改变声波的音高。但话又说回来,在这种情况下,我正在播放声音,而不是录制它。所以我想知道我看到的音高偏移是否是由于播放采样率和录音采样率之间的差异造成的。

是这样吗,还是我完全误解了 sound() 函数的工作原理?

谢谢。

-肖恩

【问题讨论】:

【参考方案1】:

如果您考虑以 48kHz 采样率播放 1kHz 正弦波,那么您每毫秒有一个正弦周期或 48 个采样。现在,如果将采样率加倍至 96kHz,则相同的 48 个采样将在一半的时间(0.5ms)内播放,扬声器发出的音调将是频率的两倍(2kHz)。

【讨论】:

感谢您的回答。所以这意味着要获得最准确的预录文件回放,我需要以与录制声音字节相同的采样率进行回放? 是的,这将为您提供最佳的频率精度。

以上是关于采样率改变正弦波的音高,sound() 函数,MATLAB的主要内容,如果未能解决你的问题,请参考以下文章

在 Numpy 中从一个音高到另一个音高的正弦波滑音

如何使用 AVFoundation 以正确的音高播放不同采样率的音频文件?

怎么用ADC采样正弦信号来计算峰值

是否可以更改音频队列的播放音高

一起Talk Android吧(第四百一十四回:使用三角函数绘制正弦波的优化)

急!!!用运算放大器设计一个方波、正弦波、三角波的信号发生器