改变音频的节奏(速度)
Changing tempo (speed) of audio
我想在接近实时的情况下改变立体声音频流的速度-音频是从文件加载的,缓冲区不应该超过1秒。我尝试了SoundTouch (http://www.surina.net/soundtouch/),但是降低节奏时的质量非常糟糕。现在我正在寻找另一种方法来延长音频信号。在Audacity中实现的一种方法是基于"子带正弦建模",它产生了非常好的结果,但它非常慢。
还有Rubber Band Audio处理器库(http://breakfastquay.com/rubberband)和Dirac (http://www.dspdimension.com/technology-licensing/dirac/),它们都是商业/GPL,不完全跨平台兼容。
你能给我推荐符合以下条件的算法和/或库吗?:
- 跨平台兼容(如iOS, Android, Windows, Linux, MacOS)
- 适用于上述实时处理
- 比SoundTouch库中使用的时间拉伸方法质量更好
- 不影响音高的节奏变化
看看BASS音频库 http://www.un4seen.com/bass.html及其同伴BASS FX扩展
BASS是一个用于多个平台软件的音频库。其目的是为开发人员提供强大而高效的样本,流(MP3, MP2, MP1, OGG, WAV, AIFF,自定义生成,以及更多通过操作系统编解码器和附加组件),MOD音乐(XM, IT, S3M, MOD, MTM, UMX), MO3音乐(MP3/OGG压缩MODs)和录音功能。所有这些都在一个紧凑的DLL中,不会使您的发行版膨胀。
BASS适用于Win32、Win64、MacOS、Linux、WinCE、iOS、Android和ARM Linux平台。
BASS FX插件扩展提供了几种效果,包括反向播放和节奏&音调控制。
- 为什么在读取文件大小时文件IO速度会发生变化
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- 文件系统:复制功能的速度秘诀是什么
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 在C++中使用并行化的预期速度是多少(不是 OpenMp,而是 <thread>)
- 两个连续的 OpenMP 并行区域会相互减慢速度
- 查找标准::hash_map与标准::矢量的速度
- 加快在C++中读取/处理日志文件的速度
- 为什么这些算法的运行速度比它们应该的要快?
- 如何提高文件的读取速度?
- 通过libpqxx提高PostgreSQL数据库的更新速度
- 使用 IMFSinkWriter 编码的视频的播放速度会根据宽度而变化
- 计算车辆之间的距离并设置速度,使距离保持不变,例如 5 米
- 如何加快大字符串的解析速度?
- 如何比较两个函数的速度和性能
- 线程相互减慢速度
- 多线程减慢程序速度:无错误共享,无互斥锁,无缓存未命中,无小工作量
- 使用 Unity 构建加快C++构建速度,并减少标头依赖项
- 从 OpenCV 3 切换到 OpenCV 4 会导致网络摄像头以最大 5 fps 的速度录制,而不是通常的 30 f
- 改变音频的节奏(速度)