web-dev-qa-db-ja.com

オーディオ周波数を変更するには?

オーディオファイルの周波数を変更したい。意味:ファイル全体が(たとえば)1オクターブ高くまたは低く聞こえるはずです。どうやってするの? ffmpegまたは他のコマンドラインオープンソースツールを使用することをお勧めします。

12
tanon

Ffmpegの場合:

ffmpeg -i <input> -af asetrate=44100*0.5,aresample=44100 <output>

ここで、0.5はピッチ係数です。または、詳細については他の回答を参照してください。


GUIが必要な場合は、 Audacity を使用してください。これは、無料のオープンソースのクロスプラットフォームオーディオ編集ツールです。

機能:テンポを変更せずにピッチを変更、またはその逆。


別の方法として、 sox を試してください。そんな感じ:

sox <infile> <outfile> pitch <shift>

ここで、ピッチシフトは正または負の「セント」(つまり、半音の100分の1)として与えられます。オクターブには12半音あるので、±1200パラメータとして。

13
slhck

したがって、事前に入力オーディオレートを次のように検索します。

ffmpeg -i input.mp4

入力オーディオレートが44,100Hzであると仮定すると、このコマンドは次の作業を実行します。

ffmpeg -i input.mp4 -af asetrate=44100*3/4,atempo=4/3 output.mp4

3/4の係数は、ほとんどの女性の声と「細い」(シマリス)声を男性の声と「太った」声に変えます。反対の場合は4/3を使用します。

ffmpeg -i input.mp4 -af atempo=3/4,asetrate=44100*4/3 output.mp4

信号の劣化を防ぐために、フィルターの順序が逆になっていることに注意してください。可能な限り、ロスレス操作はロスレス操作の前に行う必要があります。 FFmpegフィルターを誤解してここで間違いを犯していないかどうかは、100%わかりません。

FFmpegフィルターasetrateには、一部のビデオフィルターのir×iwと同様に、入力オーディオレート用にihという名前の変数が必要ですが、できませんでしたドキュメントでそれについての言及を見つけてください。

2より大きい係数(4/1や1/4など)の場合、複数のatempoフィルターを使用する必要があります(1/4 = 1/2 * 1/2または4/1 = 2/1 * 2/1):

ffmpeg -i input.mp4 -af asetrate=44100*4,atempo=1/2,atempo=1/2 output.mp4

「細い」男性の声と「太った」女性の声を取得する方法がわかりません。

の代わりに -af、 あなたは書ける -filter:audioまたは-filter:a

参考文献

8
7vujy0f0hy