【发布时间】:2013-11-19 15:59:24
【问题描述】:
我的小组正在开发一个简单的 MATLAB 图形用户界面 (GUI),该界面应该记录来自麦克风的音频 - 插入或内置到计算机 - 并播放信号。到目前为止,我们已经完成了。我们的 GUI 还可以加载样本(.wav 文件等)并使用 GUI 上相同的“播放”按钮进行播放。我们有一个播放、录制、加载和保存按钮。现在对于加载或记录的样本的音高移动......我们知道我们需要一个峰值拾取算法来找到信号的基本频率。然后我们认为我们可以将这些值中的每一个乘以一个常数来改变所有这些频率的音高。我们的目标是使用这种算法并将单独的移位分配给不同的按钮或单选按钮,我们可以在其中加载我们的样本,按下按钮并通过这样做来操纵音高,然后播放它。使用峰值拾取算法会充分改变我们信号的音高,还是会在播放过程中搞砸信号?
(这不是实时处理)
【问题讨论】:
-
音高转换可以通过几种方式实现,您可以改变信号的相位,也可以下采样但继续以更高的采样率播放。第一个选项不会扭曲时间,但第二个会
-
第一种方法称为相位声码。 Phase Vocoder
标签: algorithm matlab signals pitch pitch-shifting