Android 使用声音池加速声音

Android 使用声音池加速声音,android,soundpool,Android,Soundpool,是否可以使Soundpool以更快的速度播放声音,例如,播放速度快50% private void loadSound(int position, int group_position) { switch (position) { case 0: myVoice = soundPool.load(PhraseActivity.wr.get(), sound[group_position][0], 2); soundPool.

是否可以使Soundpool以更快的速度播放声音,例如,播放速度快50%

private void loadSound(int position, int group_position) {
    switch (position) {
        case 0:
            myVoice = soundPool.load(PhraseActivity.wr.get(), sound[group_position][0], 2);
            soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
                @Override
                public void onLoadComplete(SoundPool soundPool, int sampleId,
                    int status) {
                    soundPool.play(myVoice, 20, 20, 1, 0, 1f);
                } 
            });
        break;
        case 1:
            myVoice = soundPool.load(PhraseActivity.wr.get(), sound[group_position][1], 2);
            soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
                @Override
                public void onLoadComplete(SoundPool soundPool, int sampleId,
                    int status) {
                    soundPool.play(myVoice, 20, 20, 1, 0, 1f);
                } 
            });
        break;
    }
}

play()
的最后一个参数控制播放速率

参数

soundID:load()函数返回的soundID

leftVolume:左音量值(范围=0.0到1.0)

右音量:右音量值(范围=0.0到1.0)

优先级:流优先级(0=最低优先级)

循环:循环模式(0=无循环,-1=永远循环)

速率:播放速率(1.0=正常播放,范围0.5到2.0)


请注意,您只能将速度从0.5更改为2.0,即速度的一半到两倍。任何超过此值的操作都必须使用自定义实现。

播放速率允许应用程序改变声音的播放速率(音调)。值为1.0表示以原始频率播放。值2.0表示播放速度加倍,值0.5表示播放速度减半。 看

所以您需要更改
soundPool.play(我的声音,20,20,1,0,1f)

soundPool.play(我的声音,20,20,1,0,2f)


值2将根据需要将速度提高50%

我将浮点值更改为更高的值-是,它会加快速度,但声音文件似乎失真。女人的声音变为孩子的声音。@user2365568当你加快声音时,就会发生这种情况。。这是正常的事情。。。当你放慢速度时,声音就会变得沉重