我正在尝试创建卡拉OK应用。从我的研究中,当您将声道从立体声拆分为单声道,然后反转其中一个单声道时,您可以获得mp3的乐器(来源:https://manual.audacityteam.org/man/tutorial_vocal_removal_and_isolation.html->案例1)。
使用Jlayer库,我已经能够将mp3转换为我正在写入音轨的音频样本。
我的挑战是,我需要将样本分为左单声道和右单声道,然后反转左单声道。我尝试了以下代码,但没有任何变化,对音频没有影响。
byte[] bytes = outStream.toByteArray(); //ALL AUDIO SAMPLES ARE HERE
for(int i = 0, index = 0; index < bytes.length -4; i += 4){
samples[index + 0] = (byte) (bytes[i]); //LEFT CHANNEL
samples[index + 1] = (byte) (bytes[i +1]);
samples[index + 2] = (byte) (bytes[i +2] * -1); // RIGHT CHANNEL (Inverting Polarity)
samples[index + 3] = (byte) (bytes[i+3] * -1);
index = index + 4;
}
是的,我设法解决了自己的问题。我翻转了第一个和最后一个样本,然后我工作了。这是编辑后的代码
byte[] bytes = outStream.toByteArray(); //ALL AUDIO SAMPLES ARE HERE
for(int i = 0, index = 0; index < bytes.length -4; i += 4){
samples[index + 0] = (byte) (bytes[i] * -1); //LEFT CHANNEL
samples[index + 1] = (byte) (bytes[i +1]);
samples[index + 2] = (byte) (bytes[i +2] ); // RIGHT CHANNEL (Inverting Polarity)
samples[index + 3] = (byte) (bytes[i+3] * -1);
index = index + 4;
}