3

ここに私が欲しいものがあります:
1. 曲の再生中のリアルタイムのピッチシフト。
2. ピッチ シフトもファイルに記録する必要があります。

コード:

    double rate = 1.0;
    RateTransposer rateTransposer;
    AudioDispatcher dispatcher;
    WaveformSimilarityBasedOverlapAdd wsola;

    dispatcher = AudioDispatcherFactory.fromPipe(mAudiopath, 44100, 5000, 2500);
    rateTransposer = new RateTransposer(rate);
    wsola = new WaveformSimilarityBasedOverlapAdd(WaveformSimilarityBasedOverlapAdd.Parameters.musicDefaults(rate, 44100));
    WaveformWriter writer = new WaveformWriter((TarsosDSPAudioFormat) dispatcher.getFormat(), BASE_PATH + "Recorded" + File.separator + "PITCHED_" + mVideoFileName + ".mp3");

    wsola.setDispatcher(dispatcher);
    dispatcher.addAudioProcessor(wsola);
    dispatcher.addAudioProcessor(rateTransposer);
    dispatcher.addAudioProcessor(new AndroidAudioPlayer(dispatcher.getFormat()));
    dispatcher.setZeroPadFirstBuffer(true);
    dispatcher.setZeroPadLastBuffer(true);
    dispatcher.addAudioProcessor(writer);

しかし、ここで私は次のエラーに直面しています:

Error:(362, 41) error: cannot access AudioFormat
class file for javax.sound.sampled.AudioFormat not found

ライン用

   WaveformWriter writer = new WaveformWriter((TarsosDSPAudioFormat) dispatcher.getFormat(), BASE_PATH + "Recorded" + File.separator + "PITCHED_" + mVideoFileName + ".mp3");

この行を削除すると、すべてが正常に機能し、曲だけがファイルに記録されません。
誰かが助けてくれるかどうか教えてください。

4

1 に答える 1

4

この問題は、JVM に依存しない WriterProcessor クラスを使用して解決されました。

参照: https://github.com/JorenSix/TarsosDSP/issues/64

于 2016-05-23T09:44:11.437 に答える