web-dev-qa-db-ja.com

オーディオファイルを一括で高速化/変換するツール

携帯電話で特定のポッドキャストを聴きたいのですが、2つの一般的な問題があります。

  1. オーディオは奇妙な形式です(私の電話では再生されないものもあります)。
  2. 音声が遅い。

soxavconvのようなものを使用してファイルを一括変換したいと思います。これは単なる音声で携帯電話で行われるため、低品質の小さなファイルが最適です。 avconvを使用して、いくつかの成功を収めました。

avconv -i weird.wma normal.ogg

残念ながら、このコマンドは巨大なoggファイルを作成し、それをより速く再生させることはできません。理想的には、この特定のファイルは元の速度の170%で再生されます。

6
User1

FFmpegで変換

FFmpegには、ピッチを変更せずにテンポを変更するためのオーディオフィルターが組み込まれています。お使いの携帯電話が再生する形式にファイルをエンコードする必要があります。もちろん、これは電話によって異なります。 AACオーディオのような多くの最新のスマートフォン:

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

ここでは、-q:aオプションを使用して品質を変更できます。値はパーセントで表され、値が高いほど良いことを意味します。

または、(平均)品質が4のMP3オーディオ。少ないほど良い(0の場合は約245 kBit/s):

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

お使いの携帯電話がこれらのいずれもサポートしていない場合は、さらに掘り下げる必要があります。ああ、ここではffmpegavconvと同義で使用しています。それらはまったく同じではありませんが、上記の場合はどちらのツールも使用できます。お使いのバージョンのFFmpegまたはavconvにFAACまたはLAMEがバンドルされていない場合は、 FFmpegダウンロードページ から静的Linuxビルドを入手してください。


FFmpegフィルターが気に入らない場合は、次の方法があります。

生の音声を抽出する

まず、生のオーディオストリームを非圧縮形式で抽出する必要があります。 WAVコンテナ内のPCMステレオ16ビットオーディオ。

ffmpeg -i weird.wma temp.wav

これで、ファイルtemp.wavを使用してオーディオを短くすることができます。そのためのいくつかのオプションがあります。

オプション1:SoX

SoX は、速度、ピッチ、またはテンポを変更できるいくつかの異なるフィルターを提供します。速度を変えるだけでピッチが上がり、長さが補われるので不自然に聞こえるかもしれません。

tempoフィルターは、高度なアルゴリズムを使用してファイルを短縮しますが、ピッチを維持します。これは、ファイルをより小さな時間ウィンドウに分割してから「マージ」することで、テンポを高速化します。例えば:

sox temp.wav output.wav -tempo 1.7

これは少し奇妙に聞こえるかもしれません。含まれている場合は、オプション2を使用してください。

オプション2:ポールの極端なサウンドストレッチ

このプログラムは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 ...
10
slhck