使用TarsosDSP在Android上进行实时音高转换

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");

如果我删除这行代码,一切都能正常工作,只有歌曲没有被录制到文件中。
请告诉我是否有人可以提供帮助。

1个回答

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接