批量加速/转换音频文件的工具

批量加速/转换音频文件的工具

我想在手机上收听某些播客,但遇到了两个常见问题:

  1. 音频的格式很奇怪(有些无法在我的手机上播放)。
  2. 響鳴很慢。

我想使用类似sox或的工具avconv来批量转换文件。由于这只是语音,并且是在手机上使用,因此小型低质量文件对我来说是最好的。我使用以下方法取得了一些成功avconv

avconv -i weird.wma normal.ogg

不幸的是,这个命令会创建一个非常大的 ogg 文件,我无法让它播放得更快。理想情况下,这个特定文件的播放速度应为原始速度的 170%。

答案1

使用 FFmpeg 转换

FFmpeg 有一个内置音频过滤器,可以改变节奏而不改变音调。我们需要将文件编码为手机播放的某种格式。这当然取决于手机。许多现代智能手机都喜欢 AAC 音频:

ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libfaac -q:a 100 final.m4a

在这里,您可以使用选项更改质量-q:a,其中值以百分比表示,值越高越好。

或者,MP3 音频的 (平均) 质量为 4,其中越低表示越好 (0 导致大约 245 kBit/s):

ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libmp3lame -q:a 4 final.mp3

如果您的手机不支持其中任何一种,我们将不得不进一步挖掘。哦,我ffmpeg在这里使用了同义词avconv。它们并不完全相同,但对于上述情况,您可以使用任一工具。如果您的 FFmpeg 或 avconv 版本不捆绑 FAAC 或 LAME,请从获取静态 Linux 版本FFmpeg 下载页面


如果您不喜欢 FFmpeg 过滤器,这里还有另一种方法:

提取原始音频

首先,您需要以未压缩的格式提取原始音频流,例如 WAV 容器中的 PCM 立体声 16 位音频。

ffmpeg -i weird.wma temp.wav

现在我们可以使用该文件temp.wav来缩短音频。我们有几个选择:

选项 1:SoX

索克斯提供了几种不同的过滤器,可让您更改速度、音调或节奏。单纯改变速度会增加音调以补偿长度,因此听起来可能不自然。

tempo过滤器使用高级算法来缩短文件但保持音调,方法是将文件划分为更小的时间窗口然后“合并”它们,从而加快节奏。例如:

sox temp.wav output.wav -tempo 1.7

这听起来可能有点奇怪。如果是这样,请采取选项 2。

选项 2:Paul 的极限声音拉伸

该程序承诺提供比 SoX 更好的质量,并且有一个用 Python 编写的命令行版本可从 GitHub 获取。命令可能看起来像这样 - 请记住,它默认会拉伸文件,因此为了缩短它,我们计算 1.7 的倒数,即 0.59:

python paulstretch_stereo.py -s 0.59 temp.wav output.wav

将原始音频转换为压缩文件

现在我们有了一个缩短的 WAV 文件,但它仍未压缩,因此我们需要再次压缩它。请参阅本文顶部的选项以了解各种格式。

ffmpeg -i output.wav -c:a …

上面概述的非 ffmpeg 方法将丢失您的元数据;您可以在将 output.wav 转换为压缩格式时再次添加它,如下所示:

ffmpeg -i output.wav -i weird.wma -map 0 -map_metadata 1 -c:a ...

相关内容