【问题标题】:Change voice/pitch while recording audio录制音频时更改声音/音高
【发布时间】:2015-08-15 16:53:43
【问题描述】:

我正在使用AudioRecord 类通过麦克风录制用户的声音。无论如何在录制过程中改变用户的声音或pitch。如果没有这种方法,我该如何调制输出音频文件并更改其pitch 并将文件保存回来。我不需要在播放音频时改变音高的解决方案。提前致谢。

【问题讨论】:

  • 这将涉及通过某种过滤器传递您从AudioRecord 获得的数据。最简单的此类过滤器将是进行最近邻采样的过滤器。第二个最简单的可能是线性插值。

标签: android audio


【解决方案1】:

如果您不关心保持播放速度,那么最简单的解决方案是更改播放速度。 IE。您可以以每秒 22050 个样本的速率录制声音,然后将其放入文件中,就好像它是以 44100 sps 录制的一样。播放文件时,速度将提高 2 倍,音高分别提高 1 个八度。

如果你想保持采样率,或者你想改变一些分数比率的速度,那么你需要对你的声音数据应用一些重采样算法。

如果您想在保留播放时间的同时只改变音高,您需要自己实现一些算法。
有很多算法可以改变音高。它们的音质各不相同。 根据我的口味,通过执行基于 FFT 的时间拉伸算法可以获得更好的质量,这将使您的声音更长或更短,同时保持音高。之后应用一个具有倒数比例的重采样算法,这将改变音高和速度,速度将恢复到原始,而音高将根据需要改变。

我认为 stile "someObject.doEverythingGoodForMe()" 中没有适用于所有平台的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多