【问题标题】:How to speed up music playing in real-time in android without changing the pitch?如何在不改变音高的情况下加快在 android 中实时播放的音乐?
【发布时间】:2014-08-15 00:01:23
【问题描述】:

我需要能够以不同的速度播放 MP3 文件而不影响音高(或在加速后改变音高,无论如何), 此外,这种过渡需要尽可能无缝。

显然有应用程序可以做到这一点,所以这是可能的,但 MediaPlayer API 似乎不可能,SoundPool API 只能改变音高和速率(除非我错过了什么)。

关于如何实现这一点的任何想法? 任何可以提供帮助的 API / 3rd 方库?

谢谢。

【问题讨论】:

  • 尝试参考this question
  • 您有没有找到实现这一目标的方法?
  • 我们已经结束使用第 3 方库、写入流并使用 AudioTrack 读取它。

标签: android audio


【解决方案1】:

有一种称为Time Scale Modification 的通用技术可以做到这一点。这是我尚未评估的可用工具:http://sourceforge.net/projects/mffmtimescale/

如果您放大音频的时间线,它看起来很像一个老式的心跳监视器——波峰和波谷的摆动模式。对于元音,模式是准静止的,这大致意味着它是重复的,就像健康的心跳一样。一个单一的 ahhhh 元音可以在正常语音中重复其模式 3-7 次。 TSM 算法会删除其中的一些重复,并且需要使用过滤器通过剪切/连接不完美的重复来引入伪影。空白也可以减少,但需要注意不要删除所有空白——在英语中,“football”这个词实际上在“foot”和“ball”之间有一个间隙(慢慢地大声说出来)。 TSM 也可以反其道而行之,在正确的位置插入空白空间或在元音中添加音高周期重复。这一切都加起来相当复杂,并且在某种程度上依赖于语言,需要大量调整——这对于大多数应用程序来说意味着你不想开发自己的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多