2

我一直在网上寻找有关声码器或自动调谐的材料,但没有得到任何令人满意的答案。有人可以简单地解释一下如何使用载体声音文件自动调整给定的声音文件吗?(我熟悉 ffts、窗口化、重叠等,当我们拥有载体的 ffts 和必须调制的原始声音文件时,我只是不明白我们该怎么做)

编辑:再环顾四周后,我终于确切地知道我在寻找什么——一个通道声码器。它的工作方式是,它需要两个输入,一个是语音信号,另一个是频率丰富的音乐信号。音乐信号由语音信号的包络调制,输出的信号听起来像用乐音唱歌的声音。

谢谢你的帮助!

4

3 回答 3

3

使用相位声码器调整音高基本上是音高估计加上频域中的插值。

相位声码器重建方法可能会以新的 FFT bin 间距重新采样频谱,以将所有频率向上或向下移动某个比率。相位声码器算法还使用相邻 FFT 帧之间共享的信息,以确保此插值结果可以创建跨帧边界的连续波形。例如,它调整插值结果的相位,以确保连续的正弦波重建是连续的,而不是在帧之间出现中断或不连续或相位抵消。

将频谱向上或向下移动多少取决于音高估计,并计算估计的源音高与目标音高之间的比率。同样,相位声码器使用有关 FFT 帧之间任何相位差的信息来帮助更好地估计音调。这可以通过使用比单个本地 FFT 帧更多的全局信息来实现。

当然,这种频率和相位变化会抹掉瞬态细节并导致各种其他失真,因此实际的相位声码器产品可能会另外使用各种定制(通常是专有的)特殊情况技巧来尝试解决其中的一些问题。

于 2012-05-24T18:07:41.433 回答
3

第一步是音高检测。有许多音高检测算法,维基百科中简要介绍了:http ://en.wikipedia.org/wiki/Pitch_detection_algorithm 音高检测可以在频域或时域中实现。两个域中的各种技术都存在各种属性(延迟、质量等)。在 F 域中,重要的是要意识到,由于时间/频率的权衡,简单的方法是非常有限的。你可以绕过这个限制,但这需要工作。

确定音高后,将其与所需音高进行比较,并确定实际需要多少音高变化。

最后一步是音高变换,与音高检测一样,可以在 T 或 F 域中完成。其他人提到的“相位声码器”方法是F域方法。T 域方法包括(按质量递增顺序)OLA、SOLA 和 PSOLA,您可以在此处阅读其中的一些内容:http ://www.scribd.com/doc/67053489/60/Synchronous-Overlap-and-Add-索拉

于 2012-05-24T22:55:07.827 回答
1

基本上,您进行 FFT,然后在频域中将信号移动到最接近的完美半音音高。

于 2012-05-24T17:04:26.537 回答