【问题标题】:Theory behind Autotune/vocoderAutotune/声码器背后的理论
【发布时间】:2012-05-24 14:13:18
【问题描述】:

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

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

感谢您的帮助!

【问题讨论】:

  • 您可能想通过dsp.stackexchange.com 询问这个信号价格问题
  • 你可能想试试 Melodify SDK。

标签: audio core-audio audio-processing


【解决方案1】:

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

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

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

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

【讨论】:

  • 所以在有人唱歌的情况下,为了让他们的音调到正确的音符,你确定最近的音符并移动。但是,如果我想重新创建歌曲化效果,可以借助频率丰富的载波文件将简单的声音变成音乐怎么办?
【解决方案2】:

第一步是音高检测。音高检测算法有多种,维基百科中简要介绍: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-SOLA

【讨论】:

  • 在频域中,音高检测可以简单地检测哪个“bin”或频率索引具有最大能量吗? (每个索引处复数幅度中的最大值)虽然有点道理,但似乎太容易令人难以置信。维基页面没有提到这一点。
  • 两个实际问题: 1. 对于复杂的声音,基频可能不是最强的,所以你需要看看峰值之间的关系。 2. bin 大小通常太大而无法获得准确的近似值,因此您还需要考虑相位。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多