降低速度会降低音质

  • 本文关键字:速度 just-audio
  • 更新时间 :
  • 英文 :


降低AudioPlayer的播放速度会严重降低正在播放的音频的质量;音频变得非常"流畅";"嘈杂";。有没有办法解决这个问题,或者这是just_audio实现的问题?

再现:

final AudioPlayer player = AudioPlayer(); // Create audio player
player.setAsset("..."); // Load audio file
player.setSpeed(0.5); // Halve speed
player.play(); // Start playing

在回答这个问题之前,时间拉伸是一件很难实时完成的事情,因为它必须在不拉伸声波的情况下拉伸时间(拉伸声波会降低频率,从而降低音高,因此它必须拉伸时间,同时用现有声波的预制扩展来填补空白(。因此,最好的实时算法仍然会引入伪影和失真。

现在,为了回答您的问题,just_audio没有提供任何更改时间拉伸算法的选项,但它确实为每个平台使用了可用的最佳算法,用于一般用途。安卓系统使用的Sonic比安卓系统自带的算法质量更好。在iOS/AcOS上,使用了AVAudioTimePitchAlgorithmTimeDomain,在苹果提供的不同算法中,它似乎在低于1.0的速度下产生的失真最小,尽管较新的iPhone/iOS版本可能会产生更高质量的输出。在网络浏览器上,它使用网络浏览器提供的任何算法。

如果你需要尝试替代方案,你需要复制just_audio并编辑选择算法的代码。你不太可能为Android和web找到更好的选项,但你可能想尝试不同的iOS/AcOS算法,在代码中搜索AVAudioTimePitchAlgorithmTimeDomain,并将其更改为苹果文档中列出的其他选项之一。如果你有专门的用例,你可能会发现其他算法中的一个效果更好。

相关内容

  • 没有找到相关文章