携帯電話で特定のポッドキャストを聴きたいのですが、2つの一般的な問題があります。
sox
やavconv
のようなものを使用してファイルを一括変換したいと思います。これは単なる音声で携帯電話で行われるため、低品質の小さなファイルが最適です。 avconv
を使用して、いくつかの成功を収めました。
avconv -i weird.wma normal.ogg
残念ながら、このコマンドは巨大なoggファイルを作成し、それをより速く再生させることはできません。理想的には、この特定のファイルは元の速度の170%で再生されます。
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
お使いの携帯電話がこれらのいずれもサポートしていない場合は、さらに掘り下げる必要があります。ああ、ここではffmpeg
をavconv
と同義で使用しています。それらはまったく同じではありませんが、上記の場合はどちらのツールも使用できます。お使いのバージョンのFFmpegまたはavconvにFAACまたはLAMEがバンドルされていない場合は、 FFmpegダウンロードページ から静的Linuxビルドを入手してください。
FFmpegフィルターが気に入らない場合は、次の方法があります。
まず、生のオーディオストリームを非圧縮形式で抽出する必要があります。 WAVコンテナ内のPCMステレオ16ビットオーディオ。
ffmpeg -i weird.wma temp.wav
これで、ファイルtemp.wav
を使用してオーディオを短くすることができます。そのためのいくつかのオプションがあります。
SoX は、速度、ピッチ、またはテンポを変更できるいくつかの異なるフィルターを提供します。速度を変えるだけでピッチが上がり、長さが補われるので不自然に聞こえるかもしれません。
tempo
フィルターは、高度なアルゴリズムを使用してファイルを短縮しますが、ピッチを維持します。これは、ファイルをより小さな時間ウィンドウに分割してから「マージ」することで、テンポを高速化します。例えば:
sox temp.wav output.wav -tempo 1.7
これは少し奇妙に聞こえるかもしれません。含まれている場合は、オプション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 ...