Android SoundTouch变声功能Demo

Android 平台的变声功能,最实用的还是基于SoundTouch库的方案。这套 Demo 比较省心,.so库都编译好了,直接丢进jniLibs目录就能跑,不用自己折腾 NDK 编译,挺适合图快的朋友。

SoundTouch 是个老牌音频库,主要干三件事:变速、变调、调节节奏,原作者是 Jussi Laaksonen。它支持的格式还挺全,像MP3WAVOgg都能。

在项目里,先用JNI桥接一下,把 Java 层和 C++层的代码打通。像下面这样声明原生方法:

public native void init(int sampleRate, int channels);

在 C++里实现它:

JNIEXPORT void JNICALL Java_com_yourpackage_SoundTouchWrapper_init(JNIEnv *env, jobject thiz, jint sampleRate, jint channels) {
  soundtouch::SoundTouch st;
  st.setSampleRate(sampleRate);
  st.setChannels(channels);
  //其他配置...
}

逻辑主要靠putSamples()receiveSamples()这两个方法搞定,配合音频读写循环跑一遍,基本就能出效果。Demo 里有完整流程,读音频、、播放都有示例,按着来就能跑通。

如果你还没碰过NDK,这个 Demo 算是比较温柔的入门方式了。你只要关注业务逻辑,底层的音频交给SoundTouch搞定就行了。反正现在项目都讲求效率,能省一步是一步。

顺便推荐几个相关资源,想进一步玩音频的可以看看:

如果你正好想给 App 加点有趣的玩法,像变声、语音特效,直接拿这个 Demo 改一改就能上手,省事还挺实用的。

zip 文件大小:408.81KB