【问题标题】:How to change audio tempo and pitch individuality using ffmpeg?如何使用 ffmpeg 更改音频速度和音高个性?
【发布时间】:2012-06-30 21:10:27
【问题描述】:

我已经设法在我的 android 项目中使用 ffmpeg 和 AudioTrack 类播放音频文件。我可以使用 AudioTrack 类的 setRate 方法更改音频的速度。但它也会改变音频的音高,我只想改变音频的速度,但我在网上找不到解决方案。

任何人都可以帮助我,因为没有对此的支持。

【问题讨论】:

    标签: android audio android-ndk ffmpeg audiotrack


    【解决方案1】:

    音高和节奏密切相关。您正在尝试做的事情称为“时间拉伸”,并且是一种有点复杂的算法。您可以在网上找到有关它的信息,可以在 here 找到它的 java 库,以及描述该过程的论文。

    【讨论】:

      【解决方案2】:

      解决方案: 我试过 SoundTouch 库。我为 android 编译成功,但后来我没有使用它的功能,因为我不知道如何使用这个库来加载音频。

      但在那之后我尝试了名为 Sonic 的库。它基本上用于语音,因为它使用 PSOLA 算法来改变音高和速度。不过没关系。

      【讨论】:

      • 嗨 vipul 。我正在尝试在我的 android 应用程序中连接和更改 mp3 文件的速度。由于我是 android 新手,我不知道如何使用您上面建议的库 Sonic。作为您对音频文件所做的工作,我希望您能解决我的问题。如果你能帮助我改变节奏,那将是一个很大的帮助。如果你有答案,我可以发布一个问题。谢谢 Vipul
      • 您好@Harsh User OpenSL ES 库,它是 android OS 的一部分并尝试这个问题OPEN SL ES 这将帮助您使用 OpensSL ES 库。
      • @Vipul Purhit 我正在开发一种视频播放器,它可以录制视频并控制其声音,即改变其音调。我该如何使用 libsonic,因为它只适用于音频文件。
      • 嗨@VipulPurohit 我浏览了Sonic Library,我看到了一个talking.bin 文件,所以你能告诉我如何通过录制或手动从任何mp3 制作那个.bin 文件,等文件。
      【解决方案3】:

      您可以在 ffmpeg 1.0 及更高版本中使用atempo filter:

      ffmpeg -i input.wav -f:a atempo=1.25 output.wav
      

      atempo 只接受 0.5 到 2.0 之间的值,但您可以通过链接多个过滤器来绕过限制:

      ffmpeg -i input.wav -f:a atempo=2,atempo=1.5 output.wav
      

      【讨论】:

      • 但是使用它会缩短音频的原始持续时间。如果我想保留原始时长和修改后的音高怎么办?
      • 至少在版本为 N-77870 的 Windows 上,您似乎需要像 ffmpeg -i input.wav -filter:a atempo=1.25 output.wav 中那样拼出单词过滤器
      • 或ffmpeg -i input.wav -af atempo=1.25 output.wav
      • ffmpeg -i input.wav -af atempo=1.0827 output.wav
      猜你喜欢
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多