私は自分のAndroidプロジェクトでffmpegとAudioTrackクラスを使用してオーディオファイルを再生することができました。AudioTrackクラスのsetRateメソッドを使用してオーディオの速度を変更できます。しかし、それはオーディオのピッチも変更します。オーディオのテンポのみを変更したいのですが、ネット上で解決策が見つかりませんでした。
これはサポートされていないので、誰でも私を助けてください。
私は自分のAndroidプロジェクトでffmpegとAudioTrackクラスを使用してオーディオファイルを再生することができました。AudioTrackクラスのsetRateメソッドを使用してオーディオの速度を変更できます。しかし、それはオーディオのピッチも変更します。オーディオのテンポのみを変更したいのですが、ネット上で解決策が見つかりませんでした。
これはサポートされていないので、誰でも私を助けてください。
ffmpeg1.0以降ではatempoフィルターを使用できます。
ffmpeg -i input.wav -f:a atempo=1.25 output.wav
atempo
0.5〜2.0の値のみを受け入れますが、複数のフィルターをチェーンすることで制限を回避できます。
ffmpeg -i input.wav -f:a atempo=2,atempo=1.5 output.wav
解決策: SoundTouchライブラリを試しました。android用に正常にコンパイルしましたが、このライブラリを使用してオーディオをロードする方法がわからないため、その関数を使用できませんでした。
しかしその後、Sonicというライブラリを試しました。PSOLAアルゴを使用してピッチとテンポを変更するため、基本的にスピーチ用です。でも、大丈夫です。
ピッチとテンポは非常に強く関連しています。あなたがやろうとしていることは「タイムストレッチ」と呼ばれ、やや複雑なアルゴリズムです。あなたはそれについての情報をオンラインで見つけることができます、そしてそれのためのジャバライブラリはプロセスを説明する論文と一緒にここで見つけることができます。