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


12

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

回答:


13

ffmpegの場合:

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

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


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

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


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

sox <infile> <outfile> pitch <shift>

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


素晴らしい... soxは私が必要とするものです!
tanon

ffmpegを使用する方法は、オーディオの継続時間を変更しますか?
mrgloom

@mrgloomいいえ、できません。
slhck

使用後ffmpeg -i man.wav -af asetrate=48000*0.75,aresample=48000 man_pitch_down.wavffmpeg -i元のwav Duration: 00:00:01.95, bitrate: 3080 kb/sと変更されたwavで表示されDuration: 00:00:02.60, bitrate: 1536 kb/sます。私が理解したようDuration秒の長さです。
mrgloom

@mrgloom新しい質問を投稿し、完全なコマンドライン出力を含めてください。
slhck

8

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

ffmpeg -i input.mp4

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

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同様に、入力オーディオレートにちなんで名前が付けられた変数が必要ですが、ドキュメントでそれについての言及は見つかりませんでした。iwih

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

参考文献

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.